一、项目地址

  https://github.com/changjiang666/WcPro

二、PSP

三、设计思路

  我负责main函数的编写和print输出模块的编写。

  1.main函数

int
main(/*int argc, char **argv*/)
{char *textBuf = readfile("test.txt"); // 读取输入文件WcPro wcpro(textBuf);// 将输入文件放入缓冲区wcpro.processText();// 分析文本,各种统计功能的实现wcpro.print();// 打印输出统计结果return 0;
}

  main函数由于是高度封装的函数的集合,因此特别简短,逻辑十分清晰。readfile函数由杨松(17166)同学编写,WcPro类以及wcpro函数,还有processText函数都由组长刘长江(17167)编写和实现,我(17171)负责了print函数的实现,将这些排列起来就构成了完整的main函数,整个程序的功能就在这些函数中实现。

  

  2.print函数

void WcPro::print()
{freopen("result.txt", "w", stdout);// 输出重定向到result.txt文件for(int i = 0; i != this->word_count_vec.size() && i < OUTPUT_SIZE; ++i)cout << word_count_vec[i].first << " " << word_count_vec[i].second << endl;
}

  print函数遍历分析的结果数据,再逐一打印输出,将输出流重定向到result.txt。

四、测试设计过程

  由于main函数已被高度封装,因此程序主要是对自定义函数模块的测试。对于print函数,它所完成任务的关键步骤是实现输出的重定向——即将本应打印在控制台的输出流打印到result.txt文件中。因此测试这一函数的思路应该是比较正常的cmd窗口输出和重定向后result.txt文件内容是否一致。

  为了还原成原先的cmd控制台输出,修改print函数,注释其重定向语句:

void WcPro::print()
{//freopen("result.txt", "w", stdout);for(int i = 0; i != this->word_count_vec.size() && i < OUTPUT_SIZE; ++i)cout << word_count_vec[i].first << " " << word_count_vec[i].second << endl;
}

  再次编译产生用于比较的WcProCMD.exe。

除了要比较窗口输出和文件输出是否一致外,还要比较对于各种字符,包括各种不常见字符,函数是否能正确输出。因此测试用例主要针对输入文本,改变其中会被统计的单词,要能覆盖所有需求中提到的字符。

测试用例举例: 1.文本中全部是常见字符;

          2.文本中全部是常见字符和非常见字符;

          3.文本中是常见字符和少量英文字母;

             4.文本中全部是数字;

          5.文本中是数字和少量英文字母;

                   6.文本中包含Let's和Let''s;

         ······

五、测试运行和评价

  对比CMD输出和result.txt输出,完全一致:

 

  并且向已有的result.txt写入新结果时,之前的旧数据会被覆盖,符合使用场景。

   总结如下:

  

  评价:采用黑盒测试的方法,但由于print函数没有判定节点和分支,所以也能达到白盒测试的要求。

五、扩展任务

  通过阅读《C++ Primer》,并且和组内同学交流,了解了一些代码规范,大有收获:

    * 缩进:4空格

    * 行宽:100字符

     * 括号:表明逻辑优先级

     * 断行与空白{}行:程序模块{}分割,{}各占单行

    * 分行:一句一行,变量定义各自成行

     * 命名:“匈牙利命名法”,从命名中可以直接理解该命名的含义

* 下划线:作用域_名称

* 书写:所有的类型/类/函数名都用Pascal形式,所有的变量都用Camel形式。

*类/类型/变量:名词或组合名词,如Member、ProductInfo等。

*函数则用动词或动宾组合词来表示,如get/set; RenderPage()。

* 注释:注释代码都采用ASCII码,不要使用中文等,提高可移植性

注明做什么,为什么,不需要解释怎么做

程序开头注明变量含义

设置字体风格

  采用了Visual Studio自带的cppcheck静态测试工具对词频计数模块进行了代码的静态测试:

问题1:(style) Class 'WcPro' has a constructor with 1 argument that is not explicit.

风格警告 :风格有关问题的代码清理(未使用的函数、冗余代码、常量性等等)

该问题是说构造函数参数不明确。这是代码中构造函数没有设置默认输入所导致的,在参数列表加入默认值即可。

问题2:(information) Cppcheck cannot find all the include files (use --check-config for details)

信息消息 :配置问题,建议在配置期间仅启用这些。

该问题表示没有找到所有的include文件。经小组讨论认为是cppcheck自己的配置问题。

  整体小组代码质量比较满意,虽然只有三人但我们明确分工,积极学习,最后也能完成其他四人组的工作。

六、高级任务

最后组长(17167)把3个人的代码做了集成,拿5M的英语名著做了性能测试,包括I/O时间,总共花了不到3s。 周末全组做了评审,组长讲了代码的主干,我们对一些可能出错的部分提出了质疑, 组长针对我们的疑问做了解释。组长对代码的规范性提前做了要求,比如变量的命名,函数书写的格式,函数名的规范, 最后大家的代码格式基本一致,就像是一个人写的,说明了磨刀不误砍柴工。

