软件测试分类、阶段

软件测试技术

重点:软件测试分类、阶段

软件测试应该从需求开始

验收测试根据需求分析来定,测试人员主要做的是系统测试,集成测试和单元测试主要由开发人员做。

验收测试 加入了客户

软件测试分类、阶段_第1张图片

软件测试需求:

用户需求 (测试人员需要尽早的关注用户需求。)

业务需求

功能需求

原型开发---需求特别重要,先开发一个简单的,做出一个原型出来,先让客户看看是不是自己需要的。

软件研发中最重要的环节是需求分析和获取

测试分析的级别

1.普通测试工程师:按照需求点写测试用例

2.中级测试工程师:按照场景写测试用例

3.高级测试工程师:分析用户需求

软件测试的对象

1.软件是由文档、数据以及程序组成的。

2.测试应该是对文档、数据以及程序进行的测试。

3.60%以上的软件错误并不是程序错误,而是分析和设计错误。

4.测试概念扩大化,提倡软件全生命周期测试的理念。

软件测试分类

  • 经典的软件测试分类:白盒测试、黑盒测试

    白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文档

    黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档

    比如,对于用户功能点,黑盒测试关注需求,明确知道需要做什么工作,关注功能点;白盒测试更关注代码

    一般白盒测试由开发做,黑盒主要由专门的测试工程师做。

    一个关注细节,一个关注外围。

  • 测试规划

    项目 白盒测试 黑盒测试
    功能 根据程序的内部结构,如语句的控制结构,模块间的控制结构以及内部数据等进行测试。 根据用户的规格说明,即对命令、信息、报表等用户界面及体现它们的输入数据和输出数据之间的对应关系,特别是针对功能进行测试。
    优点 能够对程序内部的特定部位进行覆盖测试 能够站在用户的立场上进行测试
    缺点 无法检测程序的外部特性;无法对未实现规格说明的程序内部缺陷部分进行测试 不能测试程序内部特定部位;如果规格说明有误,则无法实现。
    方法举例 语句覆盖;判定覆盖;条件覆盖;判定-条件覆盖;基本路径覆盖;循环覆盖; 基于图的测试;等价类划分;边值分析;比较测试

软件测试阶段

软件测试分类、阶段_第2张图片

软件测试阶段详解

  • 单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。

  • 集成测试介于单元测试和系统测试之间,起到“桥梁作用“,一般由开发小组采用白盒加黑盒的方式来测试,既要验证”设计“,又要验证”需求“。

  • 系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。

  • 验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。

ALPHA和BETA测试

  1. 大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试。

  2. 目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,一发现可能只有最终用户才能发现的错误。

  • Alpha测试

    1)Alpha测试是用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。这是在受控制的环境下进行的测试。

    2)Alpha测试的目的是评价软件产品的FURPS(即功能、可使用性、可靠性、性能和支持)。

    3)Alpha测试可以从软件产品编码结束之时开始,或者在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品一定的稳定和可靠程度之后再开始。

  • Beta测试

    1)Beta测试是用户在实际使用环境下进行的测试。与Alpha测试不同的是,开发者通常不在测试现场。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。

2)只有当Alpha测试达到一定的可靠程度时,才能开始Beta测试。由于它处在整个测试的最后阶段,不能指望这时发现主要问题。

3)产品的所有手册文本也应该在此阶段完全定稿。

总结:软件测试阶段对照表

测试阶段 主要依据 测试人员、测试方法 主要测试内容 (系统测试和验收测试的测试内容相同)
单元测试 系统设计文档 由开发小组执行白盒测试 接口测试、路径测试
集成测试 系统设计文档 需求文档 由开发人员执行白盒测试和黑盒测试 接口测试、路径测试、功能测试、性能测试
系统测试 需求文档 由独立测试小组执行黑盒测试 功能测试、健壮性测试、性能测试、用户界面测试
验收测试 需求文档 由用户执行黑盒测试 安全性测试、压力测试、可靠性测试、安装/反安装测试

如何提高测试效率

  1. 减少冗余的测试

    • 白盒测试与黑盒测试的方式虽然不同,但是往往有异曲同工之妙。在很多地方,白盒测试与黑盒测试会产生一模一样的效果(或者能够推理出来),这样的测试是冗余的。

    • 在集成测试、系统测试阶段,可能要执行多次“回归测试”。每一次“回归测试”都会存在不少的冗余,应当设法剔除不必要的重复测试工作。

  2. 减少无价值的测试

    • 无价值的测试通常是由不懂得测试技术引起的。例如功能测试,在等价区间之中,本来只要测试一个典型的输入就行了,如果有人在此区间测试了100次,那么其中99次就是无价值的。

    测试优先级选择

测试优先级:(重点)

  1. 哪些功能是软件的特色?

  2. 哪些功能是用户最常用的?

  3. 如果系统可以分块卖的话,哪些功能块在销售时最昂贵?

  4. 哪些功能出错将导致用户不满或者索赔?

  5. 哪些功能是最复杂、最容易出错的?

  6. 哪些程序是相对独立,应当提前测试?

  7. 哪些程序最容易扩散错误?

  8. 哪些程序是全系统的性能瓶颈所在?

  9. 哪些程序是开发者最没有信心的?

探索式测试(在前面部分都完成之后,有剩余时间)

测试人员在测试程序中可以天马行空地想怎么测就怎么测,利用应用程序所提供的信息自由发挥,没有限制,不受任何约束的探索程序的各种功能。

软件测试关注重点

根据软件的各种属性,将测试重点划分为:

  1. 输入(软件经过我们的输入,在特定的执行环节下,执行的输出)

    合法输入、非法输入:

    ​ 明确哪些是合法输入,哪些是非法输入。

    ​ 关注程序对于输入的处理、反应。

    ​ 处理输入的三种方式:

    ​ (1)输入筛选器:

    ​ -用来防止非法的输入值传递给程序。

    ​ -列表框、下拉框是常用的输入筛选器。(能够不用用户输入的地方就不要让用户输入,这样可以避免更多的错误出现,减少代码量。)

    ​ -测试关注点:提供的输入选项本身是否正确;是否可以绕过筛选器的屏蔽而进入系统。

    ​ (2)输入检查:

    ​ 使用输出来指导输入选择:

    ​ -首先将所有的输出结果罗列出来;

    ​ -然后确定哪些输入会引发这些输入;

    ​ -该方法可以保证重要的场景都被测试。

  2. 状态

    • 软件的一个状态就是状态空间中的一个点,由它所有内部数据结构的取值唯一确定。

  • 例如,12306网站,首次订票和第二次订同一张票是完全不同的两个状态,应该视为两个不同的用户场景,分别设计不同的测试用例。

  1. 代码路径

  2. 用户数据

    • 创建一个含义特定数据的测试环境,含有的数据应该和软件真实使用的数据尽量相似。

    • 常用的方法是取得用户的数据导入到测试环境中。

  3. 执行环境(测试时,一定要考虑到环境的问题)

    软件运行环境本身也是一种输入源,测试人员在产品发布之前应尽量尝试各种各样的用户环境。

你可能感兴趣的:(软件测试分类、阶段)