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 优化版测试小程序实现的更多相关文章

  1. WordCount优化版测试小程序实现

    Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP  PSP阶段  预估耗时(小时)  实际耗时(小时)  Planning ...

  2. WordPress版微信小程序2.6版发布

    WordPress版微信小程序的完善和升级的工作一直都在进行中,我争取保证一个月可以出一个版本,希望通过一点点的改进,让这个开源产品日趋完美. 同时,pro版WordPress微信小程序也在紧锣密鼓的 ...

  3. WordPress版微信小程序3.2版发布

    WordPress版微信小程序(下称开源版)距离上次更新已经过去大半年了,在此期间,我开发新的专业版本-微慕小程序(下称微慕版),同时开源版的用户越来越多,截止到2018年11月26日,在github ...

  4. WordPress版微信小程序3.0版发布

    距离WordPress版微信小程序上一个版本的发布过去了一个月了.在此间,我的工作有些变化,加上正在开发新版本,目前开源版的完善和升级稍稍有些滞后. 虽然这个版本是3.0版,期间有个过渡的2.8版,不 ...

  5. WordPress版微信小程序2.4版发布

    自从发布2017年9月16日WordPress版微信小程序2.2.8版本后,这个一个多月来,WordPress版微信小程序,在经过一些比较小的更新后,今天发布阶段性的版本:2.4版 .这版本主要是功能 ...

  6. 优秀WordPress版微信小程序推荐(二)

    随着使用WordPress版微信小程序的用户越来越多,其中涌现不少优秀的小程序,无论UI设计还是功能上都远远超过我开源的程序.这次是推荐第二批优秀Wordpress版微信小程序,希望有更多的小程序的爱 ...

  7. WordPress版微信小程序2.2.8版发布

    距离上次更新已经一个月了,这期间对WordPress版微信小程序 做的不少小的更新和性能的优化,此次版本更新推出了两个比较重点的功能:点赞和赞赏.同时,优化了文章页面的功能布局,在评论区把常用的功能: ...

  8. WordPress版微信小程序2.1.5版发布

    WordPress版微信小程序功能已经基本完善,利用这套程序,搭配WordPress提供的rest api,WordPress网站的站长可以快速搭建属于自己的网站微信小程序 . WordPress版微 ...

  9. WordPress版微信小程序2.0版本发布

    利用业余时间对WordPress版微信小程序进行的升级,增加了一些功能,程序性能上做了一些优化.经过此次的版本升级,WordPress版微信小程序所需的基本功能已经具备. 开放源码地址:https:/ ...

随机推荐

  1. Git 版本管理工具(一)

    转自:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...

  2. 【LeetCode】025. Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k  ...

  3. C++对C语言的拓展(5)—— 函数重载和函数指针结合

    1.函数指针的介绍 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关.举例如下: int add(int nLeft,int nRight);//函数定义 该函数类型为in ...

  4. 在winform下实现左右布局多窗口界面的方法(一)

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,通过本文给大家介绍在winform下实现左右布局多窗口 ...

  5. IntellJ IDEA快捷键汇总

    今天开始使用IDEA,各种不习惯,一会Eclipse一会IDEA来回切换,需要一个熟悉的过程,记录一下常用的快捷键. IDEA常用快捷键 Alt+回车 导入包,自动修正Ctrl+N  查找类Ctrl+ ...

  6. windows10环境下运行Debug

    1. 什么是Debug? Debug是DOS.Windows都提供的实模式(8086方式)程序的调试工具. 使用它,可以查看CPU各种寄存器中的内容.内存的情况和在机器码级别跟踪程序的运行. 2. 常 ...

  7. STM32 -- 硬件知识

    一.网站资源 1.http://www.stmcu.com.cn/   二.硬件 1.BOOT0 和 BOOT1  1)一般BOOT0和BOOT1跳线都跳到0(地): 只是在ISP下载的情况下,BOO ...

  8. java ----获取路径的各种方法(总结)

    Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 那么针对这个站点的几个基本概念表述如下: 1. web站点的根目录:http: ...

  9. UML 学习[一]

    上了好久软件工程,才开始这门课程中重要部分的学习----uml图. 统一建模语言(UML,英语:Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方 ...

  10. 在ACCESS中LIKE的用法

    Access里like的通配符用法是这样:     “?”表示任何单一字符: “*”表示零个或多个字符: “#”表示任何一个数字     所以应该是:     select * from databa ...