软件测试中除了根据
测试用例和测试说明书进行测试外,还需要进行随机测试(Ad-hoctesting),主要是根据测试者的经验对
软件进行
功能和
性能抽查。
简介
随机测试是根据测试说明书执行
用例测试的重要补充手段,是保证
测试覆盖完整性的有效方式和过程。 随机测试主要是对被测软件的一些重要
功能进行复测,也包括测试那些当前的
测试用例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合
回归测试(Regressivetesting)一起进行。理论上,每一个被测软件
版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对
缺陷跟踪
记录的分析,不断总结,才能提高。
定义步骤
软件测试即为了发现
程序中的错误而执行程序的过程。软件测试是帮助识别开发完成(中间或最终的
版本)的
计算机软件(整体或部分)的
正确度(correctness)、完全度(completeness)和
质量(quality)的
软件过程;是
SQA(softwarequalityassurance)的重要
子域。软件测试主要工作内容是
验证(verification)和确认(validation),下面分别给出其概念:
验证
验证(verification)是保证软件正确地实现了一些特定
功能的一系列活动,即保证软件做了你所
期望的事情(Do it right)。确定
软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;
程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do the right thing)静态确认,不在计算机上实际执行
程序,通过人工或
程序分析来证明软件的正确性;
动态确认,通过执行程序做分析,
测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是
程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的
文档,如需求
规格说明、
概要设计文档、
详细设计文档,当然软件测试的主要对象还是
源程序。
目标
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
成功的测试是发现了至今为止尚未发现的错误的测试。
相关说明
在软件测试中除了根据
测试用例和测试说明书进行测试外,还需要进行随机测试(Ad-hoctesting)。随机测试主要是根据测试者的经验对软件进行
功能和
性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证
测试覆盖完整性的有效方式和过程。 随机测试有这样一些缺点:测试往往不太真实;
基本原则
测试的原则: 1、应把“尽早和不断地进行软件测试”作为软件开发者的
座右铭,实践证明
单元测试能够尽早发现问题,减少后期测试的错误量。可以采用
Junit和Jtest来辅助进行单元测试。2、
测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
3、应当避免由
程序员检查自己的程序。(指后期
系统测试阶段,不包括
单元测试)
4、测试用例的设计要确保能覆盖所有可能
路径。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。
5、充分注意测试中的群集现象。经验表明,测试后
程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。应该对错误群集的
程序段进行重点测试。
6、严格执行
测试计划,排除测试的随意性。测试计划应包括:所测软件的
功能,输入和输出,测试内容,各项测试的
进度安排,资源要求,测试资料,
测试工具,
测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及
回归测试的规定等等以及评价标准。
7、应当对每一个测试结果做全面的检查。
8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
软件测试的对象:软件测试并不单纯等同于
程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此
需求分析、
概要设计、
详细设计以及程序编码等各阶段所得到的
文档,包括需求
规格说明、概要设计规格说明、详细设计规格说明以及
源程序,都应该是软件测试(
评审)的对象。在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。
术语解释
通过测试执行到的分支的
百分比。 branchoutcome--分支结果见判定结果(decisionoutcome)
见判定(decision)
branchtesting--分支测试
在测试中测试一个产品的所有
功能,但是不测试更细节的特性。
capture/playbacktool--捕获/回放工具
参考capture/replaytool
Capture/ReplayTool--捕获/回放工具
一种测试工具,能够捕获在
测试过程中传递给软件的输入,并且能够在以后的时间中,重复这个执行的过程。这类工具一般在GUI测试中用的较多。
CASE--
计算机辅助软件工程(computeraidedsoftwareengineering)
用于支持软件开发的一个自动化系统。
CAST--
计算机辅助测试在
测试过程中使用
计算机软件工具进行辅助的测试。
一个图形,用来表示输入(原因)与结果之间的关系,可以被用来设计
测试用例。
certification--证明
一个过程,用于确定一个系统或组件与特定的需求相一致。
一个用于计算机系统或系统
数据修改的过程,该过程是质量保证
程序的一个关键
子集,需要被明确的描述。
由一个人、组或工具对
源代码进行的一个独立的评审,以验证其与设计
规格、程序标准的一致性。正确性和有效性也会被评价。
一种分析方法,用于确定在一个测试套执行后,软件的哪些部分被执行到了,哪些部分没有被执行到。
CodeInspection--代码检视
一个正式的
同行评审手段,在该评审中,作者的同行根据检查表对
程序的逻辑进行提问,并检查其与
编码规范的一致性。
一个非正式的同行评审手段,在该评审中,
代码被使用一些简单的
测试用例进行人工执行,程序变量的状态被手工分析,以分析程序的逻辑和假设。
code-basedtesting--基于代码的测试
根据从实现中引出的目标设计测试用例。
codingstandards--编程规范
一些编程方面需要遵循的标准,包括
命名方式、排版格式等内容。