WordCountPro
github项目地址:https://github.com/Hoyifei/SQ-T-Homework-WordCount-Advanced
PSP表格
|
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
|
Planning |
计划 |
15 | 10 |
|
· Estimate |
· 估计这个任务需要多少时间 |
10 | 10 |
|
Development |
开发 |
400 | 380 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
30 | 40 |
|
· Design Spec |
· 生成设计文档 |
20 | 30 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
50 | 40 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 | 30 |
|
· Design |
· 具体设计 |
40 | 50 |
|
· Coding |
· 具体编码 |
400 | 420 |
|
· Code Review |
· 代码复审 |
20 | 30 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 | 70 |
|
Reporting |
报告 |
30 | 20 |
|
· Test Report |
· 测试报告 |
20 | 20 |
|
· Size Measurement |
· 计算工作量 |
10 | 20 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 | 30 |
|
合计 |
1150 | 1200 |
本次项目我负责的代码为src/test/com/wordcount/BasicMainTestGenerator.java,MainTestGenerator.java PressureTest.java,WordCountPar.java,PairComparator.java
以及src/test/com/wordcount/trie/testcasegenerator/和src/test/com/wordcount/wordsplitter/testcasegenerator
我主要负责做出测试数据生成器:
从黑盒的角度编写代码生成了各个单元测试和整体测试中数据量较大的测试用例及其答案,以及压力测试用的超大数据(最大的数据大约有数百MB)
设计思路:
(1)词频统计模块测试数据生成:
词频统计模块的测试方法是:输入文件每行包含一个单词,输出全部的词频统计结果
生成方法:
1、随机生成一定数量的单词
首先生成一个开头的字母
然后确定随机步数
在之后的数步中,每步向单词中随机添加一个字母或者连字符+随机字母
最后将新生成的单词与之前已有的单词比对。如果与其中任何一个均不重复则将其加入列表,否则重新生成。
(此步骤中所有字母均为小写)
2、从所有生成的单词中随机挑选并输出
每次从所有的单词中挑选一个,随机改变字母的大小写,然后输出,同时记录该单词的词频
3、对随机的单词进行词频排序并输出答案
使用Java自带的排序函数对单词进行排序并输出所有词频非0的结果作为答案
(2)分词模块测试数据生成;
分词模块的测试方法是:输入文件的要求同题目要求,输出每行一个单词作为分词结果
生成方法:
以一定概率生成:字母,连字符和分隔符
记录当前是否位于单词内
如果生成字母,则当前位于单词内,输出该字母
如果生成连字符,判定当前是否位于单词内,如果不位于单词内,则首先生成一个开头的字母。无论是否位于单词内,连字符后紧接着生成一个字母
如果生成分隔符,首先判定是否位于单词内,如果位于单词内则将当前单词输出到答案。之后随机挑选一个符号输出。如果选择连字符作为分隔符,则紧接着再随机挑选一个符号输出。
由于连字符本身的规则较为复杂,因此赋予连字符和作为分隔符的连字符以较大的概率
(3)整体测试测试数据生成
整体测试的数据要求与题目要求一致
生成方法:
1、随机生成一定数量的单词
2、在文件开头随机生成0~n个分隔符
3、进行一定数量的随机步骤,每步随机挑选1个单词输出,之后输出1~n个分隔符,同时统计词频。随机生成1个分隔符时不会选择连字符
4、使用Java自带的排序函数对单词进行排序并输出至多前100个词频非0的结果作为答案
此外,我还负责整个系统的压力测试。
压力测试采用整体测试的数据生成步骤,但是不对答案进行排序和输出,从网上下载五个数据量大的英文小说作为系统的输入文件,其余十五个由压力测试数据生成器随机生成。
case1:《人性的弱点》英文版,数据量619K
case2:《无人生还》英文版,数据量309K
case3:《英特尔汇编手册》英文版,数据量164K
case4:《苏菲的世界》英文版,数据量1810K
case5:《算法导论》英文版,数据量2110K
以下为压力测试结果

优化方面,制约该系统的主要因素在于文件读入,很难进行进一步优化,可以通过分段读入文件的方式减少内存的占用,但是会增加文件读入的时间。
测试评价:
所有的压力测试用时较短,系统的质量水平较高,可进行正常的词频统计排序的工作。
开发规范:
我选取的是阿里巴巴java开发手册。
静态代码检查:
安装静态检查插件IDEA后,编码过程中IDE实时给出了提示,因此最终没有统计数据,但是代码基本符合编码规范
参考文献:https://blog.csdn.net/xjbclz/article/details/51737249
WordCountPro的更多相关文章
- WordCountPro小程序
WordCountPro小程序 基本任务 1.githu地址 https://github.com/JarrySmith/WordCountPro 2.psp2.1表 PSP2.1 PSP阶段 预 ...
- WordCountPro 编码与测试
WordCountPro github项目地址:https://github.com/handsomesnail/WordCountPro PSP表格 PSP2.1 PSP阶段 预估耗时(小时) ...
- 小组作业wordCountPro·
基本任务:代码编写+单元测试 (1) Github地址: https://github.com/LongtermPartner/ExtendWordCount (2) PSP表格: psp 2.1 ...
- WordCountPro,完结撒花
WordCountPro,完结撒花 软测第四周作业 一.概述 该项目github地址如下: https://github.com/YuQiao0303/WordCountPro 该项目需求如下: ht ...
- WordCount优化版测试小程序实现
Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP PSP阶段 预估耗时(小时) 实际耗时(小时) Planning ...
随机推荐
- 理解javascript中的with关键字
说起js中的with关键字,很多小伙伴们的第一印象可能就是with关键字的作用在于改变作用域,然后最关键的一点是不推荐使用with关键字.听到不推荐with关键字后,我们很多人都会忽略掉with关键字 ...
- YY一下十年后的自己(转)
每到年底总是我最焦虑的时候,年龄越大情况越明显.可能越长大越是对 时光的流逝 更有感触,有感触之后就会胡思乱想.所以随手开始写下这篇文章. 人无远虑必有近忧.那么同学呀,你听说过安利么. 一直都有做总 ...
- 如何注册java程序为windows服务
如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...
- ajax同步异步
test.html <a href="javascript:void(0)" onmouseover="testAsync()"> asy.js f ...
- str_split的用法(PHP学习)
str_split的用法: 先看看PHP手册是怎么说的 array str_split ( string $string [, int $split_length = 1 ] ) str_split返 ...
- 解决使用Qt creator时出现Cannot overwrite file ..Permission denied
前两天在linux下使用Qt creator, 切换到了管理员使用了Qt creator后,再切换为普通用户,发现出现了 Cannot overwrite file ..Permission deni ...
- 【转】使用Jmeter对Websocket进行压力测试
前段时间本着练习angularJS+requireJS的目的写了一个基于nodeJS和socket.io的聊天室,github地址为:https://github.com/towersxu/node- ...
- Unity3D 4.3在Windows下打包iOS资源
想当年,想弄iOS的版本必须弄台mac机器,虽然一开始要弄iOS的时候觉得在mac上开发感觉挺高富帅的,但是做多了之后就觉得在mac上开发各种不方便.现在好了,Unity3D 4.3开始支持在Wind ...
- Py修行路 python基础 (五)三元运算 字符编码 元组 集合 三级菜单优化!
三元运算 条件判断不能加冒号: a=3 b=5 c=a if a<b else b oct() 转成八进制的简写:16进制 标志:BH为后缀或是0x为前缀hex() 转成16进制 元组 跟列表是 ...
- Linux性能监测:CPU篇
CPU 也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪个进程 ...