这次小组作业让我觉得团队合作的重要性,学会怎么凝聚大家的力量。还有代码开发与软件测试并行,确保每一个模块没有错误的时候再往下面进行。在写代码的时候,一定要多注释,这样不管自己维护还是别人阅读,都会减少不少麻烦。

根据组内协商,我个人的小组贡献为30%。

转载于:https://www.cnblogs.com/soqri/p/8747931.html

软件质量与测试 第4周小组作业相关推荐

  1. 软件质量与测试第4周小组作业:WordCountPro

    1.github地址 https://github.com/Hare-Lucius/WordCountPro 基本功能(分别以个人和小组形式提交至github) 2.                  ...

  2. 软件质量与测试第4周小组作业:WordCount优化

    GitHub项目地址 https://github.com/Guchencc/WordCounter 组长: 陈佳文:负责词频统计模块与其他模块 组员: 屈佳烨:负责排序模块 苑子尚:负责输出模块 李 ...

  3. 软件质量与测试--第六周作业 软件测试与评估

    测试进度表 项目 n内容说明 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划  10 15  · Estimate · 估计这个任务需要多少时间  10 15 Testing Desi ...

  4. 软件质量与测试--第二周作业 WordCount

    软件质量与测试--第二周作业 WordCount Github地址: https://github.com/RicardoDZX/WordCount PSP: PSP2.1 PSP 阶段 预估耗时 ( ...

  5. HUST软测1504班第6周小组作业成绩

    说明 本次公布的成绩为第6周小组作业的结果: 第6周小组作业:WordCount(详情见毕博平台) 如果同学对作业结果存在异议,可以: 在毕博平台讨论区的第6周作业第在线答疑区发帖申诉. 或直接在博客 ...

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

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

  7. 研讨会回顾 | 自动化测试“领导者”SmartBear解析软件质量与测试现状调研

    2022年12月6日,龙智与软件测试自动化"领导者"SmartBear联合举办了主题为" 如何通过自动化测试实现降本.增效与提质"的在线研讨会. 会上,Smar ...

  8. 7软件质量与测试规范

    软件质量与测试规范 前言 标准/规范 产品质量模型 总结 前言 标准和规范可以指导测试工作的方向. 标准/规范 软件质量与测试标准分为国际标准.国家标准.行业标准.企业(机构)规范.项目规范等.下一层 ...

  9. 2018年软件质量与测试大盘点

    即将告别2018年.迎来2019年 无法开一个现场跨年演讲,那就来一个更经济.更有效的大盘点 如同去年:2017年软件质量和测试大盘点.本次盘点分为两大部分: 质量问题,看看过去一年发生了哪些大的质量 ...

最新文章

  1. Amphorae 与 Octavia Worker 的安全通信实现
  2. ASP.NET中IP地址,当前用户的方法属性大整合- -
  3. n个人选k个c语言_leetcode之第k个缺失的正整数
  4. Contextualization
  5. 将JSON对象带有格式的写出到文件中
  6. C++之指针探究(十九):typedef和const指针
  7. MySQL一主二从复制环境切换主从库
  8. python最简易入门图片_初学Python只需4步,爬取网站图片
  9. 选择JSF不选Struts的十大理由
  10. 51单片机自学--PWM波占空比程序解释
  11. 新浪微博接口在safri下的bug
  12. 如何打印网上的文章资料,网上文章怎么打印
  13. MySQL入门系列:查询简介(二)
  14. SW练习_POJ2007_CCW
  15. Xamarin iOS 部署应用提示 iOS code signing key 失败
  16. inc si指令的作用_亲水作用色谱(HILIC)(二):可选的固定相有哪些?
  17. 《阿里云的这群疯子》
  18. 整个世界都是你的绿幕:这个视频抠图换背景的方法太惊艳了!
  19. Android实现APK智能安装且安装后自启动,亲测有用!
  20. 一篇6450字的广告,如何开启1.8万亿美金的华尔街传奇?

热门文章

  1. 自己写的Python数据库连接类和sql语句拼接方法
  2. ASP.NET MVC 3中ViewBag, ViewData和 TempData
  3. photoshop CS5 Dreamweaver CS5序列号及完美破解方法
  4. LomoX 桌面UI框架更新,增加资源管理
  5. 【强烈推荐】国土档案管理信息系统产品使用说明书系列目录【附下载地址】...
  6. 个人计算机用户隐私保护全接触(2)
  7. colsure php_PHP Closure(闭包)类详解
  8. 选择python培训机构的关键考核五大因素,让你永不吃亏!
  9. UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索
  10. .net_ckeditor+ckfinder的图片上传配置