软件测试相关概念
作者:网络转载 发布时间:[ 2011/11/15 14:24:21 ] 推荐标签:
软件缺陷的特征n “看不到”
??软件的特殊性决定了缺陷不易看到n “看到但是抓不到”
??发现了缺陷,但不易找到问题发生的原因所在
1、软件测试的定义软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的终审查,它是软件质量保证的关键步骤。通常对软件测试的定义有两种描述:n 定义1:软件测试是为了发现错误而执行程序的过程。
n 定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。
n 测试:所谓测试的含义,首先是一项活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,结果将被观察和记录,并对系统或组成部分进行评价。测试活动有两种结果:找出缺陷和故障,或显示软件执行正确。测试是一个或多个测试用例的集合。
n 测试用例:所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的小实体。
n 测试步骤:测试步骤详细规定了如何设置、执行、评估特定的测试用例。
n 软件测试的对象:??软件测试不等于程序测试。
??软件测试贯串于软件定义和开发的整个过程。
??软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以及源程序都是软件测试的对象。
n 软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问题的费用呈几何级数增长。
完整的软件开发流程
n 软件测试的复杂性分析1、无法对程序进行完全测试(1)测试所需要的输入量太大(2)测试的输出结果太多(3)软件实现的途径太多(4)软件规格说明没有一个客观标准2、测试无法显示潜在的软件缺陷和故障??通过软件测试只能报告软件已被发现的缺陷和故障,无法报告隐藏的软件故障。
3、存在的故障现象与发现的故障数量成正比??结论:应当对故障集中的程序段进行重点测试
n 静态测试与动态测试(续)
代码检查n 代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。
n 代码检查的具体内容:变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等。
n 代码检查的优点:在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。
n 代码检查的缺点:非常耗费时间,而且代码检查需要知识和经验的积累。
静态结构分析n 静态结构分析主要是以图形的方式表现程序的内部结构。 例如函数调用关系图、函数内部控制流图。其中:??函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;??控制流图显示一个函数的逻辑结构,由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。
代码质量度量n 软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。
n 针对软件的可维护性,目前业界主要存在三种度量参数:Line复杂度、Halstead复杂度和McCabe复杂度。其中Line复杂度以代码的行数作为计算的基准。Halstead以程序中使用到的运算符与运算元数量作为计数目标(直接测量指标),然后可以据以计算出程序容量、工作量等。McCabe复杂度 一般称为圈复杂度,它将软件的流程图转化为有向图,然后以图论来衡量软件的质量。
n 静态测试阶段的任务:(1)检查算法的逻辑正确性。
(2)检查模块接口的正确性。
(3)检查输入参数是否有合法性检查。
(4)检查调用其他模块的接口是否正确。
(5)检查是否设置了适当的出错处理。
(6)检查表达式、语句是否正确,是否含有二义性。
(7)检查常量或全局变量使用是否正确。
(8)检查标识符的使用是否规范、一致。
(9)检查程序风格的一致性、规范性。
(10)检查代码是否可以优化,算法效率是否高。
(11)检查代码注释是否完整,是否正确反映了代码的功能n 静态测试可以完成以下工作:(1)发现下列程序的错误:错用局部变量和全局变量;未定义的变量、不匹配的参数;不适当的循环嵌套或分支嵌套、死循环、不允许的递归;调用不存在的子程序,遗漏标号或代码。
(2)找出以下问题的根源:从未使用过的变量;不会执行到的代码、从未使用过的标号;潜在的死循环。
(3)提供程序缺陷的间接信息:所用变量和常量的交叉应用表;是否违背编码规则;标识符的使用方法和过程的调用层次。
(4)为进一步查找做好准备。
(5)选择测试用例。
(6)进行符号测试。
动态测试n 动态方法的主要特征是:??计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况即输入与输出的对应关系进行分析,以达到检测的目的。
n 动态测试包括:(1)功能确认与接口测试(2)覆盖率分析(3)性能分析(4)内存分析客户/服务器体系结构测试方法n 从宏观上说,C/S体系结构的软件测试通常是从单个客户端开始,然后再逐步集成客户端、服务器和网络系统进行集成测试,后进行系统的整体测试。即从以下三个层面来进行C/S系统的测试:(1)客户端的独立测试对客户端的测试主要是属于功能性测试。用户客户端应用以“分离的”模式被测试,即这层测试不考虑服务器和底层网络的运行。通常包括:? 客户端的测试??检测客户端的业务逻辑流程的应用? 操作系统平台测试??在各种系统平台上进行兼容性测试? 浏览器测试(2)客户端与服务器端的集成测试客户端软件和关联的服务器端应用作一体测试,但并不过多考虑网络运行的关联因素。? 对服务器的测试??主要是性能的测试。测试包含服务器的协调和数据管理功能以及服务器的性能(整体响应时间和数据的吞吐量)的表现。通常包括:数据库测试、连接速度测试、负载测试、压力测试。? 对应用服务器(中间件)的测试对C/S系统的集成测试一般采用非增量式的方法完成。此外,C/S测试必须考虑面向对象的测试技术,尤其是C/S系统基本上都采用了GUI(图形用户界面)。
(3)整体测试对完整的C/S体系结构整体测试,在上述功能测试和性能测试的基础上,还包括网络运行及其性能的测试。 整体测试通常包括以下测试项目:? 事务测试??创建一系列的测试以保证每类事务被按照需求处理。事务测试着重于处理的正确性,同时也关注性能问题。? 网络通信测试??用于验证网络节点间的通信是否正常的发生,并且消息传递、事务和相关的网络通信有无错误的发生。

sales@spasvo.com