WordCount 优化版测试小程序实现
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设计实现如下:

该类用于保存各类不同的单词及统计数目,通过实现Java.lang.Comparable<T>接口并实现CompareTo方法,使得在对该对象数组进行排序时由数目进行排序,当数目相同时根据字符串的大小比较进行排序。
String input()方法为包可见内部类的输入方法,该方法根据内部处理类的路径path获得所需处理的文件名,并读取文件信息至字符串中并进行返回,其实现如下:

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

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

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

单元测试运行结果截图:
Junit测试结果运行截图:

评价:
通过不同核心处理方法所耗费的时间进行对比,该小程序在相同数据量的情况下所耗时间更短,对多种边缘测试输出都能很好地进行处理,程序性能良好,评价较优。
Stage2:静态测试
规范选择:
选取阿里巴巴JAVA开发规范,其中方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。
组内分析:
组内提交的代码基本符合JAVA编程规范,如我的代码存在耦合性较高的问题,代码间依赖性有待降低。
静态代码检查:
选择工具:FindBugs 3.0.1
下载链接:http://findbugs.sourceforge.net/
检查结果:

结果分析:
对equals方法的重写不符合规范,由于这是对特殊情况的特殊处理,故暂且保留。
Stage3:性能测试和优化
待更新。
WordCount 优化版测试小程序实现的更多相关文章
- WordCount优化版测试小程序实现
Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP PSP阶段 预估耗时(小时) 实际耗时(小时) Planning ...
- WordPress版微信小程序2.6版发布
WordPress版微信小程序的完善和升级的工作一直都在进行中,我争取保证一个月可以出一个版本,希望通过一点点的改进,让这个开源产品日趋完美. 同时,pro版WordPress微信小程序也在紧锣密鼓的 ...
- WordPress版微信小程序3.2版发布
WordPress版微信小程序(下称开源版)距离上次更新已经过去大半年了,在此期间,我开发新的专业版本-微慕小程序(下称微慕版),同时开源版的用户越来越多,截止到2018年11月26日,在github ...
- WordPress版微信小程序3.0版发布
距离WordPress版微信小程序上一个版本的发布过去了一个月了.在此间,我的工作有些变化,加上正在开发新版本,目前开源版的完善和升级稍稍有些滞后. 虽然这个版本是3.0版,期间有个过渡的2.8版,不 ...
- WordPress版微信小程序2.4版发布
自从发布2017年9月16日WordPress版微信小程序2.2.8版本后,这个一个多月来,WordPress版微信小程序,在经过一些比较小的更新后,今天发布阶段性的版本:2.4版 .这版本主要是功能 ...
- 优秀WordPress版微信小程序推荐(二)
随着使用WordPress版微信小程序的用户越来越多,其中涌现不少优秀的小程序,无论UI设计还是功能上都远远超过我开源的程序.这次是推荐第二批优秀Wordpress版微信小程序,希望有更多的小程序的爱 ...
- WordPress版微信小程序2.2.8版发布
距离上次更新已经一个月了,这期间对WordPress版微信小程序 做的不少小的更新和性能的优化,此次版本更新推出了两个比较重点的功能:点赞和赞赏.同时,优化了文章页面的功能布局,在评论区把常用的功能: ...
- WordPress版微信小程序2.1.5版发布
WordPress版微信小程序功能已经基本完善,利用这套程序,搭配WordPress提供的rest api,WordPress网站的站长可以快速搭建属于自己的网站微信小程序 . WordPress版微 ...
- WordPress版微信小程序2.0版本发布
利用业余时间对WordPress版微信小程序进行的升级,增加了一些功能,程序性能上做了一些优化.经过此次的版本升级,WordPress版微信小程序所需的基本功能已经具备. 开放源码地址:https:/ ...
随机推荐
- CodeForces - 138C: Mushroom Gnomes - 2 (线段树&概率&排序)
One day Natalia was walking in the woods when she met a little mushroom gnome. The gnome told her th ...
- WPF之X名称空间学习
WPF的X名称空间都有什么呢?首先,盗用张图来说明: 我将就图表中的内容进行总结: 1.x:Array具有一个Iteams属性,它能暴漏一个ArratList实例,ArratList实例的内部成员类型 ...
- C#异步编程(一)线程及异步编程基础
最近试着做了几个.NET CORE的demo,看了些源码,感觉异步编程在Core里面已经成为主流,而对这块我还没有一个系统的总结,所以就出现了这篇文字,接下来几篇文章,我会总结下异步编程的思路,主要参 ...
- spark 单机版安装
jdk-8u73-linux-x64.tar.gz hadoop-2.6.0.tar.gz scala-2.10.6.tgz spark-1.6.0-bin-hadoop2.6.tgz 1.安装jdk ...
- 差分IO标准
差分标准 和单端IO不同的是,差分电平使用两根信号线来传达信号,这两根信号线在传输过程中如果遇到同样的噪声源(共模噪声)干扰,在接收端,这样的共模噪声会在两个信号相减时消除,这样并不会给接收电平造成影 ...
- [转载]linux内核中的HZ介绍
时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 <Linux/param.h>中定义或该文件包含的某个子平台相关文件中.作为通用 ...
- 使用Spring Boot 和Spring Data JPA访问mysql数据库
在Spring中使用JdbcTemplate是一种基本的数据访问方式,但是仍然需要较多的代码,为了解决这些大量枯燥的数据操作语句,我们可以使用ORM框架,比如:Hibernate,通过整合Hibern ...
- Sass和Less、Stylus的转译和语法(1)
四.Sass.LESS和Stylus转译成CSSSass.LESS和Stylus源文件(除了LESS源文件在客户端下运行之外)都不能直接被浏览器直接识别,这样一来,要正常的使用这些源文 件,就需要将其 ...
- OpenCV 视频监控(Video Surveilance)的算法体系
如前面说到的,OpenCV VS提供了6组算法的接口,分别是:前景检测.新目标检测.目标跟踪.轨迹生成.跟踪后处理.轨迹分析,除了轨迹生成用于轨迹数据的保存以外,其他5个部分都是标准的视频监控算法体系 ...
- Ueditor/自定义配置
UEditor除 了具有轻量.可定制等优点外,还始终将优化编辑操作.提升用户体验摆在了很重要的位置.在这一点上,除了对编辑器功能.性能.实现细节等不断地改进和追求 创新之外,众多灵活而人性化的自定义配 ...