工欲善其事 必先利其器

测试方法

上一篇 / 下一篇  2016-05-18 17:29:45 / 个人分类:测试技术


--------------------------------

验收测试
--------------------------------
也称为交付测试
ISTQB定义:  
针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system

用户验收测试,这个一般是由开发方在移交产品前
运行验收测试,这个更多是运维层面,保证系统是可以被正常运行和维护的。比如备份、灾难恢复等等
合同和规范验收测试,这个主要就是参照约定的规范进行验证。,以及针对政府、法律等的合规验证
alpha测试 一般在开发者所提供的场地或环境中进行
beta测试 则是脱离开发者环境,在用户的场所或环境中进行

alpha版本,beta版本,release版本

ATDD也是敏捷研发,特别是极限编程所推崇的一种开发模式。也有说BDD 就是针对用户故事user story,首先确定好针对这个用户故事的用户级的验收条件,确保Userstory的功能满足验收条件时,才可以关闭这个用户故事。





下面我们再看一下按测试手段的不同进行分类,有哪些测试概念

1. 黑盒、白盒、灰盒
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。



白盒测试针对程序的逻辑结构设计测试用例,用逻辑复盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。语句复盖就是复盖所有的语句,其他类推。另外还有一种判定条件复盖,其实是分支复盖与条件复盖的组合,在此不作讨论。跟条件有关的复盖就有三种,解释一下:条件复盖是指复盖所有的条件表达式,即所有的条件表达式都至少计算一次,不考虑计算结果;条件值复盖是指复盖条件的所有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合复盖是指复盖所有条件取值的所有可能组合。老纳做过一些粗浅的研究,发现与条件直接有关的错误主要是逻辑操作符错误,例如:||写成&&,漏了写!什么的,采用分支复盖与条件复盖的组合,基本上可以发现这些错误,另一方面,条件值复盖与条件值组合复盖往往需要大量的测试用例,因此,在老纳看来,条件值复盖和条件值组合复盖的效费比偏低。效费比较高且完整性也足够的测试要求是这样的:完成功能测试,完成语句复盖、条件复盖、分支复盖、路径复盖。做过单元测试的朋友恐怕会对老纳提出的测试要求给予一个字的评价:晕!或者两个字的评价:狂晕!因为这似乎是不可能的要求,要达到这种测试完整性,其测试成本是不可想象的,不过,出家人不打逛语,老纳之所以提出这种测试要求,是因为利用一些工具,可以在较低的成本下达到这种测试要求,后面将会作进一步介绍。
关于白盒测试用例的设计,程序测试领域的书籍一般都有讲述,普通方法是画出程序的逻辑结构图如程序流程图或控制流图,根据逻辑结构图设计测试用例,这些是纯粹的白盒测试,不是老纳想推荐的方式。老纳所推荐的方法是:先完成黑盒测试,然后统计白盒复盖率,针对未复盖的逻辑单位设计测试用例复盖它,例如,先检查是否有语句未复盖,有的话设计测试用例复盖它,然后用同样方法完成条件复盖、分支复盖和路径复盖,这样的话,既检验了黑盒测试的完整性,又避免了重复的工作,用较少的时间成本达到非常高的测试完整性。不过,这些工作可不是手工能完成的,必须借助于工具,后面会介绍可以完成这些工作的测试工具。

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。


1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。



2. 静态、动态
静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;

(互查、走查、会议审查)

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


最好的一个类比是检查二手汽车的过程。踢一下轮胎、看看车漆、打开引擎盖检查都属于静态测试技术。发动汽车、听听发动机声音、上路行驶都属于动态测试技术。


3. 手工、自动化
手工测试 ,由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。
(众包测试、探索式测试)


在考虑自动化测试的时候,我们必须满足人们的要求:
平台和操作系统的独立性
数据驱动能力(输入数据,输出数据,元数据)
可自定义报表(数据库访问、水晶报表)
易于调试和日志记录
版本控制友好型的二进制文件
可扩展性和可定制性(开放的原料药能够与其他工具相结合)
常见的驱动程序(例如,在java开发的生态系统,这意味着Ant或Maven和流行的IDE)。这使得测试与开发人员的工作流程相结合。
支持无人参与的测试运行的集成与构建过程和批处理运行。连续集成服务器需要这个。
电子邮件通知,如反弹消息
支持分布式执行环境(分布式测试床)
支持分布式应用(分布式系统)



自动化测试框架的要求:
1. 定义如何来表达预期结果
2. 连接并驱动目标软件运行
3. 执行测试
4. 输出结果报告




TAG:

 

评分:0

我来说两句

Open Toolbar