第四周小组作业
第四周小组作业:WordCount优化
(1)本次作业Github地址
https://github.com/fanhao300/Test-QualityGroupWprk
(2)PSP表格
|
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
|
Planning |
计划 |
30 |
30 |
|
· Estimate |
· 估计这个任务需要多少时间 |
30 |
30 |
|
Development |
开发 |
350 |
290 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
40 |
40 |
|
· Design Spec |
· 生成设计文档 |
30 |
20 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
30 |
20 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 |
30 |
|
· Design |
· 具体设计 |
30 |
30 |
|
· Coding |
· 具体编码 |
40 |
40 |
|
· Code Review |
· 代码复审 |
30 |
30 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
60 |
|
Reporting |
报告 |
120 |
100 |
|
· Test Report |
· 测试报告 |
90 |
80 |
|
· Size Measurement |
· 计算工作量 |
20 |
20 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20 |
20 |
|
|
合计 |
60*15.33 |
60*13.5 |
(3)接口实现
我做的是和架构相关的其他模块(Main函数),将所有其他模块连接到一起。代码如下:
import java.io.File; import java.io.IOException; import java.util.*; public class Main { private static WCcount wcount=new WCcount(); public static void main(String[] args) throws IOException { Inputcheck test = new Inputcheck(); // 检查输入 File file = test.check(args[0]); // 无效输入报错返回 if (file==null){ System.out.print("This file is invalid!"); return; } // 统计并排序 wcount.clear(); wcount.wordCount(file); wcount.sortMap(); ArrayList<Item> it=wcount.getItemList(); // 打印 Print pr=new Print(); pr.setItemList(it); pr.output(); } }
工作方式如下:
1. 调用Test.check(),检查是否为有效输入。无效则报错并退出,有效则执行第二步。
2. 对输入文件统计并排序,并将结果输出到当前文件夹。
(4)测试用例设计
1. 白盒测试
如图,共有两条路径:

| 路径 | 测试用例 | 预期输出结果 | 实际输出结果 |
| A->B->C->E | pp.c |
This file is invalid! |
This file is invalid! |
| A->B->D->E | test2.txt |
2. 黑盒测试
按照输入,大致可以划分为两个大类:
| 大类 | 小类 | 测试用例 |
| 无效的文件输入 | 文件不存在 | pp.jpg |
| 文件存在但不匹配 | pp.c | |
| 特殊文件名 | * | |
| 有效的文件输入 | 文件存在且匹配且输入正常 | test2.txt |
(5)单元测试
未想出Main函数该如何进行单元测试。
(6)小组贡献
组长:樊昊 0.28
组员:李帅 0.24
李威佟 0.24
彭士远 0.24
扩展任务
(1)规范选择
选择《阿里巴巴Java开发手册》的1.1命名风格部分,对组员代码进行分析。
(2)组员代码分析
选择组员17129输入控制相关的代码进行分析:
import java.io.*; /** * * @author 彭士远 * */ public class Inputcheck { private static final String HOUZHUI = ".txt"; private static final int MATCHLENGTH = 4; public File check(String filename) { File filePath = new File(filename); if(filePath.exists()) { if(!(filename.substring((filename.length() - MATCHLENGTH), filename.length()).equals(HOUZHUI))) { filePath = null; } }else { filePath = null; } return filePath; } }
根据1.1.2:代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
代码中的变量:HOUZHUI 不符合该命名规范。
根据1.1.3:类名使用UpperCamelCase风格,但DO/BO/DTO/VO/AO/PO等情形除外。
代码中的类:Inputcheck不符合该命名规范。建议改为InputCheck。
根据1.1.4:方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。
代码中的变量:MATCHLENGTH不符合该命名规范。建议改为matchLength。
(3)静态代码检查工具
alibaba静态代码检查工具,下载地址:https://p3c.alibaba.com/plugin/eclipse/update
(4)检查结果
对自己的代码进行静态检查,结果如下:

存在问题:没有添加创建者信息。
解决方法:添加如下代码:
/** * * @author liweitong * */
(5)小组存在问题
部分组员的命名风格不一致,个别组员的命名比较随意。
浙公网安备 33010602011771号