第4周小组作业:WordCount优化

mac2022-06-30  27

1 GitHub项目地址

https://github.com/JarrySmith/WordCountPro

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

2.1 PSP表格

PSP2.1PSP 阶段预估耗时(分钟)实际耗时(分钟)Planning计划1015· Estimate· 估计这个任务需要多少时间1015Development开发205315· Analysis· 需求分析 (包括学习新技术)1520· Design Spec· 生成设计文档1030· Design Review· 设计复审 (和同事审核设计文档)1530· Coding Standard· 代码规范 (为目前的开发制定合适的规范)1530· Design· 具体设计1510· Coding· 具体编码6060· Code Review· 代码复审1515· Test· 测试(自我测试,修改代码,提交修改)60120Reporting报告6580· Test Report· 测试报告4560· Size Measurement· 计算工作量1010· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划1010合计280410

2.2 接口的实现

在包project中创建输入类InputProcess,其包含方法processInput(),该方法会抛出异常IOException和IllegalArgumentException,该方法输入参数为一个String[]类型字符串数组,返回值为一个String类型字符串。

根据接口定义搭建框架如下:

package project; public class InputProcess{ public String processInput (String[] args) throws IOException,IllegalArgumentException{ String filePath=null; //一系列判断args是否符合规范的条件判断语句 ......; return filePath; } }

processInput方法仅判断输入参数是否合法,判断传入的文件是否包含非法字符。

通过if语句判断字符串数组args的个数是否为一,args[0]内是否存放合法的文件名,而后按字符读取文件内容,通过对每个字符的ASCII码进行处理来判断文件内的字符是否都是合法字符。

若args不符合规定,或文件内包含非法字符,则抛出异常:

...... throw new IllegalArguementException("参数个数只能为1"); ...... throw new IllegalArgumentException("待处理文件不是txt类型"); ...... throw new IllegalArgumentException("待处理文件内包含非法字符"); ......

2.3 测试用例设计

本项目使用集成开发环境IntelliJ IDEA进行开发,使用junit4测试框架进行测试

根据白盒测试的思想,尽量实现条件覆盖和语句覆盖,设计了编号为1、4、13、15的测试用例,根据黑盒测试的思想设计了其余的测试用例。

因为被测试的模块较为简单,在对测试效率上可以不做特别要求。 测试用例详见GitHub内的测试脚本和测试用例EXCEL表格。

2.4 测试结果

运行测试用例的结果如图所示:

被测模块的质量较高,由测试结果可知测试效率较高,但没有检测所有非法字符输入情况,因此测试质量一般。

3 扩展任务

3.1 开发规范说明

项目开发语言是Java,选定《阿里巴巴Java开发手册》作为开发规范。

3.2 交叉代码评审

评审同组成员徐江南的代码,除了发现一处变量命名不符合lowerCamelCase命名风格外,没有发现其它不符合规范的地方。

3.3 静态代码扫描

使用的扫描工具是“Alibaba Java Coding Guidelines”。 该工具是一个idea插件,其GitHub项目地址:https://github.com/alibaba/p3c/tree/master/idea-plugin 工具的下载地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines

使用扫描工具扫描个人全部代码后运行结果如图所示:

依据扫描结果改进代码后再次运行单元测试,发现结果没有明显区别,可能是模块简单所致,但修改后的代码的可读性的确大为提高。

3.4 组内代码分析

使用扫描工具进行代码检测后发现小组代码存在多处不规范。这些不规范的地方虽然暂时不妨碍项目的正确运行,但它阻碍了其他开发人员阅读代码,让项目的维护变难了。修改过后的代码更符合规范,也更容易找出代码中隐藏的bug。

4 高级任务:性能测试和优化

4.1 测试数据集

考虑到"WcPro.exe"的功能是统计词频,因此用一个12MB的txt文本作为输入,进行测试。

4.2 同行评审过程

由全体组员参与,组员徐江南主持,所有人一同评审小组的全部代码,经过讨论,一致认定在循环内定义变量会增加额外开销。另外,在读取txt内容时只会读取合法字符,对非法字符判断反而会影响效率。

4.3 性能分析与优化

将代码循环内定义的变量外提,删去对非法字符判断等工作后,程序效率大约提升了20%,与同行评审的结论一致。

4.4 作业小结

在软件开发之中,只有自始至终贯彻软件测试,才有可能在项目临近结尾时得到一个过得去的项目成果。

5 小组贡献

经讨论,小组贡献分为0.22

转载于:https://www.cnblogs.com/zhiwei97/p/8733872.html

相关资源:微信小程序源码-合集4.rar
最新回复(0)