李龙: 单元测试:模块接口、局部数据结构、路径、边界条件、错误处理、代码书写规范

合集下载

李龙: 单元测试:模块接口、局部数据结构、路径、边界条件、错误处理、代码书写规范

李龙: 单元测试:模块接口、局部数据结构、路径、边界条件、错误处理、代码书写规范

单元测试单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。

当程序编好以后,将它录制在媒体上,或者直接由终端键盘输入到机中进行调试。

测试的相对复杂性和所发现的错误受到单元测试所限定的范围的限制。

它在执行的过程中紧密的依照程序框架对模块进行测试(调试),测试包含入口和出口的参数,输入和输出信息,错误处理信息,部分边界数值测试。

需要在6个方面对所测模块进行检查。

1.模块接口测试模块接口测试是单元测试的基础,当模块通过外部设备进行输入/输出操作时,只有在数据能正确流入、流出模块的前提下,模块才能完成他的功能。

模块接口测试应考虑下列因素:★调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;★调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;★调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;★调用预定义函数时所用参数的个数、属性和次序是否正确;★输入的实际参数与形式参数的个数是否相同;★输入的实际参数与形式参数的属性是否匹配;★输入的实际参数与形式参数的量纲是否一致;★是否修改了只做输入用的形式参数;★是否存在与当前入口点无关的参数引用;★是否修改了只读型参数;★对全程变量的定义各模块是否一致;★是否把某些约束作为参数传递。

★输出给标准函数的参数在个数、属性、顺序上是否正确;★限制是否通过形式参数来传送;★文件属性是否正确;★OPEN/CLOSE语句是否正确;★格式说明与输入输出语句是否匹配;★缓冲区大小与记录长度是否匹配;★文件使用前是否已经打开;★是否处理了输入/输出错误;★输出信息中是否有文字性错误;★在结束文件处理时是否关闭了文件。

2.局部数据结构测试局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确的基础。

模块的局部数据结构往往是错误的根源,力求发现最常见的几类错误:★不合适或不相容的类型说明;★变量无初值;★变量初始化或省缺值有错;★不正确的变量名(拼错或不正确地截断);★出现上溢、下溢和地址异常。

软件测试是软件开发过程的重要组成...

软件测试是软件开发过程的重要组成...

软件测试软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。

软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。

软件测试是为了发现错误而执行程序的过程。

软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。

编码和单元测试属于软件生存期中的同一个阶段。

在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。

一、软件测试的目的软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。

如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。

因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right t the right time.)。

二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。

三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Qulity is deined s conormnce to requirements, not s “goodness” or “elegnce”.)。

四、质量也代表着它符合客户的需要(Qulity lso mens “meet customer needs”.)。

作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。

程序调试——精选推荐

程序调试——精选推荐

1、程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。

2、程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。

3、程序调试可分为静态调试和动态调试。

静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试。

主要调试方法有:(1)强行排错法;(2)回溯法;(3)原因排除法。

真题分析【真题1】软件调试的目的是________。

(2007年9月)A)改善软件的性能B)验证软件的正确性C)发现错误D)改正错误解析:软件调试的任务是诊断和改正程序中的错误。

程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改,排除这个错误。

答案:D【真题2】软件__【2】__阶段的任务是诊断和改正程序中的错误。

(2006年9月)解析:软件测试的目的是发现程序中的错误,而调试的目的是确定程序中错误的位置和引起错误的原因,并加以改正。

换句话说,调试的目的就是诊断和改正程序中的错误。

调试不是测试,但是它总是发生在测试之后。

答案:调试【真题3】下列叙述中正确的是________。

(2006年4月)A)软件维护只包括对程序代码的维护B)三种说法都不对-50-C)软件测试应该由程序开发者来完成D)程序经调试后一般不需要再测试解析:本题考核软件测试、软件调试和软件维护的概念。

软件测试具有挑剔性,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误。

由于测试的这一特征,一般应当避免由开发者测试自己的程序。

调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。

最新2018年上半年软件设计师真题+答案解析上午选择+下午案例完整版(全国计算机软考)

最新2018年上半年软件设计师真题+答案解析上午选择+下午案例完整版(全国计算机软考)

