软件测试基础

软件只是能用还不够,必须要好用;不是人适应软件,而是软件适应人

  • 软件测试是什么
  • 软件测试的原则
  • 软件测试的过程
  • 软件测试的技术

什么是软件测试

测试是为了寻找错误而运行程序的过程。如果一个测试用例发现了一个至今未发现的错误,那么,该测试用例就是一个好的测试用例;如果一次测试发现了一个至今未发现的错误,那么,这次测试就是成功的。——G.Myers

软件测试交付:软件测试报告

测试的目的与任务

软件测试实在软件投入运行前规格说明和源程序进行查错和纠错的过程

(查错:发现程序错误,暴露程序中潜在的错误。纠错:定位纠正错误,消除故障,保证程序可靠运行)

【目的】:发现并派出软件中潜藏的错误,提高软件质量

测试用例=期望结果+测试数据

测试数据与程序进行测试,产生测试结果,测试结果与期望结果结合进行评价产出错误信息,进行纠错就可以产生改正信息以完成测试

 

软件的可测试性

软件的可测试性表示一个计算机程序能被测试的容易程度

良好的测试的4个属性

  • 一个好的测试是发现错误的可能性很高
  • 一个好的测试不冗余
  • 一个好的测试应该是“最佳品种”
  • 一个好的测试既不太简单,也不太复杂

测试的特性

挑剔性

误解:测试是破坏性

抱着证明程序是有错的目的取测试,才能把程序中潜在的大部分错误找出来

复杂性

误解:测试是简单的工作

设计测试用例是一项需要细致和高度技巧的工作

在设计用例的时候需要考虑各种可能的情况

不彻底性

名言:测试只能证明错误存在,不能证明错误不存在

穷举测试要么根本无法实现,要么工作量太大,在实践上行不通

一次实际测试都是不彻底的,不能够保证测试后的程序效果

经济性

工程原则:不追求最好,只要求足够好

需要仔细的选择测试用例,在代价尽可能小的情况下,发现足够多的问题

 

软件测试的原则

  • 所有的测试都应该追溯到用户的需求【最严重的错误,软件不符合用户的需求】
  • 尽早指定测试计划
  • 将Pareto原则应用于软件测试。(二八原则)
  • 测试应该由小到大
  • 穷举测试是不可能的
  • 用独立的第三方测试软件(不让开发人员测试)

(大)概要设计(总体)——>集成测试计划

(小)详细设计(局部)——>单元测试计划

先进行单元测试,再进行集成测试,确保局部成功后再进行整体拼接

软件测试过程与开发过程的对应关系

SRS—>概要设计说明—->详细设计说明—–>源程序代码(存在很多模块单元)—–>单元测试—->集成测试(SDS设计信息+已测试的模块)—->确认测试(SRS软件需求+已集成的软件)——->系统测试(系统的其他元素)———>可运行的系统

软件的开发过程是自顶向下逐步求精的过程

测试过程是自底向上逐步集成的过程

软件测试的信息流

【软件配置】【测试配置】【测试工具】—–>【测试】

【测试】【预期结果】——>【结果分析】

  • 软件配置:软件的需求规格说明,软件设计规格说明,源代码等
  • 测试配置:测试计划,测试用例,测试驱动程序,测试桩等
  • 测试工具:驱动测试的测试数据库,测试结果分析程序等
单元测试

又称为模块测试

目的:发现各模块(构建)内部可能存在的差错

内容:

  1. 模块接口测试:测试通过被测模块的数据流
  2. 局部数据结构测试:测试数据类型的说明,初始化,默认值
  3. 路径测试:测试重要执行的路径(基本路径和循环)
  4. 错误处理测试:测试模块的错误处理能力
  5. 边界测试:测试数据流,控制流的边界值

测试环境

  1. 驱动模块:相当于被测模块的主程序
  2. 桩模块:代替被测模块所调用的子模块
集成测试

将经过单元测试的各模块组装成一个系统,根据概要设计说明书对各模块进行测试,发现与接口有关的错误

目的:将经过单元测试的模块构成一个设计所要求的软件结构

非增值方式:

  • 首先将系统中的各个模块逐个单独进行测试,然后一次集成

增值方式

  • 逐次将一个个未测试的模块与已测试的模块(或子系统)组成程序包,将这个程序包作为一个整体进行测试,通过增值逐步集成,又称渐增式测试法
  • 自顶向下的增值方法(广度优先策略,深度优先策略)
  • 自底向上的增值方法(模块合并集成方法)
  • 混合增值测试(回归测试,莽撞测试)
确认测试

α测试,β测试

动机:如果软件产品是为了很多用户开发的,让每个用户都进行正式的验证测试

α测试:

由一个用户再开发环境下进行测试,也可以是公司内部的用户再模拟实际操作环境下进行受控测试,开发者在现场测试,受控制软件

β测试:

软件的多个用户再一个或多个用户的实际使用环境下进行测试,开发者通常不在测试现场,β测试时开发者无法控制的环境下进行的软件现场应用。

系统测试

将通过确认测试的软件作为整个计算机系统的一个元素,与其他的系统元素(如硬件,信息等)结合在一起进行测试。

系统测试,超出软件工程范围

 

软件测试的技术

测试技术就是帮助软件测试人员设计和选择测试用例的。

测试技术分类:

根据程序是否执行分类

  • {静态测试}(程序不执行){计算机辅助测试(自动方式),代码评审(人工方式)}
  • {动态测试}(程序执行){黑盒测试(测试程序功能),白盒测试(测试程序结构),随机测试(依靠直觉,经验),特定测试}

人工评审的方式:代码会审,走查,办工桌检查


0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注