测试活动从不同的角度出发,可以有不同的分类。如:
-
按照被测试的软件系统是否运行:静态测试和动态测试
-
根据利用的被测对象信息的不同:黑盒测试、灰盒测试和白盒测试
-
所有测试方法都可以归类为手工测试和自动化测试
静态测试
-
定义:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术, 例如:代码走读、文档评审、程序分析等。
-
常用技术:静态分析技术。
-
定义:静态分析是一种不通过执行程序而分析程序的技术
-
功能:检查软件的表示和描述是否一致,没有冲突或者没有歧义
-
目的:纠正软件系统在描述、表示和规格上的错误,因此是任何进一步测试的前提。
-
静态分析技术主要有3种不同的程序测试可能性
-
考虑程序是否满足编码规则,语法上是否具有一致性和完整性;
-
考虑文档描述是否规范、准确、便于查阅;
-
考虑程序和文档之间的一致性。
-
静态分析技术有:控制流分析、数据流分析和信息流分析
-
-
动态测试
-
定义:按照预先设计的数据和步骤去运行被测软件系统,从而对被测试软件进行检测的一种测试技术。
-
特点:主要分析软件系统在模拟或是真实的环境中执行之前、之中、之后的动态行为。
-
常用技术:动态分析技术
-
定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。
-
常用动态分析技术:
-
路径测试
-
分支测试
-
性能测试
-
-
-
-
常用动态分析工具及功能
-
测试覆盖率分析:用于测试对代码的检测范围;
-
跟踪:跟踪程序执行期间的所有路径
-
调整:度量程序执行过程中所有的资源
-
模拟:模拟系统的部分
-
软件测试的两种极端情况
任何软件产品都可以使用以下 的两种方法之一进行测试:
-
已知产品的需求规格,但不知道其内部实现,可以进行测试证明 每个需求是否实现。
-
已知产品的内部实现过程,可以通过测试证明每种内部操作是否 符合设计规格的要求,所有内部成分是否已经过检查。
计算器例子
-
参照SRS直接测试计算器的加法功能。这就是黑盒测试。
-
参照LLD根据加法主函数的伪码或者流程图测试该主函数的 结构。这就是白盒测试。
什么是白盒测试
-
定义:是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试, 可完全不顾程序的整体功能实现情况,即已知软件产品的内部实现过程,可以通过测试证明每种内部操 作是否符合设计规格的要求,所有内部成分是否已经过检查。
-
思想:白盒测试又被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。
-
测试对象: 函数、算法与数据结构
-
目的(为什么要白盒测试)
-
一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题能基本得到消 除;
-
保证内部结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;
-
白盒测试发现问题后,解决问题的成本较低。
-
-
白盒测试的常用技术:
-
静态分析:包括控制流分析、数据流分析、信息流分析
-
动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等
- 逻辑覆盖测试根据覆盖的对象不同,可以分为:语句覆盖、判定(分支)覆盖、条件覆盖、判定条件覆盖、条件 组合覆盖、路径覆盖。 覆盖度是由弱到强
-
什么是黑盒测试
-
定义:把测试对象看成是一个黑盒,只考虑其整体特性,不考虑其内部具体实现过程。即已知产品的需求规格,但不知其内部实现,可以进行测试证明每个需求是否实现。
-
思想:基于规格的测试,测试类型都来源于质量模型。
-
测试对象:系统、子系统、模块、子模块、函数等。
-
常用的黑盒测试方法:等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。
-
目的:减少测试时的测试用例数,用尽量少的测试用例完成测试,发现更多的问题。
-
黑盒测试的特点
-
对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高;
-
测试人员不需要了解软件的实现细节,包括特定的编程语言;
-
从用户的视角进行测试,很容易被理解和接受;
-
有助于暴露任何规格不一致或有歧义的问题;
-
没有需求规格,测试用例很难设计;
-
不能控制内部执行路径,会有很多内部程序路径没有被测试到;
-
不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)
-
常见的黑盒测试类型
功能性测试:也叫黑盒测试或数据驱动测试,只需考虑需要测试的各个功能,不需要考 虑整个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用 户使用的要求。
下面几种只需了解
-
容量测试:检测软件在处理海量数据时的局限性,能发现系统效率方面的问题;
-
负载测试:检测系统在一个很短时间内处理一个巨大的数据量或执行许多功能调用上的能力;
-
恢复性测试:主要保证系统在崩溃后能够恢复外部数据的能力;
什么是灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一 些表征性的现象、事件、标志来判断内部的运行状态。
灰盒测试相对于其他黑白盒有什么特点:
-
灰盒测试比白盒测试效率高,从程序的整体出发,而非细节.
-
灰盒测试健壮性好,相对于白盒测试降低了程序代码改变而导致用例失效的风险。
-
灰盒测试更细致。灰盒测试要求测试人员关注程序的代码逻辑,根据代码逻辑扩充用例, 更加细致
如何做好灰盒测试
-
测试定位要清晰。灰盒测试的对象应该是整个产品,而非各个组件,应从整个测试产品 的业务出发进行测试设计。
-
测试阶段要正确。灰盒应该在集成测试中采用,他并不适合于单元测试。
-
测试辅助要必备。灰盒测试需要深入产品代码逻辑,对于测试人员来说,业务逻辑图是 必不可少的,测试人员需要根据业务逻辑图进行功能点划分,并扩展用例。另外可以借助 于测试覆盖率等工具辅助查找遗漏功能点.
-
运行状态检查点要仔细选择。灰盒测试对于程序运行状态的检查往往采用标志来判断, 测试人员一定要仔细考虑,否则很容易遗漏某些bug。
人工和自动化测试
-
人工测试:测试活动(如评审、测试设计、测试执行等)由人来完成,狭义上是指测试执行由 人工完成,这是最基本的测试形式
-
自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与 期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
自动化测试的优点
-
对程序新版本运行前一版本执行的测试,提高回归测试效率
-
可以运行更多更频繁的测试,比如冒烟测试
-
可以执行手工测试困难或不可能做的测试,比如大量的重复操作或者集成测试
-
更好地利用资源,比如测试仪器或者被测对象
自动化测试的限制
-
不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发现更多缺陷
-
手工测试比自动测试发现的缺陷更多
-
对测试设计依赖性极大,测试设计的不好会遗漏问题
-
自动化测试对软件开发具有很大的依赖性,开发上出现变更可能导致 前面的自动化测试完全失效
-
工具本身并不具备想象力,工具不具有智能
自动化测试前提条件:
-
版本稳定
-
项目周期长
-
脚本可复用
网友评论