软件测试
软件测试定义:
- 软件测试是以提高软件质量为目的;
- 在规定条件下对软件系统进行审核、运行和评估,验证软件系统是否满足需求;
80—20原则
- 80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会经常出错。
软件测试应该从需求开始;
- 需求分析–>概要设计—>详细设计—>编码—>单元测试—>集成测试—>系统测试—>验收测试
软件测试需求的分层理解:
- 用户需求 业务需求 功能需求
测试分析的级别:
- 普通测试工程师:按照需求点写测试用例
- 中级测试工程师:按照场景写测试用例
- 高级测试工程师:分析用户需求
软件测试的对象
软件是由文档、数据以及程序组成的。
测试应该是对文档、数据以及程序进行的测试。
60%以上的软件错误并不是程序错误,而是分析和设计错误。
测试概念扩大化,提倡软件全生命周期测试的理念。
软件测试分类:
白盒测试(开发工程师):关心软件内部设计和程序实现,主要测试依据是设计文档。
黑盒测试(测试工程师):不关心软件内部,只关心输入输出,主要测试依据是需求文档。
白盒测试:
测试规划:根据程序的内部结构,如语句控制结构,模块间的控制结构以及内部数据结构等进行测试。
优点:能够对程序内部的特定部位进行覆盖测试。
缺点:无法检验程序的外部特性。无法对位实现规格说明的程序欠缺部分进行测试。
方法举例:语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,基本路径覆盖,循环覆盖。
黑盒测试:
测试规划:根据用户的规格说明,即针对命令、信息、报表等用户界面及体现它们的输入数据与输出数据之间的对应关系,特别是针对功能进行测试。
优点:能站在用户的立场上进行测试。
缺点:不能测试程序内部特定部位。如果规格说明有误,则无法发现。
方法举例:基于图的测试,等价类划分,边值分析,比较测试。
软件测试阶段:
单元测试、集成测试、系统测试、验收测试是“从小到大”、“由内而外”、“循序渐进”的测试过程;
- 单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
- 集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设计”又要验证“需求”。
- 系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
- 验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。
ALPHA和BETA测试
大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试。
目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。
软件测试阶段对照表
如何提高测试效率
- 减少冗余的测试
- 减少无价值的测试
测试优先级选择:
测试优先级:
- 哪些功能是软件的特色?
- 那些功能是用户最常用的?
- 如果系统可以分块卖的话,哪些功能块在销售时最昂贵?
- 哪些功能出错将导致用户不满或索赔?
- 哪些程序是最复杂、最容易出错的?
- 哪些程序是相对独立,应当提前测试的?
- 哪些程序最容易扩散错误?
- 哪些程序是全系统的性能瓶颈所在?
- 哪些程序是开发者最没有信心的?
软件测试关注重点:
- 根据软件的各种属性,将测试重点划分为:
输入 状态 代码路径 用户数据 执行环境
- 合法输入&非法输入
明确哪些是合法输入、哪些是非法输入。
关注程序对于非常输入的处理、反应。
处理输入的三种方式:
输入筛选器 :用于防止非法的输入值传递给程序。
列表框、下拉框是常用的输入筛选器。
测试关注点: 提供的输入选项本身是否正确;是否可以绕过筛选器的屏蔽而进入系统
输入检查
- 使用输出来指导输入选择
首先把所有的输出结果罗列出来;
然后确定哪些输入会引发这些输出;
该方法可以保证重要的场景都被测试。
- 状态 -
软件的一个状态就是空间中的一个点,由它所有内部数据结构的取值来唯一确定。
实例:12306网站,首次订票和第二次订同一张票,是完全不同的两个状态,应该视为两个不同的用户从场景,分别设计不同的测试用例。
- 用户数据 -
创建一个含有特定数据的测试环境,含有的数据应该和软件真实使用的数据尽量相似。
常用的方法是取得用户的数据导入到测试环境中。
- 运行环境 -
软件运行的环境本身也是一种输入源,测试人员在产品发布之前应尽量尝试各种各样的用户环境。
上一篇: mysql数据库及表信息,字段查询
下一篇: MSSQL 实现Group内字段的拼接