WordCount优化
Github 地址:chaosrings/wcPro
1.PSP2.1表格
psp 2.1 | psp阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 200 | 250 |
Analysis | 需求分析(包括学习新技术) | 60 | 150 |
Design Spec | 生成设计文档 | 20 | 20 |
Design Review | 设计复审(和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 30 | 30 |
Coding | 具体编码 | 150 | 200 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 150 | 200 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 30 | 30 |
合计 | 750 | 1000 |
2.基本任务
- 接口实现 main()
我负责的模块是main函数部分的对输入参数的处理以及对输入参数进行有效性的检验,同时对于给定的Scanner类进行初始化工作,将目标参数传入目标函数,完成存储文件的语句。
由于是控制台出入口函数,接口为main(),完成不同模块的组装和参数传输作用。
引用的构造函数有:Lex(const string & str)、Lex()、Scanner()、~Scanner()& saveToFile(const vector<pair<string, int>> &frequencyVec)。
具体代码如下:
int main(int argc, char* argv[])
{
if (argc != 2)
{
cout << "syntax error!" << endl;
return -1;
}
Scanner scan;
string filePath = argv[1];
string targetStr= scan.getString(filePath);
Lex lex;
lex.setTargetStr(targetStr);
vector<pair<string, int > > wordFreqVec = lex.getWordFreqVec();
saveToFile(wordFreqVec);
return 0;
}
```c++
输入参数为argc 和argv[],返回运行正确与否的结果,过程中对输入参数个数进行判断,原则上只允许两个参数输入。一次调用Scanner返回文件中的字符串然后传入getWordFreqVec()函数中进行词频统计和排序。最后在saveToFile()中存储文件到本地。
####3.测试用例设计
该函数中只有两个分支结点,故只需要3个测试用例就可以覆盖到所有的路径。
![](https://images2018.cnblogs.com/blog/1344288/201804/1344288-20180408212358024-466953748.png)
另外几个测试用例测试正常情况、参数过多、后缀测试、无有效返回值。因为等价类较少故不好设计到20个用例,6个有效用例已经是极限。
| Test Case ID | Test Item | Test Case Title | Test Criticality | Pre-condition | Input | Procedure | Output | result | Status | Remark(Test method) |
| ------------ | --------- | --------------- | --------------- | ------------- | ----- | --------- | ------ | ------ | ------ | ------------------- |
| 1 | main | Else | Parameters Lost | M |none |wcPro.exe |none |-1 |-1 | Pass |
|2 | main | Else | Parameters error Test | M | none |wcPro.exe -a |none |-1 |-1 |Pass |
| 3 |main | Else | Parameters Overflow | M |none | wcPro.exe -a text.txt | none | -1 | -1 | Pass |
| 4 | main | Else | Parameters correct Test | H |none | wcPro.exe text1.txt | none | 0 |0 | Pass |
| 5 | main | Else | File Postfix Test | H | none | wcPro.exe text.c | 有效字符为空 | 有效字符为空 | 0 | Pass |
| 6 | main | Else | Input invalid | H |none | wcPro.exe text1.txt | none | -2 | -2 | Pass |
因为是对主函数入口进行的修改和测试,故单元测试的优越性也就不存在了,我进行了人工逐个验证,都是符合预期结果。
---
###扩展任务:静态测试
#### 1.参照代码规范
[Google开源项目风格指南,C++风格指南](http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/)
[现代软件工程讲义 3 代码规范与代码复审](http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html)
####2.对组员201517150的代码评审
```c++
void saveToFile(const vector<pair<string, int> > &frequencyVec)
{
ofstream outputFile("result.txt", ofstream::out);
int cnt = 0;
if (outputFile.is_open())
{
if (frequencyVec.size() == 0)
cout << "无有效输入" << endl;
for(int i=0;i<(int)frequencyVec.size()&&i<100;++i)
outputFile << frequencyVec[i].first << ":" << frequencyVec[i].second << endl;
outputFile.close();
}
}
通过静态分析可以发现其中cnt的变量没有用到。
对这个函数的功能说明我觉得有必要放在整个函数体前面进行说明和参数说明。
另外对于单句的for循环语句,虽然这个地方没有很复杂所以还能清晰的看出来,但是随着代码量的增加之后,代码的可读性就会下降,建议可以在一些复杂的循环判断结构之前进行提前的注释说明。
整个代码看上去过于紧凑,方便阅读的话一般就会在不同的标识符之间进行空格显得相对疏松。
3.静态检查工具
我使用了cppcheck工具对代码进行了静态检查工作。
4.静态检查扫描结果
我的代码部分没有发现静态错误,说明代码的静态检查是通过的,也就是没有出现一些变量名未使用以及重复定义等问题。
5.小组代码分析
因为整个项目的代码量不算大,所以进行代码分析的时候就会相对容易一点,整个代码都比较紧凑,对于每个判定条件都是比较恰当的。但是因为不同模块的可优化部分差别有点大,部分同学的工作量就比其他人多的多了,我们的划分还是有点不均匀。整体是符合要求的规范化代码书写和测试。
作业小结:
这次和上次不同是小组合作完成的作业,自己很庆幸能够和学弟们组队并比较顺利的完成这次任务,对于整个开发、测试以及软件质量之间的关系有了比较清楚的认识,一个软件的质量从一个整体来保证是比较困难的,但是经过合理的功能划分和单元测试、模块测试、系统测试能够更大程度上规避软件缺陷,开发的过程中要有测试的意识,这不仅仅可以提升自己的代码质量同时对于后期测试的工作也可以缓解。当然现在一般的主流软件开发过程中,测试过程时间的定义一直就比较模糊,可能是为了更好的权衡开发成本和质量之间的关系吧。
WordCount优化的更多相关文章
- HUST软测1504班第4周小组作业成绩:WordCount优化
说明 本次公布的成绩为第四周作业的结果: 第4周小组作业:WordCount优化 博客推荐:本次作业有一位同学完成有创意,推荐优秀博客.(优秀博客不会对成绩带来正面或者负面影响)PS:做任何创新的任务 ...
- 第四周小组作业:Wordcount优化
1.小组github地址 https://github.com/muzhailong/wcPro 2.PSP表格 PSP2.1 PSP阶段 预计耗时(分钟) 实际耗时(分钟) Planning 计划 ...
- WcPro项目(WordCount优化)
1 基本任务:代码编写+单元测试 1.1 项目GitHub地址 https://github.com/ReWr1te/WcPro 1.2 项目PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实 ...
- WordCount 优化版测试小程序实现
Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...
- 软件测试第4周小组作业:WordCount优化
一.基本任务:代码编写+单元测试 1.Github地址: https://github.com/Wegnery/New_WordCount 2.PSP2.1表格 PSP2.1 PSP阶段 预估耗时 ( ...
- 第四周WordCount优化
一.GitHub地址 https://github.com/kawoyi/Advanced-WordCounter最终由组长整合的组长github 二.psp表格 三.个人模块及实现 我负责的是输入模 ...
- WordCount优化版测试小程序实现
Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP PSP阶段 预估耗时(小时) 实际耗时(小时) Planning ...
- 第4周小组作业:WordCount优化
Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...
- WordCount优化-第四周小组作业
一.基本功能 GITHUB项目地址:https://github.com/LongtermPartner/ExtendWordCount PSP表格填写: PSP2.1 PSP阶段 预估耗时 (分钟) ...
随机推荐
- 【代码审计】EasySNS_V1.6 前台任意文件下载漏洞分析
0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/i ...
- 系统日志:/var/log/messages
/var/log/messages 存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可以首先查看该文件内容 [root@mirh5_center1_111.231 ...
- Linux线程编程之信号处理
前言 Linux多线程环境中的信号处理不同于进程的信号处理.一方面线程间信号处理函数的共享性使得信号处理更为复杂,另一方面普通异步信号又可转换为同步方式来简化处理. 本文首先介绍信号处理在进程中和线程 ...
- 利用腾讯云COS云对象存储定时远程备份网站
版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...
- laravel连sql server报invalid handle returned问题解决方案
https://github.com/Microsoft/msphpsql/issues/116 4.1.1驱动下载地址 https://github.com/Microsoft/msphpsql/r ...
- sencha touch 实现安卓toast效果(2013-9-26)
如图中效果,代码很简单.就是利用st的loadmask来实现,可以看看api实现其他效果. /*添加消息提示组件*/ masked: { xtype: 'loadmask', cls: 'messag ...
- OpenStack Networking – FlatManager and FlatDHCPManager
最好的分析FlatDHCPManager的源文,有机会把这篇翻译了 =========================== Over time, networking in OpenStack has ...
- nginx expires配置
配置expiresexpires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入 1 ...
- Dokcer制作nginx镜像,提交镜像至仓库
生成Dockerfile FROM docker.io/hagaico/centos-base-6.5:latest MAINTAINER yatho yatho@163.com ENV DEBIAN ...
- Android studio was unable to create a local connection in order...
以管理员身份运行cmd 输入netsh winsock reset 重启电脑