第4周小组作业:WordCount优化——C++实现
- GitHub地址:https://github.com/decadeheart/WcPlus
- PSP表格:
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
Planning |
计划 |
15 | 20 |
· Estimate |
· 估计这个任务需要多少时间 |
15 | 20 |
Development |
开发 |
60 | 60 |
· Analysis |
· 需求分析 (包括学习新技术) |
10 | 10 |
· Design Spec |
· 生成设计文档 |
5 | 5 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
5 | 5 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
5 | 5 |
· Design |
· 具体设计 |
5 | 5 |
· Coding |
· 具体编码 |
15 | 15 |
· Code Review |
· 代码复审 |
5 | 5 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 | 10 |
Reporting |
报告 |
30 | 50 |
· Test Report |
· 测试报告 |
15 | 25 |
· Size Measurement |
· 计算工作量 |
10 | 15 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
5 | 10 |
合计 |
105 | 130 |
- 接口实现:getWordList()函数实现
字符串str保存读取的单词,map word保存str中的单词及出现次数,使用map:;find方法确定单词是否在序列中,增加单词的出现次数。
判断单词:从文件流中逐个读取字符,判断字符是否为字母:若是字母,则使用tolower函数将大小写统一改为小写,加入str末尾;若不是字母,则判断str是否为空,为空则跳过此字符,不为空则如果字符是'-'及下个字符为字母,将'-'加入str末尾,否则str中就保存了一个正确的单词。
判断单词的要点:逐个读取字符时,要使用操纵符noskipws将文件流格式更改为不跳过空白符;读取完成后用skipws恢复默认设置,并关闭文件流。
- 测试用例设计:
测试用例从白盒测试的判定测试、路径测试,黑盒测试的边界值测试、等价类测试进行设计:
判定测试:空文件,测试while循环读取字符到文件末尾的判定条件;无字母字符串,测试字符不是字母的if条件;字母字符串,测试字符是为字母的if条件;无字母字符串,测试str为空的if条件;字母字符串测试str不为空的if条件;字母+特殊字符字符串,测试字符不是'-'的if条件;字母+'-'+字母,测试字符是'-'及下个字符是字母的if条件;字母+'-'+特殊字符,测试字符是'-'及下个字符不是字母的if条件。
路径测试:程序图
主路径:
P1:A,B,C,F,G,测试用例字母+'-'+字母字符串;
独立路径:
P2:A,B,C,E,G,测试用例字母+特殊字符;
P3:A,B,G,测试用例无字母字符串;
P4:A,D,G,测试用例字母字符串。
边界值测试:空文件,文件末尾边界测试;字母A、Z、a、z,字母判断边界条件;字母+'-'+字母,字母+'-'+特殊字符,横线判断边界条件。
等价类测试:字母字符串,无字母字符串,字母+特殊字符字符串,特殊字符+字母字符串。
- 单元测试评价:
测试质量不完整;模块质。量效率很高
- 小组贡献得分:
小组贡献率0.28