课程目标
目录
一、了解软件测试的含义
- 早期定义:软件测试是对程序能够按预期运行建立起的一种信心。—— Bill Hetzel,1973
- 经典定义:测试是为发现错误而执行的过程。——Myers,1979
- IEEE定义(ISO/IEC/IEEE 在29119规范) 国际电子电气工程师协会:
使用人工或者自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
二、软件测试的测试对象
- 软件概要设计
- 软件详细设计
- 软件运行环境
- 可运行程序
- 软件源代码
- 软件需求
- 软件方方面面以及软件周期……
三、软测五大要素以及两个目标
五要素:质量、人员、资源、流程和技术。
俩目标:测试覆盖率、测试效率。
四、软件测试所遵循的基本七原则
- 测试显示缺陷的存在,但不能证明系统不存在缺陷。
- 穷尽测试是不可能的,应设定及时终止的条件。
- 软件测试应尽早进行,尽量减少缺陷修复成本。
- 缺陷具备群集特性,某模块缺陷发现得多代表此处缺陷越是密集。
- 杀虫剂悖论,不能长时间使用单一的测试方法、测试用例,应随机应变。
- 二八原则,用80%时间花在整个系统中20%的重点模块中,以增加效率使资源配置更佳。
- 测试活动依赖于测试背景,如金融软件更多关注安全模块、电信软件对信的模块很重视。
五、介绍专用词汇
1.TMM
TMM是软件测试能力成熟度模型,等级区间分为混沌级,初始级,提高级,优化级,中文全称为软件测试能力成熟度模型。
2.TDD(Test-Driven Development)
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
TMM即软件能力成熟度模型, Test Maturity Model,它描述了测试过程, 是项目测试部分得到良好计划和控制的基础,它的主要目的在于帮助企业组织改进和评估其软件测试过程。TMM是一个采用分级方法确定软件组织的软件测试能力成熟度的参考模型,可以指导软件组织提高其软件测试能力。TMM将测试划分为五个级别,分别是:初始级、阶段定义级、集成级, 管理和测量级.
测试驱动开发(TDD):要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行;有助于编写简洁可用和高质量的代码,并加速开发过程.——imoocer
3.探索式测试理论
六、基础问题知识了解
Q1、软件测试有哪些分类?分别又是什么概念?
A1:有四种软件测试,分别是
- 单元测试:对软件中的最小可测试单元进行检查和验证。
单元测试的原则:
1.尽可能保证各个测试用例都是互相独立的。
2.单元测试一般由代码开发人员进行。
单元测试的益处
1.能尽早发现缺陷
2.有利于重构
3.简化集成
4.文档
5.用于设计
单元测试的限制
1.不可能覆盖所有的执行路径,所以不可能保证捕捉到所有的缺陷
2.每一行代码,一般需要3~5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。
常见单元测试框架:
以Xunit的形式呈现:Junit(Java)、nunit(.net)、PHPUnit(PHP)、CPPUnit(C++)
- 集成测试:在单元测试的基础上,测试在将所有软件单元按照概要设计规格说明的而要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标以及要求的活动。
集成测试的主要实施方案:
1.Big Bang
2.自顶向下
3.自顶向下(常用)
4.核心系统集成
5.高频集成(持续集成、周期集成)
集成VS单元
1.测试对象不同 ①集成测试模块间接口 ②单元测试最小可测试单位
2.测试依据不同 ①集成测试是概要依据 ②单元测试是详细依据
3.测试方法不同 ①集成测试是模块接口的集成 ②单元测试只关心单元的类
- 系统测试:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列有效地测试,以发现软件潜在的问题,保证系统的正常运行。(企业测试工程师岗位主要负责系统测试)
关注点
关注系统本身的使用
关注系统与其他相关系统间的连通
关注系统在不同使用压力下(大内存、cpu使用率高、温度等)的表现
关注系统在真实环境下的表现
系统VS集成
①测试对象
集成测试:由通过单元测试的各个模块所集成的构件
系统测试:出软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统
②测试时间:
集成测试:介于单元测试和系统测试之间的测试
系统测试:位于集成测试之后
③测试内容:
集成测试:各个单元模块之间的接口
系统测试:整个系统的功能和性能
④测试角度
集成测试:偏于技术角度的验证
系统测试:偏于业务角度的验收
- 验收测试:也称交付测试。针对用户和需求、业务流程的正式测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
细分测试
1.用户验收测试(使用前)
2.运行验收测试(运维)
3.合同和规范验收测试
4.alpha测试(用户+开发者环境)
5.Beta测试 (脱离开发者环境)
Q2、何时开始测试?测试方案又如何设计?
A2:
Q3、测试流程是如何的?发现BUG,如何提交?如何正确书写并提交报告?
A3:
Q4、现在流行的自动化是什么意思?如何做自动化测试?
A4: