第4周小组作业:WordCount优化

WordCount优化

github地址: https://github.com/CoolWC/wcPro

基本任务:代码编写+单元测试

  1. PSP表格
PSP阶段 预估耗时(分钟) 实际耗时(分钟)
计划 30 30
· 估计这个任务需要多少时间 30 30
开发 330 470
· 需求分析(包括学习新技术) 40 60
· 设计复审(和同事审核设计文档) 5 5
· 代码规范(为目前的开发制定合适的规范) 5 5
· 具体设计 30 20
· 具体编码 120 240
· 代码复审 10 20
· 测试(自我测试,修改代码,提交修改) 120 120
报告 50 70
· 测试报告 30 50
· 计算工作量 10 10
· 事后总结,并提出过程改进计划 10 10
合计 410 570
  1. 在分工中我负责的排序模块的编写
    经过分析,我们的总体设计是:建立一个WordList类,含有两个属性word和freq,分别代表单词本身和在文件中出现的次数。
    协同顺序:统计模块会返回一个ArrayList,元素是包含这两个属性的对象,排序模块接受这个列表后进行处理,排序的结果返回一个新的列表传给输出模块。
    在需求中我们可以看到,在获取统计模块得到的数据表后,不仅需要对单词进行词频上的排序,还需要在相同词频中根据字母进行排序。好在Java.Collections包中提供了给字符串根据字母排序的函数,所以我的大体思路是,先用一种排序方法(我选择的是冒泡排序)来对整体词频进行排序,然后再分别取词频相同的单词组成临时列表,去word属性进行排序后再添加入新的列表。
    关键代码列举如下:
    冒泡排序部分:

字母排序部分:

  1. 测试设计
    因为我的代码中关键节点很少,故根据需求使用黑盒测试方法设计用例,从词频均相同,两种不同词频,四中不同词频,首字母是否相同,首字母是否大写等方面以强覆盖的思路去设计测试用例:
    用例1: 空表
    用例2: 词频相同 按字母排序 只有小写 第一个字母不同
    用例3: 词频相同 按字母排序 只有小写 第一个字母相同
    用例4: 词频相同 按字母排序 只有大写 第一个字母不同
    用例5: 词频相同 按字母排序 只有大写 第一个字母相同
    用例6: 词频相同 按字母排序 大小写混合 第一个字母不同
    用例7: 词频相同 按字母排序 大小写混合 第一个字母相同
    用例8: 两种词频 按字母排序 小写 第一个字母不同
    用例9: 两种词频 按字母排序 小写 第一个字母相同
    用例10: 两种词频 按字母排序 大写 第一个字母不同
    用例11: 两种词频 按字母排序 大写 第一个字母相同
    用例12: 两种词频 按字母排序 大小写混合 第一个字母不同
    用例13: 两种词频 按字母排序 大小写混合 第一个字母相同
    用例14: 四种词频 按字母排序 大小写混合 第一个字母不同
    用例15: 四种词频 按字母排序 小写 第一个字母相同
    用例16: 四种词频 按字母排序 大写 第一个字母不同
    用例17: 四种词频 按字母排序 大写 第一个字母相同
    用例18: 四种词频 按字母排序 大小写混合 第一个字母不同
    用例19: 四种词频 按字母排序 大小写混合 第一个字母相同

测试用例代码示例:

测试输出示例:

单元测试运行截图:

测试分析:
第一个测试用例对于输入空表的处理未达到预期
其他的测试用例均顺利通过,较好地满足任务需求

  1. 小组贡献分:0.25

扩展任务:静态测试

我们组使用了附录四中提供的《阿里巴巴Java开发手册》作为编码规范,安装了阿里巴巴Java开发代码检测IDE插件;
使用Intellj Idea Java IDE 可以直接从IDE中安装该插件,步骤如下:
File-Settings-Plugins-Browse Reposories
搜索Alibaba

点击Install即可安装完成

我分析了组员17160同学的代码,该同学负责输出模块,用插件扫描后,她的代码没有显现出问题,做得好的方面有:变量命名遵从驼峰规范,注释清晰完整
我们组主要的问题就是许多变量命名不统一,根据插件显示的警告修改即可

posted @ 2018-04-08 23:58  Jing_Zhang  阅读(144)  评论(2编辑  收藏  举报