WordCount优化

1.GitHub地址https://github.com/YJG1997/wcPro

2.PSP表格

PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 10  10

· Estimate

· 估计这个任务需要多少时间

 10  10

Development

开发

 20  20

· Analysis

· 需求分析 (包括学习新技术)

 20  20

· Design Spec

· 生成设计文档

 20  10

· Design Review

· 设计复审 (和同事审核设计文档)

 10  0

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

15  15 

· Design

· 具体设计

 60  40

· Coding

· 具体编码

 180  180

· Code Review

· 代码复审

 60  40

· Test

· 测试(自我测试,修改代码,提交修改)

 60  50

Reporting

报告

 30  30

· Test Report

· 测试报告

 30  40

· Size Measurement

· 计算工作量

 10  10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30  30
 

合计

 565  505

3.描述代码设计思路

       我负责的是比较简单的输入控制部分,即对输入进行有效性校验,识别和处理无效输入,并针对有效输入,从中提取所需数据。该模块的主要任务是判断输入的文件是否为.txt文件,并且判断文件中文件中是否仅包含单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容。

判断.txt文件部分代码:

public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String curPath=System.getProperty("user.dir");  
        Scanner s = new Scanner(System.in);  
        String name = s.nextLine();  
        
        s.close();
        if(name.indexOf(".txt")==-1)
        {
            System.out.println("Îļþ²»ÊÇÒÔtxt½áβ");
        }
        else {
            //String name ="test2.txt";
            File file = new File(name);
            //String targetStr="";
            FileInputStream fis=new FileInputStream(file);
            byte[] inputStream=new byte[fis.available()];
            String targetStr="";
            while(fis.read(inputStream)!=-1) 
            { 
                 targetStr=new String(inputStream,0,inputStream.length); 
            } 
            fis.close();

判断是否为单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容的部分代码:

while(curPosition<targetStr.length()&&!(targetStr.charAt(curPosition)>='a'&&targetStr.charAt(curPosition)<='z'||targetStr.charAt(curPosition)>='A'&&targetStr.charAt(curPosition)<='Z'||targetStr.charAt(curPosition)=='-')) 
            { 
                curPosition++; 
            }//去掉非字母
            boolean isWord=false; 
            String thisWord=""; 
            while (curPosition<targetStr.length()&&(targetStr.charAt(curPosition)>='a'&&targetStr.charAt(curPosition)<='z'||targetStr.charAt(curPosition)>='A'&&targetStr.charAt(curPosition)<='Z'||targetStr.charAt(curPosition)=='-')) 
            { 
                isWord=true; 
                thisWord+=targetStr.charAt(curPosition); 
                curPosition++; 
            } 

4.测试设计过程

      测试输入控制模块需考虑以下几个方面:

      a.判断输入的文件是否为.txt文件

      b.判断文件是否存在

      c.判断文件内容是否符合仅包含单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容

5.测试运行和评价

       测试通过调用模块运行结果与正确结果相比较判断是否符合需求,对此模块设计了20个测试用例,如下:

1.test.txt  系统找不到指定文件

2.test1.txt  a 3 test 2 is 1 this 1

3.test1.c  文件不是txt结尾

4.test1  文件不是txt结尾

5..txt  系统找不到指定文件

6.test1.TXT  文件不是txt结尾

7.test1txt  文件不是txt结尾

8.test2.txt  is 1 this 1  //特殊符号不计数

9.test2.docx  文件不是txt结尾

10.test2  文件不是txt结尾

11.test2.TXT  文件不是txt结尾

12.test2txt  文件不是txt结尾

13.Test2.txt  系统找不到指定文件

14.test1test2.txt  系统找不到指定文件

15.test1.txt test2.txt  系统找不到指定文件

16.test3.txt  this 2 is 2 a 2

17.test4.txt    //文件为空

18.test3.txt test4  系统找不到指定文件

19.  test1.txt  系统找不到指定文件//'test1'前有空格

20.  系统找不到指定文件 //无输入

   因为该模块整合到main函数中,测试可在cmd中操作,以下为在运行环境下的部分运行结果截图:

 

对于该模块的测试,更多的是对不符合规范的输入的测试,以及文件内容与要求不符合的测试。

posted @ 2018-04-08 21:48  是J_G啊  阅读(189)  评论(2编辑  收藏  举报