- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 单元测试 单元测试 单元测试的任务和目标 静态测试技术的运用 动态测试技术的运用 单元测试的过程与文档管理 3.1 什么是单元测试 1、单元测试的定义 单元测试(模块测试)是对软件基本组成单元进行的测试。主要是为了发现单元内部可能存在的各种错误和不足。 3、单元测试误区 4、单元测试的重要性 (1)时间方面 (2)测试成本 (3)产品质量 5、单元测试的内容 (1)目标:确保模块被正确地编码; (2)依据:详细设计说明书、源程序; (3)过程:包括设计、脚本开发、执行、调试和分析结果; (4)执行者:开发人员和测试人员 (5)测试方法:白盒为主,黑盒为辅 (6)评估:通过所有单元测试用例,代码没有严重缺陷。 3.2 单元测试的任务和环境 1、单元测试的任务 (1)模块接口测试 调用所测模块时的输入参数与模块的形参在个数、属性、顺序上是否匹配; 所测模块调用子模块时,它输入给子模块的参数与子模块的形参在个数、属性、顺序上是否匹配; 是否修改了只读型形式参数; 输出给标准函数的参数在个数、属性、顺序上是否匹配; 全局变量的定义在各模块中是否一致; (2)模块局部数据结构测试 不正确或不一致的数据类型说明 不一致的数据类型、错误的类型转换 变量初始化或缺省值有错 使用尚未赋值或尚未初始化的变量 数组越界、非法指针 变量或函数名称拼写错误 (3)独立路径测试 常见的不正确的计算有: 运算的优先次序不正确或误解了运算的优先次序; 运算的方式错误(运算的对象彼此在类型上不相容); 算法错误; 初始化不正确; 运算精度不够; 表达式的符号表示不正确等。 (3)独立路径测试 常见的比较和控制流错误有: 不同数据类型的比较; 不正确的逻辑运算符或优先次序; 因浮点运算精度问题而造成的两值比较不等; 关系表达式中不正确的变量和比较符; “差1错”,即不正确地多循环或少循环一次; 错误的或不可能的循环终止条件; 当遇到发散的迭代时不能终止循环; 不适当地修改了循环变量等。 (4)错误处理测试 出错的描述难以理解; 出错的描述不足以对错误定位和确定出错的原因; 显示的错误与实际的错误不符; 对错误条件的处理不正确; 在对错误进行处理之前,错误条件已经引起系统的干预; 如果出错情况不予考虑,那么检查恢复正常后模块可否正常工作。 (5)边界测试 在n次循环的第0次、1次、n次是否有错误; 运算或判断中取最大最小值时是否有错误; 数据流、控制流中刚好等于、大于、小于确定的比较值时是否出现错误。 2、单元测试的环境 在单元测试时,如果模块不是独立的程序,需要辅助测试模块,有两种辅助模块: 驱动模块(Driver):所测模块的主程序。它接收测试数据,把这些数据传递给所测试模块,最后再输出测试结果。当被测试模块能完成一定功能时,也可以不要驱动模块。 桩模块(Stub):用来代替所测模块调用的子模块。 2、单元测试的环境(续) 案例:驱动模块和桩模块 #include stdio.h void main(void) {int a=1,b=2,c; c=fun1(a,b); } int fun1(int x,int y) {return x+y;} 练习:为下面的函数构造一个驱动模块,并至少设计5条测试用例。 /*计算2个整数的除法运算将结果转换为单精度输出*/ float divide(int a,int b) { float c; if(b==0) printf(“除数不能为0!”); return 0; c=(float)a/b; return c;} 构造驱动模块如下: void main(void) { int x; int y; float z; scanf(“%d%d”,x,y); z=divide(x,y); printf(“f”,z); } 编写5条测试用例,如下表所示: 3.3 静态测试技术的运用 静态测试是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。 (1)代码测试:主要测试代码是否符合相应的标准和规范 (2)界面测试:主要测试软件的实际界面与需求中的说明是否相符 (3)文档测试:主要测试用户手册和需求说明是否真正符合用户的需求 1、合格的代码应具备的特性 (1)正确性 (2)清晰性 (3)规范性 (4)一致性 (5)高效性 2、代码审查的范围 (1)业务逻辑的审查 (2)算法的效率 (3)代码风格 (4)编程规则 C语言编码规范 例:C语言程序的静态测试 (1)
文档评论(0)