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的更多相关文章

  1. WordCountPro小程序

    WordCountPro小程序 基本任务 1.githu地址 https://github.com/JarrySmith/WordCountPro 2.psp2.1表   PSP2.1 PSP阶段 预 ...

  2. WordCountPro 编码与测试

    WordCountPro github项目地址:https://github.com/handsomesnail/WordCountPro PSP表格 PSP2.1  PSP阶段  预估耗时(小时) ...

  3. 小组作业wordCountPro·

    基本任务:代码编写+单元测试 (1) Github地址: https://github.com/LongtermPartner/ExtendWordCount (2) PSP表格:   psp 2.1 ...

  4. WordCountPro,完结撒花

    WordCountPro,完结撒花 软测第四周作业 一.概述 该项目github地址如下: https://github.com/YuQiao0303/WordCountPro 该项目需求如下: ht ...

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

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

随机推荐

  1. 洛谷 P1292 倒酒

    题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们会因为负担不 ...

  2. flask的request的用法

    其中在头部取值是这样的,request.headers,得到的是一个字典 参考链接:http://blog.csdn.net/yannanxiu/article/details/53116652

  3. webpack新版本4.12应用九(配置文件之使用不同语言进行配置)

    使用不同语言进行配置(configuration languages) 查看原文|编辑此页 webpack 接受以多种编程和数据语言编写的配置文件.支持的文件扩展名列表,可以在 node-interp ...

  4. as3随机数

    for(var i:int = 0;i<100;i++){    trace(Math.floor(Math.random()*3)); } Math.floor(Math.random()*3 ...

  5. 【转】使用ant来调用Jmeter,并定制运行时参数

    为了应对不同的运行需求(主要是不同的线程数),以及可能的变化(host ip),在nongui运行时我对ant build.xml进行了一些修改 1. log目录备份与运行前清除 <tstamp ...

  6. java输入月份,年份,显示对应月份的天数,

    总结:1,输入月份,年份,这需要用Scanner   2.我们已知道12个月份的天数,有30天,31天   3.判断闰年 用switch -case-break语句  4.注意不要忘了写break;判 ...

  7. 网络监控之一:netstat命令

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  8. 微信企业号支付个人php实现

    导语:分销商,微商提现怎么提? 直接用微信支付. 实现如下: 微信支付配置 /*微信支付*/ 'PAY_WEIXIN' => array( 'appid' => 'XXXX', 'apps ...

  9. 解决word自动编号出现内容空格过大的问题

    选择你需要调整的段落.右键点击.选择“调整列表缩进” 然后在弹出的窗口中,第三行的“制表符”改成“空格”即可.或者空格都不需要可以改为“不特别标注”. 当编号超过10的时候,也会有空格太大的现象,这时 ...

  10. 网站漏洞扫描并自动化工具-XAttacker

    注:该脚本根据网站的cms类型来扫描,所以推荐用来扫外国的站 运行脚本 ┌─[root@sch01ar]─[/sch01ar/XAttacker] └──╼ #perl XAttacker.pl 询问 ...