关键词:
单元测试
单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。
当程序编好以后,将它录制在媒体上,或者直接由终端键盘输入到机中进行调试。测试的相对复杂性和所发现的错误受到单元测试所限定的范围的限制。它在执行的过程中紧密的依照程序框架对模块进行测试(调试),测试包含入口和出口的参数,输入和输出信息,错误处理信息,部分边界数值测试。需要在6个方面对所测模块进行检查。
1. 模块接口测试
模块接口测试是单元测试的基础,当模块通过外部设备进行输入/输出操作时,只有在数据能正确流入、流出模块的前提下,模块才能完成他的功能。
模块接口测试应考虑下列因素:
★ 调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;
★ 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
★ 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
★ 调用预定义函数时所用参数的个数、属性和次序是否正确;
★ 输入的实际参数与形式参数的个数是否相同;
★ 输入的实际参数与形式参数的属性是否匹配;
★ 输入的实际参数与形式参数的量纲是否一致;
★ 是否修改了只做输入用的形式参数;
★ 是否存在与当前入口点无关的参数引用;
★ 是否修改了只读型参数;
★ 对全程变量的定义各模块是否一致;
★ 是否把某些约束作为参数传递。
★ 输出给标准函数的参数在个数、属性、顺序上是否正确;
★ 限制是否通过形式参数来传送;
★ 文件属性是否正确;
★ OPEN/CLOSE语句是否正确;
★ 格式说明与输入输出语句是否匹配;
★ 缓冲区大小与记录长度是否匹配;
★ 文件使用前是否已经打开;
★ 是否处理了输入/输出错误;
★ 输出信息中是否有文字性错误;
★ 在结束文件处理时是否关闭了文件。
2.局部数据结构测试
局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确的基础。模块的局部数据结构往往是错误的根源,力求发现最常见的几类错误:
★ 不合适或不相容的类型说明;
★ 变量无初值;
★ 变量初始化或省缺值有错;
★ 不正确的变量名(拼错或不正确地截断);
★ 出现上溢、下溢和地址异常。
3.路径测试
应对模块中重要的执行路径进行测试。由于错误的计算、不正确的比较或不正常的控制流而导致执行路径的错误。路径错误应考虑下列因素:
★ 运算的优先次序不正确或误解了运算的优先次序;
★ 运算的方式错,即运算的对象彼此在类型上不相容;
★ 算法错;
★ 初始化不正确;
★ 浮点数运算精度问题而造成的两值比较不等;
★ 关系表达式中不正确的变量和比较符号表示不正确;
★ 不正确地多循环一次或少循环一次;
★ 错误的或不可能的循环终止条件;
★ 当遇到发散的迭代时不能终止的循环;
★ 不适当地修改了循环变量等。
4. 边界条件测试
边界条件测试是单元测试中最重要的一项任务。软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。边界条件测试应考虑下列因素:
★ 程序内有一个n次循环,n次循环应是1~n, 出错0~n;
★ 小于、小于等于、等于、大于、大于等于、不等于确定的比较值出错;
★ 出现上溢、下溢和地址异常。
5.错误处理测试
比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。这种出错处理也应当是模块功能的一部分。错误处理测试应考虑下列因素:
★ 出错的描述难以理解;
★ 出错的描述不足以对错误定位,不足以确定出错的原因;
★ 显示的错误与实际的错误不符;
★ 对错误条件的处理不正确;
★ 异常处理不当。
6.代码书写规范
代码书写规范应考虑下列因素:
★ 模块设计程序框架流程图;
★ 代码书写规范,对齐方式;
★ 代码的注释;
★ 参数类型,数据长度,指针,数组长度大小;
★ 输入输出参数和结果。
单元测试是对每个程序的单体调试。主要有以下几步:
程序语法检查;
程序逻辑检查。
在程序的逻辑检查之前,首先需要制作测试数据;即假设一些输入数据和文件数据。测试数据直接影响了程序的调试工作,所以制作的数据应该满足以下几个条件:
数据应能满足设计上要求的上下限及循环次数;
数据应满足程序中的各种检验要求的错误数据;
数据应能适宜于人工对程序的检查工作。
测试数据的内容包含4个方面:
正常的数据
不同的数据
错误的数据
大量的数据
通过以上不同角度的数据检验,证明程序逻辑是对的,程序的调试也就结束了。
在程序测试期,评价模块的五个主要特性是:
★ 模块接口;
★ 局部数据结构;
★ “重要”的执行路径;
★ 错误处理路径;
★ 影响上述几点的界限条件。
在其它任何测试开始之前,需要测试横穿模块接口的数据流。如果数据不是正确地进入和退出,其它的测试就谈不上。
在程序测试中接口测试的清单如下:
⑴ 输入参数的数目是否等于变元的数目
⑵ 参数与变元的属性是否匹配
⑶ 参数与变元的单位是否匹配
⑷ 传送给被调用模块的变元数是否等于参数的项目
⑸ 传送给被调用模块的变元属性是否同参数属性一致
⑹ 传送给被调用模块的变元单位是否同参数的单位一致
⑺ 属于内部的函数属性数目及变元次序是否正确
⑻ 对参数的任何访问是否与当前的入口点无关
⑼ 输入是否改动变元
⑽ 跨模块的全程量定义是否相容
⑾ 限制是否作为变元来传送
⑿ 参数是否被重复定义
表 测试说明书
程序名
|
功能名
|
调试日期 |
测试结果 |
|
|
|
|
数据制作方法: |
|||
测试方法: |
|||
测试问题: .单体程序测试问题 .功能程序测试问题 .子系统程序测试问题 .系统测试问题 |
软件测试培训第12天
今天花了一整天时间在安装Linux的操作系统,途中遇到各种问题,在老师帮助下逐步慢慢解决。 一.安装gccgcc cloog-ppl ppl(libppl.so.7/libppl_c.so.2)&nbs 查看详情
软件测试培训第7天
今天一天也是快节奏的在讲解CSS结构,CSS的内容分开讲来操作的话是比较简单,但其难就难在内容非常多,需要每天不断地练习来记住每一个用法。一天CSS已经全部讲解完,进度是非常的快,然而... 查看详情
软件测试培训第14天
今天的课程是就Mysql数据库进行了更进一步的练习与讲解,通过自己创建数据表并且添加数据从而进行更复杂的查询练习,对数据库的内容也慢慢有了一些了解:MySql数据类型整型(int)小数(decimal(8,2))字符串(varchar)日期(d... 查看详情
软件测试培训第11天
. 今天的内容通过传输过一些Linux系统上的软件在linux环境下进行安装,由于安装内容和操作都相对庞大所以安装过程中出现了不少问题导致安装进度非常缓慢,最终在临放学之际老师带领着我们从头开始将... 查看详情
软件培训第8天
上午时间将Javascript的部分内容了解了一下,并且也进行了按钮的练习测试,包括弹窗变色,修改的值数等。Javascript内容是非常的多,也是实现网页大部分结构所必需的。梳理下上午所整理的学习... 查看详情
软件测试培训第27天
编写单元测试用例的方法一、单元测试的概念 单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。 测试的覆盖种类 1.语句覆... 查看详情
软件测试培训第24天
边界条件测试以边界情况的处理作为主要目标专门设计测试用例的方法。边界条件测试是单元测试中最重要的一项任务。软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试... 查看详情
软件测试培训第4天
...; 继昨天的Mysql数据库的部分查询系统之后,今天则把软件测试中用到的查询命令全部学完,分别是高级查询中的连接查询,联合查询,以及相关子查询。高级查询要比昨天所学的查询复杂不少,命令也比较多,而Mysql的习题... 查看详情
软件测试培训第25天
...就形成了事件流。这种在软件设计方面的思想可以引入到软件测试中,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。在测试一个软件的时候,在 查看详情
软件测试培训第17天
数据表的操作:表的创建1.表是数据库存储数据的基本单位。一个表包含若干字段或记录;语法:create table表名(属性名数据类型[完整性约束条件],属性名数据类型[完整性约束条件],……属性名数据表格[完整性约束条件]);2.主... 查看详情
软件测试培训第18天
数据库的视图视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出... 查看详情
软件测试培训第9天
Linux的命令比起mysql数据库来说相对简单,一些命令执行起来也是非常容易,今天主要认识学习了vi编辑器和权限的相对操作,以下是整理的文档内容: vi编辑器三种模式:命令、编辑、尾行命令到编辑模式的切换:a.光标向... 查看详情
软件测试培训第26天
等价类划分方法一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。2.划... 查看详情