软件质量与测试 第4周个人作业

一、项目地址

  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

时间: 2024-08-29 21:44:34

软件质量与测试 第4周个人作业的相关文章

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

软件质量与测试第4周小组作业:WordCount优化 一.GitHub地址 https://github.com/fusidic/WC 二.PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 20 · Estimate · 估计这个任务需要多少时间 30 20 Development 开发 470 550 · Analysis · 需求分析 (包括学习新技术) 30 20 · Design Spec · 生成设计文档 20 20 · Desig

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

1.Git地址: https://github.com/Hare-Lucius/WordCountPro 2.PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 20 10 · Estimate · 估计这个任务需要多少时间 20 10 Development 开发 260 305 · Analysis · 需求分析 (包括学习新技术) 20 20 · Design Spec · 生成设计文档 20 20 · Design Review · 设计

第九周编程作业

A:list 总时间限制:  4000ms  内存限制:  65536kB 描写叙述 写一个程序完毕下面命令:new id --新建一个指定编号为id的序列(id<10000)add id num--向编号为id的序列增加整数nummerge id1 id2--合并序列id1和id2中的数,并将id2清空unique id--去掉序列id中反复的元素out id --从小到大输出编号为id的序列中的元素,以空格隔开 输入 第一行一个数n,表示有多少个命令( n<=200000).以后n行每行一

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

第二周作业 WordCount 一.Github 地址 https://github.com/llag9810/Software-Quality-and-Testing-Wordcount 二.PSP2.1 表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 60 25 · Estimate · 估计这个任务需要多少时间 30 15 Development 开发 600 810 · Analysis · 需求分析 (包括学习新技术) 60 60 · D

软件质量保证与测试第五周作业

软件的质量保障工作 前言: 在本周我们团队开始进入程序编写阶段,我和张超组成的小组被分配到的任务模块式是开发游客模块中的浏览文章.发表评论部分. 在本周我初步完成博主界面以及首页的代码设计,并进行相应的单元测试(包括是否符合组内要求文档核查). 软件质量保障工作是指软件团队为了让软件达到事先定义好的质量标准而进行的活动,包括测试工作. 组内相关文档要求:(见页末附录部分) 界面设计核查表 核查人:陈丽霞 核查时间:2016/3/29 核查 序号 要求 截图示意 审查结果 组内相关文档对比核查(文

软件质量保证与测试第六周作业

作业内容:本周在进行项目开发的过程中,我接触到了JDBC(Java Data Base Connectivity,java数据库连接),它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC可以为多种数据库提供统一的访问,简单来说JDBC就是用来连接java和数据库的桥梁,体现了Java“编写一次,处处运行”的高大上精神.连接到oracle数据库之后,我在同学的指导下进行了慕课网JDBC视频的学习 http://www.

第一周配套作业

第1题 描述计算机的组成及其功能计算机组成CPU(控制器+运算器).I/O总线.存储器(内存+硬盘).输入输出系统组成.1.控制器(Control):对程序规定的控制信息进行解释,根据其要求进行控制,调度程序.数据.地址,协调计算机各部分工作及内存与外设的访问等.2.运算器(Datapath):对数据进行各种算术运算和逻辑运算,即对数据进行加工处理.3.I/O总线:各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束.4.存储器(Memory):存储程序.数据和各种信号.命令等信息,

第十一周仿真作业

1. 直流电机单闭环调速系统比例控制仿真 针对第三周作业中给出的直流电机模型参数,在PLECS中建立一个直流电机单闭环调速系统,控制器使用比例控制,调压装置可选用(晶闸管整流电路/IGBT斩波电路/理想可控电压源),下图给出了基于理想可控电压源的参考模型.负载转矩在1秒钟后由10牛米变为30牛米,速度指令为幅值200rad/s的阶跃信号,要求调整控制器的比例增益,使得速度稳态误差小于4rad/s. 实测增大饱和电压上限的时候也会使启动过程的启动电流变得很大 2. 直流电机单闭环调速系统比例积分控

第一周大作业1

---恢复内容开始--- 田继平-软件工程-第一次作业 一.自我介绍大家好,我叫田继平,目前就读于东北师范大学信息科学与技术学院计算机技术专业,是一名在读的专硕研一学生,本科就读于北华大学计算机科学技术学院,专业是计算机科学与技术,籍贯吉林省榆树市.二.回答作业问题1.回想一下你曾经对计算机专业的畅想我高考后报考的是计算机科学与技术,当时对计算机技术基本了解为零,当时以为什么东西都会用到计算机,学计算机以后不会找不到工作,刚开学的时候对计算机一窍不通,甚至连优盘拔出来,要单击右键然后弹出都不会,