2018年上半年软件设计师真题+答案解析上午选择1、对有n个结点、e条边且采用数组表示法(即邻接矩阵存储)的无向图进行深度优先遍历,时间复杂度为(1)。

A. O(n2)B. O(e2)C. O(n+e)D. O(n*e)答案:A在邻接表中,就是要依次访问每个顶点,然后在每个顶点中依次访问每条边,把这些边的终点的入度+1。

也就是每个顶点和每条边依次要各访问一遍,所以时间复杂度是O(n+e)。

在邻接矩阵中,算法需要遍历邻接矩阵的每一个点,而邻接矩阵有n*n个点,所以时间复杂度是O(n*n)。

2、浮点数的表示分为阶和尾数两部分。

两个浮点数相加时,需要先对阶,即()(n为阶差的绝对值)。

A. 将大阶向小阶对齐,同时将尾数左移n位B. 将大阶向小阶对齐,同时将尾数右移n位C. 将小阶向大阶对齐,同时将尾数左移n位D. 将小阶向大阶对齐,同时将尾数右移n位答案:D对阶时,小数向大数看齐;对阶是通过较小数的尾数右移实现的。

3、计算机运行过程中,遇到突发率件,要求CPU暂时停止正在运行的程序,转去为突发事件服务,服务完毕,再自动返回原程序继续执行,这个过程称为(3),其处理过程中保存现场的目的是(4)。

A. 阻塞B. 中断C. 动态绑定D. 静态绑定答案:B4、 A. 防止丢失数据B. 防止对其他部件造成影响C. 返回去维续执行原程序D. 为中断处理程序提供数据答案:C中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

5、海明码是一种纠错码,其方法是为需要校验的数据位增加若干校验位,使得校验位的值决定于某些被校位的数据,当被校数据出错时,可根据校验位的值的变化找到出错位,从而纠正错误。

对于32位的数据,至少需要加(5)个校验位才能构成海明码。

以10位数据为例,其海明码表示为D9D8D7D6D5D4P4D3D2D1P3D0P2P1中,其中Di(0≤i≤9)表示数据位,Pj(1 ≤j≤4)表示校验位,数据位D9由P4、P3和P2进行校验(从右至左D9的位序为14,即等于8+4+2,因此用第8位的P4、第4位的P3和第2位的P2校验),数据位D5由(6)进行校验。

数据结构-所有章节测验-测验答案-慕课答案-UOOC优课-课后练习-深圳大学

数据结构-所有章节测验-测验答案-慕课答案-UOOC优课-课后练习-深圳大学

