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工具对代码进行了静态检查工作。

cppcheck下载链接

4.静态检查扫描结果

我的代码部分没有发现静态错误,说明代码的静态检查是通过的,也就是没有出现一些变量名未使用以及重复定义等问题。

5.小组代码分析

因为整个项目的代码量不算大,所以进行代码分析的时候就会相对容易一点,整个代码都比较紧凑,对于每个判定条件都是比较恰当的。但是因为不同模块的可优化部分差别有点大,部分同学的工作量就比其他人多的多了,我们的划分还是有点不均匀。整体是符合要求的规范化代码书写和测试。

作业小结:

这次和上次不同是小组合作完成的作业,自己很庆幸能够和学弟们组队并比较顺利的完成这次任务,对于整个开发、测试以及软件质量之间的关系有了比较清楚的认识,一个软件的质量从一个整体来保证是比较困难的,但是经过合理的功能划分和单元测试、模块测试、系统测试能够更大程度上规避软件缺陷,开发的过程中要有测试的意识,这不仅仅可以提升自己的代码质量同时对于后期测试的工作也可以缓解。当然现在一般的主流软件开发过程中,测试过程时间的定义一直就比较模糊,可能是为了更好的权衡开发成本和质量之间的关系吧。

WordCount优化的更多相关文章

  1. HUST软测1504班第4周小组作业成绩:WordCount优化

    说明 本次公布的成绩为第四周作业的结果: 第4周小组作业:WordCount优化 博客推荐:本次作业有一位同学完成有创意,推荐优秀博客.(优秀博客不会对成绩带来正面或者负面影响)PS:做任何创新的任务 ...

  2. 第四周小组作业:Wordcount优化

    1.小组github地址 https://github.com/muzhailong/wcPro 2.PSP表格 PSP2.1 PSP阶段 预计耗时(分钟) 实际耗时(分钟) Planning 计划 ...

  3. WcPro项目(WordCount优化)

    1 基本任务:代码编写+单元测试 1.1 项目GitHub地址 https://github.com/ReWr1te/WcPro 1.2 项目PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实 ...

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

    Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...

  5. 软件测试第4周小组作业:WordCount优化

    一.基本任务:代码编写+单元测试 1.Github地址: https://github.com/Wegnery/New_WordCount 2.PSP2.1表格 PSP2.1 PSP阶段 预估耗时 ( ...

  6. 第四周WordCount优化

    一.GitHub地址 https://github.com/kawoyi/Advanced-WordCounter最终由组长整合的组长github 二.psp表格 三.个人模块及实现 我负责的是输入模 ...

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

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

  8. 第4周小组作业:WordCount优化

     Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...

  9. WordCount优化-第四周小组作业

    一.基本功能 GITHUB项目地址:https://github.com/LongtermPartner/ExtendWordCount PSP表格填写: PSP2.1 PSP阶段 预估耗时 (分钟) ...

随机推荐

  1. laravel 5.3升级5.4

    1)修改 composer 配置文件 composer.json 1.如果你用了 laravel-admin,larvel-admin 版本改 1.4.x-dev 2.laravel 版本改 5.4. ...

  2. [Command] sync - 同步内存与硬盘数据

    sync - 同步内存与硬盘之间的数据. sync [--help] [--version] sync 命令将内存中缓存的数据写入磁盘.这包括但不限于修改过的 superblock, inode 和延 ...

  3. ubuntu MySQL采用apt-get install安装目录

    一). ubuntu下mysql安装布局: /usr/bin                      客户端程序和mysql_install_db /var/lib/mysql            ...

  4. Android学习之Gallery

    在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动.Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最 ...

  5. js验证checkboxlist是否有选中的项

    function Check() { var cbl = document.getElementById("<%= ddlSurveyCompanyName.ClientID %> ...

  6. 【MATLAB】评价二值分割结果的函数

    根据PASCAL challenges的标准:intersection-over-union score,所写的matlab评价程序,处理二值图像. 其思想即分割结果与Ground Trueth的交集 ...

  7. SQL 查询结果保存为 临时表

    -- 1. 在使用select into前,可以先做一下判断 if OBJECT_ID('tempdb..#TT')is not NULL drop table #TT -- 2. 查询结果保存为临时 ...

  8. 【大数据系列】在windows下连接linux 下的hadoop环境进行开发

    一.下载Eclipse并安装 二.下载exlipse的hadoop plugin 三.打开Map Reduce视图 Window --> Perspective --> Open pers ...

  9. SpringBoot学习之Helloworld

    1. 如果使用Spring开发一个"HelloWorld"的web应用 创建一个web项目并且导入相关jar包.SpringMVC Servlet 创建一个web.xml 编写一个 ...

  10. web前端面试题(一)

    1  选择题 1.1   默认情况下,使用P标记会形成什么效果() A.在文字P所在位置中加入8个空格 B.P后面的文字会变成粗体 C.开始新的一行 D.P后面的文字会变成斜体 答案: C 1.2   ...