计算机测试的读书报告终审稿Word下载.docx
《计算机测试的读书报告终审稿Word下载.docx》由会员分享,可在线阅读,更多相关《计算机测试的读书报告终审稿Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
(3)需求分析。
弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。
(4)开发阶段。
开发阶段由三个阶段组成:
设计、实现、测试。
(5)维护。
二、软件测试的常用方法
黑盒测试和白盒测试都是软件测试的重要方法,是软件生命周期中一项非常重要且复杂的工作,测试的目的是尽可能发现并改正软件中的错误,提高软件的可靠性。
1、白盒测试
通过程序的进行测试而不使用用户界面。
这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正,如图1所示。
(1)逻辑错误和不正确假设与一条程序路径被执行可能性成反比。
当我们设计和实现主流之外的功能、条件和控制时,错误往往开始出现在我们的中。
日常处理往往能被很好的理解,而“特殊情况”的处理则难于发现。
(2)我们经常相信某个逻辑路径不可能被执行,而事实上,它可能在正常的情况下被执行。
程序的逻辑流有时候是违反直觉的,这意味着我们关于控制流和数据流的一些无意识的假设可能导致设计错误,只有路经测试才能发现这些错误。
(3)笔误是随机的。
有可能产生的笔误,很多将被语法检查机制发现,但是还有一些在测试开始后才会被发现。
图1白盒分析法
2、白盒测试的常用技术
(1)静态分析技术。
静态结构分析是指测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形和图表,清晰得标识整个软件的组成结构,通过分析这些图表,检查软件是否存在缺陷或错误。
以函数调用的静态分析为例,主要分析一下内容:
①检查函数的调用关系是否正确;
②是否存在孤立的函数没有被调用;
③明确函数被调用的频繁度,对调用频繁的函数可以重点检查。
(2)动态分析技术。
动态测试是在程序运行状态下的测试,通过输入设计好的数据,根据程序运行计算输出结果,并跟实际输出结果进行比较,进而发现程序错误。
在现代软件开发过程中,尤其是嵌入式软件开发,动态测试几乎成为一个必须进行的强制性测试。
在程序的运行过程中,通过动态测试,测试人员可以判断程序的基本模块、执行过程、子系统以及整体系统的运行结果是否存在缺陷。
与静态测试相比,动态测试有这些特点:
需要程序运行;
如果静态测试是预防的话,那么动态测试就是治疗;
动态测试的性价比比静态测试低很多;
动态测试获得的覆盖效率低;
动态测试需要运行的用例多,运行时间长;
动态测试只能发现运行出现的错误;
动态文件几乎都需要在生成可执行文件后进行。
(3)测试数据生成
(4)测试覆盖率:
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖。
3、黑盒测试
白盒测试在测试的早期进行,黑盒测试主要用于后期。
黑盒测试不是白盒测试的替代品,而是用于辅助白盒测试发现类型的错误,如图2所示。
黑盒测试可以回答以下问题:
如何测试功能的有效性?
何种类型的输入会产生好的
系统是否对特定的输入值尤其敏感?
如何分割数据类的边界?
系统能够承受何种数据率和数据量?
特定类型的数据组合会对系统产生何种影响?
图2黑盒测试
4、黑盒测试的常用技术
常用的黑盒测试方法有:
等价类划分法;
边界值分析法;
因果图法;
场景法;
正交实验设计法;
判定表驱动分析法;
错误推测法;
功能图分析法。
(1)等价类划分法
等价类分为有效等价类和无效等价类,其中,有效等价类是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合;
而无效等价类是指对于程序的规格说明来说是不合理的,没有意义的输入数据构成的集合。
确定等价类的原则是:
在输入条件规定了取值范围或值的个数的情况下,则可以确定一个有效等价类和两个无效等价类,比如若规定的输入范围是1<
x<
10的所有数,则有效的是1~10内的任意数,而无效的是—∞~0.9999和10.00001~+∞;
在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,则可以确立一个有效等价类和一个无效等价类;
在输入条件是一个布尔量的情况下,可以确定一个有效的等价类和一个无效的等价类;
在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立n个有效等价类和一个无效等价类;
在规定了输入数据必须遵守的规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将改等价类进一步的划分为更小的等价类。
(2)边界值分析法
根据经验法则,大量的错误是发生在输入或输出范围的边界上的,而不是发生在输入输出范围的内部。
因此针对各种边界情况涉及测试用例,可以查出更多的错误。
而使用边界值的分析方法涉及测试用例,首先应确定边界情况。
通常输入和输出等价类的边界,应当选取正好等于,刚刚大于或者刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
边界值选择的原则:
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围的边界的值作为测试输入数据。
如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数小一,和比最大个数大一的数作为测试数据。
将前面两个原则应用于输出条件,即涉及测试用例使输出值达到边界值及其左右的值。
如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例数据;
分析规格说明,找出其他可能的边界条件。
(3)因果图法
因果图是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况,如图3所示。
利用因果图生成测试用例的基本步骤有:
分析软件规格说明描述中哪些是原因(输入,包括前提条件,操作过程),哪些是结果(输出),并给每个原因和结果赋予一个标识符;
分析软件规格说明描述的语义,找出原因和结果之间,原因和原因之间的关系,根据这些关系,画出因果图;
在因果图上用一些记号表明约束或限制条件;
把因果图转换为判定表;
把判定表的每一列拿出来作为依据,设计测试用例。
图3因果图的基本符号和约束符号
(4)场景法
场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。
其中,基本流就是正常的,正确场景;
备选流一般指中断操作的场景,如图4所示两种场景的关系。
图4两种场景的关系
(5)正交实验设计法
使用正交试验设计法首先要知道正交表,正交表是研究多因素多水平的一种设计方法,它是格局正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是一种基于正交表的、高效率、快速、经济的试验设计方法。
正交表由三个成分构成,Runs:
正交表的行数,即实验的次数;
Factors:
正交表的列数,即因素数;
Levels:
水平数,任何单个因素能够取得的值的最大个数。
(6)判定表驱动分析法
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表由以下部分构成:
条件桩(ConditionStub):
列出了问题的所有条件。
通常认为列出的条件的次序无关紧要;
动作桩(ActionStub):
列出了问题规定可能采取的操作。
这些操作的排列顺序没有约束;
条件项(ConditionEntry):
列出针对它左列条件的取值在所有可能情况下的真假值;
动作项(ActionEntry):
列出在条件项的各种取值情况下应该采取的动作。
(7)错误推测法
错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
错误推测方法的基本思想:
列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。
3、灰盒测试(Gray-BoxTesting)
灰盒测试更像是白盒测试和黑盒测试的混合测试,现阶段对灰盒测试没有更明确的定义,但更多的时候,我们的测试做的就是灰盒测试,即既会做黑盒测试又会做白盒测试。
三、计算机软件测试过程
1、单元测试
在单元测试时,测试者需要依据和源程序清单,了解该模块的I/O条件和模块的,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。
(1)模块接口测试
在单元测试的开始,应对通过被测模块的数据流进行测试。
测试项目包括:
调用本模块的输入参数是否正确;
本模块调用子模块时输入给子模块的参数是否正确;
全局量的定义在各模块中是否一致;
在做内外存交换时要考虑:
文件属性是否正确;
OPEN与CLOSE语句是否正确;
缓冲区容量与记录长度是否匹配;
在进行读写操作之前是否打开了文件;
在结束文件处理时是否关闭了文件;
正文书写/输入错误,
I/O错误是否检查并做了处理。
(2)局部测试
不正确或不一致的数据类型说明;
使用尚未赋值或尚未初始化的变量;
错误的初始值或错误的缺省值;
变量名拼写错或书写错;
不一致的数据类型;
全局数据对模块的影响;
(3)路径测试
选择适当的测试用例,对模块中重要的执行路径进行测试;
应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误;
对基本执行路径和循环进行测试可以发现大量的路径错误;
(4)错误处理测试
出错的描述是否难以理解
出错的描述是否能够对错误定位
显示的错误与实际的错误是否相符
对错误条件的处理正确与否
在对错误进行处理之前,错误条件是否已经引起系统的干预等
(5)边界测试
注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。
对这些地方要仔细地选择测试用例,认真加以测试;
如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素;
2、集成测试(IntegratedTesting)
通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。
把模块集成成为系统的方式有两种:
一次性集成方式和增殖式集成方式
(1)一次性集成方式(bigbang)
它是一种非增殖式组装方式。
也叫做整体拼装。
使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。
(2)增殖式集成方式
这种集成方式又称渐增式集成,首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统。
在集成的过程中边连接边测试,以发现连接过程中产生的问题,通过增殖逐步组装成为要求的软件系统。
自顶向下的增殖方式
自底向上的增殖方式
混合增殖式测试
3、确认测试(ValidationTesting)
确认测试又称有效性测试。
任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
对软件的功能和性能要求在软件需求规格中已经明确规定。
它包含的信息就是软件确认测试的基础。
进行有效性测试(黑盒测试)
软件配置复查
4、验收测试(AcceptanceTesting)
在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
验收测试是以用户为主的测试。
软件开发人员和QA(质量保证)人员也应参加。
由用户参加设计测试用例,使用生产中的实际数据进行测试。
在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、、可维护性、错误的恢复功能等进行确认。
5、系统测试(SystemTesting)
系统测试,是将通过确认测试的软件,作为整个基于的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。
四、总结
随着科技和时代的发展,软件的规模和复杂程度越来越大,从而对软件质量提出更高的要求,为了满足用户日趋复杂的需求,软件开发趋向繁琐化和复杂化,软件投入使用的过程中出现漏洞和缺陷的数量也在不断增加。
所以,采用高效的软件测试时软件质量、可靠性和稳定性的重要保障,通过调查相关数据了解,目前软件测试的工作量在整个软件开发工作总量中的比例达到40%以上,对于测试的成本投入也达到了软件开发总额的50%。
可以说软件测试是软件开发过程中不可缺少的环节,软件测试的成功对软件开发的成功具有决定性的意义。
耿娜