WordCount 优化版测试小程序实现

时间:2023-03-08 22:45:29

Stage1:代码编写+单元测试

Github地址:

  https://github.com/245553473/wcPro.git


PSP表格:

PSP

PSP阶段

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

10

5

Estimate

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

10

5

Development

开发

60

50

Analysis

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

5

5

Design Spec

生成设计文档

5

5

Design Review

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

5

5

Coding Standard

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

5

5

Design

具体设计

5

5

Coding

具体编码

40

30

Code Review

代码复审

5

5

Test

测试

20

10

Reporting

报告

10

10

Test Report

测试报告

10

10

Size Measurement

计算工作量

10

10

Postmortem & Process Improvement Plan

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

5

5

合计

205

165


接口的设计与实现:

  该程序设计了三个接口:String input(), List<WordInfo> handle(String input), void output(List<WordInfo>), WordInfo为包可见的数据类。

  WordInfo设计实现如下:

WordCount 优化版测试小程序实现

  该类用于保存各类不同的单词及统计数目,通过实现Java.lang.Comparable<T>接口并实现CompareTo方法,使得在对该对象数组进行排序时由数目进行排序,当数目相同时根据字符串的大小比较进行排序。

String input()方法为包可见内部类的输入方法,该方法根据内部处理类的路径path获得所需处理的文件名,并读取文件信息至字符串中并进行返回,其实现如下:

WordCount 优化版测试小程序实现

List<WordInfo> handle(String input) 函数为该程序的核心处理函数,将调用input()函数后输出的返回字符串作为输入并对其进行处理,保存至List中,并对其进行排序处理,将结果List集输出,其代码如下:

WordCount 优化版测试小程序实现

void output(List<WordInfo> handle) 函数为将核心处理函数输出的List集写入到本地文件"result.txt"中,其代码如下:

WordCount 优化版测试小程序实现


测试用例的设计:

用于测试的文件,将边缘字符信息分别复制多次、随机选择长文章进行测试、随机生成字符组成输入文件进行测试。白盒测试使用JUnit框架先对输入进行测试,输入测试能成功运行则将输入函数的输出作为处理函数的输入进行测试,若测试成功则将处理函数的结果作为输出函数的输入进行测试,最后将几个函数的整合进行测试。 黑盒测试通过.bat文件即命令行形式进行输入测试,检查输出的文件结果与预期结果的吻合度。

测试代码截图如下:

WordCount 优化版测试小程序实现


单元测试运行结果截图:

  Junit测试结果运行截图:

  WordCount 优化版测试小程序实现


评价:

  通过不同核心处理方法所耗费的时间进行对比,该小程序在相同数据量的情况下所耗时间更短,对多种边缘测试输出都能很好地进行处理,程序性能良好,评价较优。


Stage2:静态测试

规范选择:

  选取阿里巴巴JAVA开发规范,其中方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。

组内分析:

  组内提交的代码基本符合JAVA编程规范,如我的代码存在耦合性较高的问题,代码间依赖性有待降低。

静态代码检查:

  选择工具:FindBugs 3.0.1

  下载链接:http://findbugs.sourceforge.net/

检查结果:

  WordCount 优化版测试小程序实现

结果分析:

  对equals方法的重写不符合规范,由于这是对特殊情况的特殊处理,故暂且保留。

Stage3:性能测试和优化

 待更新。