欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

软件测试

程序员文章站 2024-03-21 20:59:58
...

软件测试定义:

  • 软件测试是以提高软件质量为目的;
  • 在规定条件下对软件系统进行审核、运行和评估,验证软件系统是否满足需求;

80—20原则

  • 80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会经常出错。

软件测试应该从需求开始;

  • 需求分析–>概要设计—>详细设计—>编码—>单元测试—>集成测试—>系统测试—>验收测试

软件测试需求的分层理解:

  • 用户需求 业务需求 功能需求

测试分析的级别:

  • 普通测试工程师:按照需求点写测试用例
  • 中级测试工程师:按照场景写测试用例
  • 高级测试工程师:分析用户需求

软件测试的对象

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

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

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

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


软件测试分类:

  • 白盒测试(开发工程师):关心软件内部设计和程序实现,主要测试依据是设计文档。

  • 黑盒测试(测试工程师):不关心软件内部,只关心输入输出,主要测试依据是需求文档。

白盒测试:

测试规划:根据程序的内部结构,如语句控制结构,模块间的控制结构以及内部数据结构等进行测试。

优点:能够对程序内部的特定部位进行覆盖测试。

缺点:无法检验程序的外部特性。无法对位实现规格说明的程序欠缺部分进行测试。

方法举例:语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,基本路径覆盖,循环覆盖。

黑盒测试:

测试规划:根据用户的规格说明,即针对命令、信息、报表等用户界面及体现它们的输入数据与输出数据之间的对应关系,特别是针对功能进行测试。

优点:能站在用户的立场上进行测试。

缺点:不能测试程序内部特定部位。如果规格说明有误,则无法发现。

方法举例:基于图的测试,等价类划分,边值分析,比较测试。


软件测试阶段:

单元测试、集成测试、系统测试、验收测试是“从小到大”、“由内而外”、“循序渐进”的测试过程;

软件测试

  1. 单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
  2. 集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设计”又要验证“需求”。
  3. 系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
  4. 验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。

ALPHA和BETA测试

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

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

软件测试阶段对照表

软件测试


如何提高测试效率

  • 减少冗余的测试
  • 减少无价值的测试

测试优先级选择:

测试优先级:

  1. 哪些功能是软件的特色?
  2. 那些功能是用户最常用的?
  3. 如果系统可以分块卖的话,哪些功能块在销售时最昂贵?
  4. 哪些功能出错将导致用户不满或索赔?
  5. 哪些程序是最复杂、最容易出错的?
  6. 哪些程序是相对独立,应当提前测试的?
  7. 哪些程序最容易扩散错误?
  8. 哪些程序是全系统的性能瓶颈所在?
  9. 哪些程序是开发者最没有信心的?

软件测试关注重点:

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

输入 状态 代码路径 用户数据 执行环境

  • 合法输入&非法输入

明确哪些是合法输入、哪些是非法输入。
关注程序对于非常输入的处理、反应。

处理输入的三种方式:

输入筛选器 :用于防止非法的输入值传递给程序。
列表框、下拉框是常用的输入筛选器。
测试关注点: 提供的输入选项本身是否正确;是否可以绕过筛选器的屏蔽而进入系统
输入检查

  • 使用输出来指导输入选择

首先把所有的输出结果罗列出来;
然后确定哪些输入会引发这些输出;
该方法可以保证重要的场景都被测试。

  • 状态
  • -

软件的一个状态就是空间中的一个点,由它所有内部数据结构的取值来唯一确定。
实例:12306网站,首次订票和第二次订同一张票,是完全不同的两个状态,应该视为两个不同的用户从场景,分别设计不同的测试用例。

  • 用户数据
  • -

创建一个含有特定数据的测试环境,含有的数据应该和软件真实使用的数据尽量相似。
常用的方法是取得用户的数据导入到测试环境中。

  • 运行环境
  • -

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

相关标签: 软件测试