数据结构章节测验数据结构第一章测验一、单选题 (共100.00分)1.在数据结构概念中, 数据的基本单位是()A.数据段B.数据项C.数据表D.数据元素正确答案:D2.在数据结构概念中, 结构是描述()A.数据项的类型B.数据元素之间的关系C.数据成员的先后顺序D.数据对象的取值范围正确答案:B3.在算法设计中, 要求算法便于理解和修改是属于算法要求的()A.正确性B.可读性C.健壮性D.效率高正确答案:B4.抽象数据类型ADT通过三方面描述, 包括数据对象、数据操作和()A.数据范围B.数据判断C.数据关系D.数据来源正确答案:C5.以下关于算法的描述, 哪个是正确的()A.算法可以没有输入B.算法可以包含无限个执行步骤C.算法可以没有输出D.算法的每个步骤允许带有歧义的正确答案:A6.在算法设计中, 要求算法满足具体问题的需求是属于算法要求的()A.正确性B.可读性C.健壮性D.效率高正确答案:A7.抽象数据类型ADT通过三方面描述, 包括数据关系、数据操作和()A.数据对象B.数据来源C.数据范围D.数据判断正确答案:A8.以下关于数据结构的描述, 哪一个是正确的()A.数据原子是数据的最小独立单位B.数据元素是数据的最小独立单位C.一个数据项可以包含若干个数据元素D.不能被计算机程序识别和处理的信息集合,不能称为数据正确答案:D9.设n为问题规模, 以下程序的时间复杂度为(...fo. (i=1.i<=10000.i++...fo.(j=1.j<=n.j++.........1;A.O(1)B.O(n)C.O(10000n)D.O(n2)正确答案:B10.设n为问题规模, 以下程序的时间复杂度为(.. fo.(i=1.i.POW(2.n).i++.//POW(x.y)函数表示x的y次...a+100;A.O(n)B.O(2n)C.O(n!)D.O(2n)正确答案:D数据结构第二章测验一、单选题 (共100.00分)1.以下结构中, 哪一个是属于逻辑结构()A.线性表B.顺序表C.单链表D.循环链表正确答案:A2.已知顺序表包含1000个数据, 现在第88号位置插入新的数据, 需要移动的数据个数为()A.88B.87C.912D.913正确答案:D3.若线性表最常用的操作是存取第i个元素及其后继的值,则最节省操作时间的存储结构是()A.单链表B.双链表C.单循环链表D.顺序表正确答案:D4.以下结构中, 哪一个是属于物理结构()A.线性表B. 栈C.单链表D.队列正确答案:C5.已知顺序表包含100个数据, 现在要删除第99号位置的数据, 需要移动的数据个数为()A.99B.100C. 1D. 2正确答案:C6.已知指针p指向单链表L的某个结点, 判断p指向的结点是尾结点的条件是()A.i.(p->next>p)B.i.(p->next==NULL)C.i.(p->nextD.i.(p->data==0)正确答案:B7.以下描述哪个是正确的()A.线性表的数据元素的存储位置一定是连续的B.顺序表的数据元素的存储位置一定是连续的C.链表的数据元素的存储位置一定不是连续的D.线性表的数据元素的存储位置一定不是连续的正确答案:B8.已知顺序表包含100个数据, 先在第15号位置插入1个新数据, 接着删除第3号位置的数据, 需要移动的数据总个数为()A.18B.84C.184D.188正确答案:C9.设某单链表包含10个结点, 已知指针p指向第3个结点, 指针q指向第4个结点, 删除第4个结点的语句为()A.p->nex..q->next.free(q);B.q->nex..p.free(p);C...q->next.free(p);D...p->next.free(q);正确答案:A10.设某单链表包含10个结点, 已知指针s指向一个新结点, 指针p指向第4个结点, 现在第4个结点之后插入这个新结点的两个语句为()A.p->nex..s.s->nex..p->next;B.s->nex..p->next.p->nex..s;C.p->nex..s->next.s->nex..p;D.s->nex..p.p->nex..s->next;正确答案:B数据结构第三章测验一、单选题 (共100.00分)1.以下结构中, 哪一个是属于逻辑结构()A.顺序栈B.链栈C.队列D.循环队列正确答案:C2.已知栈S为空, 数据1.2.3.4依次逐个进入栈S, 则栈顶数据为()A. 1B. 2C. 3D. 4正确答案:D3.已知队列为空, 数据1.2.3.4依次逐个进入队列, 则出队的数据顺序为()A.1234B.4321C.1324D.2413正确答案:A4.栈的最大特点是()A.先进先出B.后进先出C.无限递归D.有限递归正确答案:B5.队列的最大特点是()A.先进先出B.后进先出C.无限递归D.有限递归正确答案:A6.已知栈包含10元素, 其中存放在栈底是第1号元素, 则第10号元素可以通过()进行访问A.栈底B.栈中C.栈尾D.栈顶正确答案:D7.以下描述正确的是()A.顺序栈可以直接访问栈内任意位置的元素, 而链栈不可以B.链栈可以直接访问栈内任意位置的元素, 而顺序栈不可以C.通过栈可以实现程序的递归算法D.通过队列可以实现程序的递归算法正确答案:C8.以下结构中, 哪一个是属于物理结构()A. 栈B.队列C.链队列D.线性表正确答案:C9.使用长度为10的数组实现循环队列, 则该队列最多存储数据个数为()A. 1B. 9C.11.D.5正确答案:B10.在队列中, 允许插入的一端称为()A.队头B.队中C.队指针D.队尾正确答案:D数据结构第四章测验一、单选题 (共100.00分)1.以下结构中, 哪一个是属于逻辑结构()A.顺序表B.链栈C.循环队列D. 串正确答案:D2.以下哪一种是串在计算机中的常见表示方式()A.定长顺序B.堆分配C.块链D.前三种都是正确答案:D3.在数据结构中, 串可以等同于()的处理A.整数串B.浮点数串C.字符串D.多种类型的数组正确答案:C4.以下哪一种是串匹配的常用算法()A.普里姆算法B.克鲁斯卡尔算法C.KMP算法D.关键路径算法正确答案:C5.已知主串为abcbcaddabc, 模式串为cad, 假设串位置从1开始, 则串匹配位置是()A. 3B. 5C. 7D.不存在正确答案:B6.已知模式串为abaab, 则next数组为()A.1122B.22312C.1212D.1112正确答案:A7.已知串S的内容为1+2+3, 以下描述哪一个是正确的()A.串S的长度是6B.串S的运算结果是6C.整数1是串S的子串D.符号+是串S的子串正确答案:D8.以下描述哪一个是正确的()A.串是字符有限序列B.串是整数、浮点数、字符等多种数据的有限序列C.只包含空格的串称为空串D.串只能使用顺序表存储正确答案:A9.串的长度是指()A.串中包含不同字母的个数B.串中所含字符的个数C.串中包含不同字符的个数D.串中包含非空格的字符的个数正确答案:B10.串函数Sub(S.x.y)表示在串S中, 从x位置开始, 取出y个字符, 串位置从1开始计算。

李龙: 测试用例:场景法设计测试用例

李龙: 测试用例:场景法设计测试用例

场景法设计测试用例在面向对象的软件开发中,事件触发机制是编程中经常遇到的。

(一)场景法原理现在的软件几乎都是用事件触发来控制流程的。

像GUI软件、游戏等。

事件触发时的情景形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。

这种在软件设计方面的思想可以引入到软件测试中,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。

在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确流程,那么我们把这个称为该软件的基本流;而凡是出现故障或缺陷的过程,就用备选流加以标注,这样的话,备选流就可以是从基本流来的,或是由备选流中引出的。

所以在进行图示的时候,就会发现每个事件流的颜色是不同的。

基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。

备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。

在这个图中,有一个基本流和四个备选流。

每个经过用例的可能路径,可以确定不同的用例场景。

从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:场景1 基本流场景2 基本流备选流1场景3 基本流备选流1 备选流2场景4 基本流备选流 3场景5 基本流备选流3 备选流1场景6 基本流备选流3 备选流1 备选流 2场景7 基本流备选流4场景8 基本流备选流3 备选流4下面是场景法的基本设计步骤:根据说明,描述出程序的基本流及各项备选流∙根据基本流和各项备选流生成不同的场景∙对每一个场景生成相应的测试用例∙对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值(二)场景法例子1、在线购物系统我们都在当当网或china-pub华章网上书店都订购过书籍,整个订购过程为:用户登录到网站后,进行书籍的选择,当选好自己心仪的书籍后进行订购,这时把所需图书放进购物车,等进行结帐的时候,用户需要登录自己注册的帐号,登录成功后,进行结帐并生成订单,整个购物过程结束。

《软件测试规范》

《软件测试规范》

《软件测试规范》《软件测试规范》(草案)Computer Software Testing Criterion⼀、⽬的与适⽤范围1、⽬的软件测试是软件⼯程的重要组成部分,测试⼯作的质量直接影响软件产品的⽣命⼒。

测试⼯作的标准化是软件质量保证(Quality Assurance)重要⽽且必须的环节。

制定本标准的⽬的在于使测试流程更标准,测试过程更规范。

从⽽使整个软件⽣产纳⼊更系统化、更专业化的轨道。

2、适⽤范围本标准适⽤于软件测试流程的管理和测试的具体操作过程。

本标准的使⽤者可以是企业内部的测试⼈员和开发⼈员。

⼆、测试⽅法软件测试的⽅法和技术是多种多样的。

以下将介绍⽐较常⽤的⼀些测试⽅法:1、静态测试静态⽅法是指不运⾏被测程序本⾝,仅通过分析或检查源程序的⽂法、结构、过程、接⼝等来检查程序的正确性。

静态⽅法通过程序静态特性的分析,找出⽋缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分⽀嵌套、不允许的递归、未使⽤过的变量、空指针的引⽤和可疑的计算等。

静态测试结果可⽤于进⼀步的查错,并为测试⽤例选取提供指导。

2、动态测试动态⽅法是指通过运⾏被测程序,检查运⾏结果与预期结果的差异,并分析运⾏效率和健壮性等性能,这种⽅法由三部分组成:构造测试实例、执⾏程序、分析程序的输出结果。

3、⿊盒测试⿊盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使⽤,在测试时,把程序看作⼀个不能打开的⿊盆⼦,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接⼝进⾏测试,它只检查程序功能是否按照需求规格说明书的规定正常使⽤,程序是否能适当地接收输⼊数锯⽽产⽣正确的输出信息,并且保持外部信息(如数据库或⽂件)的完整性。

⿊盒测试⽅法主要有等价类划分、边值分析、因—果图、错误推测等,主要⽤于软件确认测试。

“⿊盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界⾯和软件功能进⾏测试。

对软件测试川模型的初步研究_李龙

对软件测试川模型的初步研究_李龙

Software Development •软件开发Electronic Technology & Software Engineering 电子技术与软件工程• 85软件开发过程的质量加以控制,才有可能大幅度的提高软件质量。

因此,软件质量保证也从最初的以技术和方法为重心的模式,转移到以过程管理为重心的实践。

软件质量保证的本质是为了确保软件开发过程和结果符合预期要求而建立的一系列活动及其结果评价,其最终目的是缺陷预防,达到用户的实际需求,避免安全风险。

软件测试活动是保证软件质量的有力武器,从最初的调试、验证,到现在形成的独立测试体系,无一不体现质量保证的重要性和测试工作的必要性。

本文讨论的目的:在现今科技发展的大潮下,为了提高软件质量及工作效率,提出软件测试的川模型。

希望川模型找出一款适合中国国情的软件测试思路和测试模型。

1 软件开发、测试的现状分析对软件测试川模型的初步研究文/李龙1 张翠2 刘文贞3 刘文杰3持着线性的前后关系,无法支持迭代、自发性以及需求变更调整等经常面临的问题。

1.3 H模型的优劣分析在H 模型中,软件测试活动完全独立,贯穿于整个软件周期,与其他流程并发进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;提出了软件测试不仅仅指测试的执行,还包括很多其他的活动;测试是根据被测物的不同而分层次进行,不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。

1.4 X模型的优劣分析X 模型要求对每一个程序片段都进行单元测试,但没能提供是否要跳过单元测试的判断”以及“定义验H 2 川模型架构针对软件开发、测试的现状存在的问题(并且结合各已知模型的优点),依据“以测试者引导开发,以文档化把控质量”的测试实施理念,完善、发展了一个新的测试模型──川模型。

2.1 川模型川模型由三条相对独立的测试实施流程组成,因为类似中文的“川”字而得名。

其中的三条测试实施流程分别是验收测试实施流程、需求级测试实施流程、业务级测试实施流程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单元测试
单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。

当程序编好以后,将它录制在媒体上,或者直接由终端键盘输入到机中进行调试。

测试的相对复杂性和所发现的错误受到单元测试所限定的范围的限制。

它在执行的过程中紧密的依照程序框架对模块进行测试(调试),测试包含入口和出口的参数,输入和输出信息,错误处理信息,部分边界数值测试。

需要在6个方面对所测模块进行检查。

1.模块接口测试
模块接口测试是单元测试的基础,当模块通过外部设备进行输入/输出操作时,只有在数据能正确流入、流出模块的前提下,模块才能完成他的功能。

模块接口测试应考虑下列因素:
★调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;★调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
★调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
★调用预定义函数时所用参数的个数、属性和次序是否正确;
★输入的实际参数与形式参数的个数是否相同;
★输入的实际参数与形式参数的属性是否匹配;
★输入的实际参数与形式参数的量纲是否一致;
★是否修改了只做输入用的形式参数;
★是否存在与当前入口点无关的参数引用;
★是否修改了只读型参数;
★对全程变量的定义各模块是否一致;
★是否把某些约束作为参数传递。

★输出给标准函数的参数在个数、属性、顺序上是否正确;
★限制是否通过形式参数来传送;
★文件属性是否正确;
★OPEN/CLOSE语句是否正确;
★格式说明与输入输出语句是否匹配;
★缓冲区大小与记录长度是否匹配;
★文件使用前是否已经打开;
★是否处理了输入/输出错误;
★输出信息中是否有文字性错误;
★在结束文件处理时是否关闭了文件。

2.局部数据结构测试
局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确的基础。

模块的局部数据结构往往是错误的根源,力求发现最常见的几类错误:
★不合适或不相容的类型说明;
★变量无初值;
★变量初始化或省缺值有错;
★不正确的变量名(拼错或不正确地截断);
★出现上溢、下溢和地址异常。

3.路径测试
应对模块中重要的执行路径进行测试。

由于错误的计算、不正确的比较或不正常的控制流而导致执行路径的错误。

路径错误应考虑下列因素:
★运算的优先次序不正确或误解了运算的优先次序;
★运算的方式错,即运算的对象彼此在类型上不相容;
★算法错;
★初始化不正确;
★浮点数运算精度问题而造成的两值比较不等;
★关系表达式中不正确的变量和比较符号表示不正确;
★不正确地多循环一次或少循环一次;
★错误的或不可能的循环终止条件;
★当遇到发散的迭代时不能终止的循环;
★不适当地修改了循环变量等。

4.边界条件测试
边界条件测试是单元测试中最重要的一项任务。

软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。

边界条件测试应考虑下列因素:
★程序内有一个n次循环,n次循环应是1~n, 出错0~n;
★小于、小于等于、等于、大于、大于等于、不等于确定的比较值出错;
★出现上溢、下溢和地址异常。

5.错误处理测试
比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。

这种出错处理也应当是模块功能的一部分。

错误处理测试应考虑下列因素:
★出错的描述难以理解;
★出错的描述不足以对错误定位,不足以确定出错的原因;
★显示的错误与实际的错误不符;
★对错误条件的处理不正确;
★异常处理不当。

6.代码书写规范
代码书写规范应考虑下列因素:
★模块设计程序框架流程图;
★代码书写规范,对齐方式;
★代码的注释;
★参数类型,数据长度,指针,数组长度大小;
★输入输出参数和结果。

单元测试是对每个程序的单体调试。

主要有以下几步:
(1)程序语法检查;
(2)程序逻辑检查。

在程序的逻辑检查之前,首先需要制作测试数据;即假设一些输入数据和文件数据。


试数据直接影响了程序的调试工作,所以制作的数据应该满足以下几个条件:(1)数据应能满足设计上要求的上下限及循环次数;
(2)数据应满足程序中的各种检验要求的错误数据;
(3)数据应能适宜于人工对程序的检查工作。

测试数据的内容包含4个方面:
(1)正常的数据
(2)不同的数据
(3)错误的数据
(4)大量的数据
通过以上不同角度的数据检验,证明程序逻辑是对的,程序的调试也就结束了。

在程序测试期,评价模块的五个主要特性是:
★模块接口;
★局部数据结构;
★“重要”的执行路径;
★错误处理路径;
★影响上述几点的界限条件。

在其它任何测试开始之前,需要测试横穿模块接口的数据流。

如果数据不是正确地进入和退出,其它的测试就谈不上。

在程序测试中接口测试的清单如下:
⑴输入参数的数目是否等于变元的数目
⑵参数与变元的属性是否匹配
⑶参数与变元的单位是否匹配
⑷传送给被调用模块的变元数是否等于参数的项目
⑸传送给被调用模块的变元属性是否同参数属性一致
⑹传送给被调用模块的变元单位是否同参数的单位一致
⑺属于内部的函数属性数目及变元次序是否正确
⑻对参数的任何访问是否与当前的入口点无关
⑼输入是否改动变元
⑽跨模块的全程量定义是否相容
⑾限制是否作为变元来传送
⑿参数是否被重复定义
表测试说明书。

相关文档
最新文档