一、软件测试基础
什么是软件测试
测试含义: 以检验产品是否满足需求为目标
经典定义: 在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。
软件测试目的
想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
软件测试原则
所有的软件测试都应追溯到用户需求
应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭
完全测试时不可能的,测试需要终止
测试无法显示软件潜在的缺陷
充分注意测试中的集群现象
程序员应避免检查自己的程序
尽量避免测试的随意性
软件测试对象
软件是由文档、数据以及程序组成,那么软件测试就应该是对软件形成过程中的文档、数据以及程序进行的测试,而不仅仅是对程序进行测试。(程序--需求--设计)
需求分析 需求规格说明书
概要设计 概要设计说明书
详细设计 详细设计说明书
软件编码结束后,对编写的每一个程序模块进行测试,称为单元测试
在模块集成后,对集成在一起的模块组件进行测试,称为集成测试
在集成测试后,需要检测与证实软件是否满足软件需求说明书中的规定要求,称为确认测试;
将整个程序模块集成为软件系统,安装在运行环境下,对硬件、网络、操作系统及支撑平台构成的整体系统进行测试,称为系统测试
软件测试分类
按开发阶段划分
单元测试-----集成测试-----确认测试-----系统测试-----验收测试
按测试实施组织划分
开发方测试(α测试)
用户测试(β测试)
第三方测试
按测试技术分类
白盒测试: 对程序内部结构进行分析,检查是否所有的结构与路径都是正确的;(单元测试)
黑盒测试:在程序界面处进行测试,通过软件的外部表现来发现错误和缺陷;(系统测试&确认测试)
灰盒测试:关注输出对于输入的正确性,同事也关注内部表现;(集成测试)
或者
静态测试:对软件中的需求说明书、设计说明书、程序源代码等进行非运行的检查,包括:走查、符号执行、需求确认等;
动态测试:通过人工或者使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。
软件测试过程模型
V模型、W模型、H模型、其他模型(X模型、前置测试模型等)
1. V模型
V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段隐藏的问题一直到后期的验收测试才被发现。
2. W模型
V模型的局限性在于没有明确地说明早期的测试,不能体现“尽早地和不断地进行软件测试”。
在V模型中增加软件各开发阶段应同步的测试,被演化为W模型;因为实际上开发是V,测试也是V,基于V&V原理的W模型示意图如下:
3. H模型