什么是软件测试
通过手工或者工具对被测对象进行测试,验证实际结果与预期是否一致软件测试的目的
以最小的人力,财力、物力,找到软件中的缺陷,降低商业风险的目的。测试的原则
测试是去证明软件是有缺陷的,而不是证明软件没有缺陷 没有缺陷是好的--谬论 不需要去做穷尽测试 软件测试需要尽早的介入 测试操作依赖不同的测试环境 缺陷集群现象:一个整体的软件,核心功能只占20%,而大多的缺陷出现在这20%里面。 杀虫剂现象:使用同一条测试案例对软件进行测试的时候,软件可能会产生抗性。测试的级别
需求测试 单元测试 UT:对系统最小的单元(函数,类,模块)进行测试,一般由程序员参与 集成测试 IT:各个单元集成到一起之后进行测试,测试各个模块之间是否正常联通,使用 系统测试 ST:对软件的功能进行测试,测试工程师主要做这一块的测试 验收测试 AT:非测试人员参与,可以有以下几种形式: 内测(Alpha 测试):公司内部人员进行测试,环境受控制,开发人员就在旁边,可以随时修改问题 公测(Beta 测试):真实用户进行测试,环境不受控制,开发不员不在旁边,问题统一收集之后开发人员修改 UAT:熟悉业务逻辑的人员进行进行破坏性测试系统测试的分类
功能测试:按照需求说明书,依次对功能进行测试,测试功能与预期是否一致 兼容性测试:在不同的平台或者硬件环境下对被测对象进行测试,测试实际结果与预期是否一致 安全测试:判断未授权用户是否可以使用授权用户的相关功能 性能测试:对被测试对象进行正常情况、负载情况下进行测试,看否能满足需求系统测试的方法
按照测试对象来分类: 白盒:可以看到软件内部结构(代码),对其进行测试 黑盒:功能测试,看不见内部结构,只能看到外部的内容,比如功能,比如界面 功能测试: 1.界面测试 2.逻辑功能测试 3.易用性测试 4.升级安装及卸载测试 性能: 1.时间性能 2.空间性能 3.压力负载 灰盒:介于两者之间 盒:被测试对象,软件,源代码,需求文档 按照是否执行来分类: 静态:软件本身不运行,测试一些其他的内容,例如:代码,需求文档,说明文档,接口文档 动态:运行软件,对软件进行功能性测试 按照测试手段来分类: 手工:利用手动的形式去进行测试 优点:可以灵活的调整测试的需求 自动化 两种实现形式: 自己编写代码进行测试 使用第三方的工具,进行相应配置,然后再进行测试 优点:可以完成一些高效的手工不能完成的一些测试软件开发过程模型
瀑布模型 流程:需求分析-设计-编码-实现-软件测试-完成-维护 特点: 1 线性模型 2 只需关注后续阶段 优点: 1 开发的每个阶段都很清晰明了 2 只需关注后续阶段 缺点: 1 不适应需求的变化 2 返工量巨大 3 错误的传递和蔓延 快速原型模型: 定义:快速搭建起一个原型,让用户在原型的基础上进行评价,开发人员最终开发出让用户满意的软件产品。 优点: 1.适用需求的变化 缺点: 1.不适和大型项目 螺旋模型: 优点: 1.是一种风险分析的方法体系 2.每一个阶段都要进行一轮风险分析 缺点: 1.技术很难实现 2.一旦分析错误,势必会造成重大的损失软件测试模型
V模型 流程:需求分析-概要设计-详细设计-编码-单元测试-集成测试-系统测试-验收测试 优点: 1 既包含底层测试(单元测试)又包含高层测试(系统测试) 2 开发的每个阶段都很清晰明了 缺点: 1.返工量巨大 2.不适应需求的变化 3.错误的传递和蔓延 W模型(双V模型) 流程: 测试V:验收测试设计-集成测试设计-单元测试设计-单元测试-集成测试-系统测试-验收测试 开发V:需求分析-概要设计-详细设计-编码-集成-实施-交付 优点: 1 测试伴随整个开发周期,测试的不仅仅是程序 需求和设计也要进行测试 2 更早的介入测试,降低修复成本 3 开发的每个阶段都很清晰明了 缺点: 不适合小型企业测试用例
定义:是一个场景。在场景下测试某一个软件,比较预期结果和实际结果之间的差异,从而确定软件是否有bug 8要素: 1 用例编号 2 用例标题 3 用例级别 4 测试项目 5.测试输入 6 执行条件 7 执行步骤 8 预期结果测试用例设计方法
等价类划分法
定义:输入具有代表性的数据的子集 分为两类: 1.有效等价类 ——满足题目需求的 2.无效等价类——不满足题目需求的 步骤: 1.明确需求 2.确定有效类和无效等价类 3.编写测试用例 适用范围: 具有单个输入的功能边界值分析发:
使用范围: 1 题目中有边界的情况 2 往往和等价类划分法一起使用 三个点: 上点:边界上的点 离点:距离边界最近的点 内点:范围内的点 边界值分析法的操作步骤: 1 明确需求 2 确定有效和无效等价类 3 明确题目条件中的边界值 4 编写测试用例判定表法
适用范围: 多个输入和多个输出 输入和输入之间有相互的组合关系,输入和输出之间有相互的制约和依赖关系。 四个组成部分: 条件桩:测试输入 动作桩:测试输出 条件项: 输入取值 动作项: 输出取值 设计步骤: 1.明确条件桩 2.明确动作桩 3.对条件桩进行全组合 4.明确每个组合对应的动作桩 5.设计case因果图法:
解释: 因果图法是一种利用图解法分析输入的各种组合的情况,从而设计测试用例的方法,它适用于检查程序输入条件的各种组合情况。 因:输入 Ci 果:输出 Ei 结果:”0“表示状态不出现, ”1“表示状态出现 恒等:若原因出现,则结果出现,反之。 —— 非 :若原因出现,则结果不出现,反之。 ~ 或 :若几个原因中有一个出现,则结果出现,若几个原因都不出现则结果不出现。 与:若几个原因都出现,则结果才出现,若其中一个原因不出现,则结果不出现。场景法
定义:模拟用户操作软件时的场景。 适用范围: 多个功能间组合测试,在冒烟测试时经常使用 基本流:所有的操作流程都正确 备选流:出现错误的流程 设计步骤: 1 确定基本流程和备选流 2 根据基本路程和备选流确定场景 3 设计case流程图法:
适用范围: 多个功能间的组合测试,冒烟测试常用 流程图法中的要素: 长方形:操作流程 椭圆:开始/结束 菱形:判断 箭头:方向 一条路径就是一条case错误推测法
解释: 利用直觉和经验猜测出可能出错的地方或者类型 适用范围:时间紧,任务急正交发
定义: 使用最小的测试过程集合获取最大的测试测试覆盖率 适用范围: 输入数据或输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用正交法。 正交表概念: 是一种特制的表,ln(m^k) n :测试用例的条数 k :控件的个数 m :每个控件下对应的取值个数 如:L9(3^4) 4:有4个控件 3:每个控件有3个取值 9:需要从测试的组合个数 4因素3水平 正交法的操作步骤: 1 根据需求形成因子状态表 2 确定所采用的正交表 3 将正交表中的数字用文字表示 4 一行就是一条测试用例 工具:allparis allpairs.exe test01.txt > zhengjiao.txt