在代码测试环节,我主要对集中典型以及特殊情况做了测试,结果如下:
文件夹测试
TEST1: 空文件夹测试( √ )
I:\TEST\data 为一个空文件夹,测试程序对空文件夹的处理
命令:
WordFrquency-release.exe I:\TEST\data
输出结果:
char_number: 0 line_number: 0 word_number: 0 the top ten frequency of word : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.012s
TEST2: 大量文件与文件夹测试( √ )
这里使用助教的测试集进行了测试,结果相差不大,在误差范围内。
单文件测试
单个文件测试可以有针对的对某些特殊情况进行专门的测试,且由于单个文件易于操作所以效率较高。
同时单个文件测试也测试了程序兼容输入目录或者文件路径的适应性,由于下面的测试是在此基础上的,所以都同时说明了该程序可以同时处理文件夹和单个文件。
从下面的结果可知对于一般情况,统计结果也是正确的,也不再做重点分析。
TEST3: 空文件测试( √ )
kong.txt 是一个空文件,里面一个字符也没有,用来测试空文件的特殊情况,由输出结果可知,一切正常。
命令:
WordFrquency-release.exe I:\TEST\data\kong.txt
输出结果:
char_number: 0 line_number: 1 word_number: 0 the top ten frequency of word : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.011s
TEST4( √ )
本次测试主要测试规则要求中单词的定义这一项:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
分析:由输出结果(见下面)知
- abc、1234asd均不符合单词要求故被忽略
- ad78154asd由于前缀ad78145中英文字符数少于4故被忽略,之后的asd由于少于4也被忽略
-
ad7878adsadasd前缀ad7878同样被忽略,而剩下的adasd符合单词要求而被记录
- 由于测试文件中只有一个单词adasd,故词组不存在
测试文件如下:(注意最后有一个空行)
abc
1234asd ad78154asd
ad7878adsadasd
测试结果:
char_number: 36 line_number: 4 word_number: 1 the top ten frequency of word : adsadasd: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.012s
TEST5( √ )
本次测试主要测试单词的字典顺序相关,例如不同表达式可能表示同样的单词,但是单词的输出必须是出现过的字典顺序最小的表达式
分析:由输出结果可知
- 输出的ASDF1234是上面三个最小的字典顺序,与要求一致
- ASDF1234 asdf aSDF4分别表示同样的单词,故输出结果的该单词的次数为3
- ASD虽然字典顺序更小,但是少于4个字母,所以当做了一个分隔符
- 词组输出:ASDF1234 ASDF1234: 2 与要求一致
测试文件:
ASDF1234
asdf
ASD
aSDF4
输出结果:
char_number: 20 line_number: 6 word_number: 3 the top ten frequency of word : ASDF1234: 3 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : ASDF1234 ASDF1234: 2 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.014s
TEST6( √ )
本次测试主要测试同一单词的不同表达式以及略有不同的单词表达式的区分
分析:由输出结果知
-
windows95 windows98 windows2000 是同样的单词,这在上个测试中已经做过测试
-
windows32a 由于后面数字后还有一个字母a所以是另一个特殊的单词,由输出文件知程序能将他们正确区分
测试文件
windows95 windows98 WIN windows2000 windows32a
输出结果:
char_number: 46 line_number: 1 word_number: 4 the top ten frequency of word : windows2000: 3 windows32a: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : windows2000 windows2000: 2 windows2000 windows32a: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.016s
TEST7( √ )
本次测试主要测试文件夹中只有一个单词的情况,由输出结果知程序正常。
测试文件:
AFGTKNJK
输出结果:
char_number: 8 line_number: 1 word_number: 1 the top ten frequency of word : AFGTKNJK: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.037s
TEST8( √ )
本次测试测试对只有两个单词即只有一个数组的情况。
由输出知,结果正确。
测试文件:
AFGTKNJK asdad
输出结果:
char_number: 14 line_number: 1 word_number: 2 the top ten frequency of word : asdad: 1 AFGTKNJK: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : AFGTKNJK asdad: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.017s
TEST9( √ )
本次测试三个字符串其中中间的那个不符合单词要求,在这样的情况下的程序是否正确。
由结果知,一切正确。
测试文本:
AFGTKNJK sa asdad
测试结果:
char_number: 17 line_number: 1 word_number: 2 the top ten frequency of word : asdad: 1 AFGTKNJK: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 the top ten frequency of phrase : AFGTKNJK asdad: 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 Totle Time : 0.088s
总结
以上各个测试基本上将可能出现的典型情况与特殊情况做了测试,程序的实际表现相当好,这种鲁棒性得益于程序编写开始有较完备的设计,说明前期工作与实际编写调试过程做的都还不错。