第四周作业

WordCount 实现与测试

一、github地址

https://github.com/cosensible/WordCountPlus

二、PSP表格

PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时
Planning 计划 30 30
· Estimate · 估计这个任务需要多少时间 30 30
Development 开发 280 280
· Analysis · 需求分析 (包括学习新技术) 20 20
· Design Spec · 生成设计文档 20 20
· Design Review · 设计复审 (和同事审核设计文档) 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 20
· Design · 具体设计 30 40
· Coding · 具体编码 60 60
· Code Review · 代码复审 20 20
· Test · 测试(自我测试,修改代码,提交修改) 100 90
Reporting 报告 110 100
· Test Report · 测试报告 60 60
· Size Measurement · 计算工作量 20 10
· Postmortem & ProcessImprovement Plan · 事后总结, 并提出过程改进计划 30 30
合计 420 410

三、接口实现

我主要负责的是对文件读取的接口,该接口的功能是按行读取文件,并简单处理为字符串数组,最终返回这个字符串数组

代码如下:

public static String[] read(final String filePath) {
        File file = new File(filePath);
        // 当文件不存在或者不可读时
        if ((!isFileExists(file)) || (!file.canRead())) {
            System.out.println("file [" + filePath + "] is not exist or cannot read!!!");
            return null;
        }

        List<String> lines = new LinkedList<String>();
        BufferedReader br = null;
        FileReader fb = null;
        try {
            fb = new FileReader(file);
            br = new BufferedReader(fb);

            String str = null;
            int index = 0;
            while ((str = br.readLine()) != null) {
                lines.add(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            closeQuietly(br);
            closeQuietly(fb);
        }

        return lines.toArray(new String[lines.size()]);
    }
  • 在main函数中,已经过滤掉了非txt文件,所以执行本接口的所有文件名,均为txt。
  • 判断文件是否存在,以及能否读取,不能则返回null。
  • 若为正确且存在的txt文件,则按行读取文件内容,并以字符串数组形式返回。

四、测试设计

程序流程图如下:

  • 判断是否可读且存在
  • 不可读或不存在返回null
  • 可读且存在返回处理后的字符串数组

image

白盒测试:有两条路径

image

路径 测试用例 预期输出 实际输出
A->B->C->E notExist.txt file [notExist.txt] is not exist or cannot read!!! file [notExist.txt] is not exist or cannot read!!!
A->B->D->F d.txt

黑盒测试

  • 可划分为三个等价类
等价类 描述 输入 输出
1 文件不存在或不可读 notExist.txt null
2 文件存在可读,为空 a.txt {}
3 文件存在可读,不为空 d.txt

五、单元测试

image

测试及模块评价

  • 测试用例覆盖全面,白盒测试覆盖了所有路径,黑盒测试也测试了所有情况,测试完善。
  • 测试模块功能明确,代码简介易懂,注释详尽,测试中未发现较大缺陷。

六、静态测试

  • 使用了《阿里巴巴Java开发手册》中第三部分,代码格式
  • 由于代码量不多,分析了所有代码。(下面是问题展现)

缺点:

  1. if 与 else的模块中缺少了大括号

优点:

  1. 左小括号和字符之间不出现空格
  2. if/for/while/switch/do 等保留字与括号之间都必须加空格。
  3. 任何二目、三目运算符的左右两边都需要加一个空格。
  4. 采用 4 个空格缩进,禁止使用 tab 字符。
  5. 注释的双斜线与注释内容之间有且仅有一个空格。
  6. 单行字符数限制不超过 120 个,超出需要换行,

image

存在问题:

  1. if与else不加大括号
  2. 通过类实例访问静态变量
  3. 数组定义格式错误
posted @ 2018-04-08 20:36  TDonald  阅读(145)  评论(0)    收藏  举报