导图社区 软件测试
软件测试在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。需要学习软件测试的同学可以拿来参考一下!
编辑于2020-01-18 01:27:35软件测试
书名:软件测试(第2版) 主编:佟伟光 副主编:郭霏霏 ISBN 978-7-115-37465-3
软件测试先学要点
软件生存周期
问题的定义
软件开发
软件测试
软件使用与维护
计算机软件
程序
数据
相关文档
三者的集合才是计算机软件
软件工程
定义
应用计算机科学、数学及管理科学等原理开发软件的过程
目标
提高软件的质量与生产率,最终实现软件的工业化生产
软件过程模型
瀑布过程模型
螺旋过程模型
增量过程模型
快速原型过程模型
敏捷过程模型
边做边改
软件测试与软件开发的关系
测试与调试:
测试的目的是显示存在的错误;
调试的目的是发现错误和导致程序失效的原因。修改以修正错误
概述
软件可靠性
系统在特定环境下,在给定的时间内无故障运行的概率
软件缺陷
定义
存在于软件(文档、数据、程序)之中的不希望出现或不可接受的偏差
补充:软件缺陷导致软件在运行与某一特定条件是出现软件故障,软件缺陷被激活
与之相关的概念
软件错误
定义:在软件生存期内的不希望出现或不可接受的人为错误。其导致软件缺陷的产生
软件故障
定义:软件在运行过程中产生的不希望出现或不可接受的内部状态
对软件故障若无适当措施加以处理,就会导致软件失效
软件失效
软件在运行时产生的不希望出现或不可接受的外部行为结果
特征
看不到
看到但抓不到
产生原因
软件产品说明书(56%)
设计(27%)
代码(7%)
其他(10%)
软件缺陷越早发现,修复成本(随发现时间呈几何级数增长)越低
测试用例
为特定目的而设计的一组测试输入、执行条件和预期的结果
测试用例是执行测试的最小实体
软件测试
软件测试定义
定义1:为了发现错误而执行程序的过程
定义2:根据软件开发各阶段规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程
测试对象
需求规格说明书
概要设计说明书
详细设计说明书
源代码
关键问题
测试由谁来执行
测试什么
什么时候进行测试
怎样进行测试
软件测试目标
发现至今尚未察觉的错误
测试是一个程序的执行过程,其目的在于发现错误
一个好的测试用例很可能会发现至今尚未察觉的错误
一个成功的测试是发现至今尚未察觉的错误
是否满足需求
软件测试分类
按测试方式
静态测试
动态测试
按测试方法
白盒测试
黑盒测试
灰盒测试
按测试过程
单元测试
集成测试
系统测试
验证测试
按测试目的
测试的周期性
测试->改错->再测试->再改错
过程模型
V模型
W模型
X模型
H模型
执行标准
软件测试基本原则
尽早测试
全面测试
全过程测试
独立的、迭代的测试
Pareto原则
80%和20%
对测试出的错误结果一定要有确认的过程
制定严格的测试计划
测试需要终止,不可能完全测试
注意回归测试的关联性
一切测试过程文档需要妥善保存
测试停止标准
第一类标准:超过预定测试时间
第二类标准:执行了所有的测试用例
第三类标准:使用特定的测试用例设计方案作为判断停止基础
第四类标准:指出停止的具体要求
第五类标准:根据单位时间内查出故障的数量判定
软件代码质量度量
功能性
可靠性
易用性
效率
可维护性
Line复杂度
Halstead复杂度
McCabe复杂度
可移植性
软件产品的组成
客户需求
产品说明
设计文档
构架
数据流示意图
状态变化示意图
流程图
注释代码
测试文档
测试计划
测试用例
软件测试报告
归纳、统计和总结
……
测试人员基本素质
技能要求
业务知识
计算机专业知识
软件编程知识
网络、操作系统、数据库、中间件等知识
测试专业知识
用户知识
素质要求
责任心,自信心,专心,细心,耐心
具有较强的沟通和交流能力
团队合作精神
软件测试计划
进行复杂性分析
作用
步骤
问题
标准
基本技术
黑盒测试
定义
数据驱动测试
不考虑内部逻辑结构,只针对软件界面和软件功能在程序接口处进行的测试
测试对象
软件功能
软件界面
测试策略(综合使用各方法)
P68
测试依据
规格说明书
用户手册
分类
功能测试
等价类划分
划分方法
按区间
按数值
按数值集合
按限制条件
按限制规则
按处理方式
步骤
确定等价类(有效等价类和无效等价类),建立等价类表,列出所有划分出的等价类
确定测试用例
每个等价类规定一个唯一的编号
设计一个新的测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类;重复这一步骤,直到所有有效等价类被覆盖为止
设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这一步骤,直到所有的无效等价类被覆盖为止
分类
标准等价类测试
健壮等价类测试
区别:是否考虑无效等价类
边界值分析法
定义
对输入或输出的边界值进行测试的方法
使用原因
大量的故障往往发生在输入定义域或输出值域的边界上
使用步骤How
首先确定边界情况
然后选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据
分类
标准边界值分析法
对含n个变量的程序,会产生4*n+1个测试用例
健壮性边界值分析法
对于含n个变量的程序,会产生6*n+1个测试用例
因果图法
定义
适合情况
步骤
判定表法(决策表法)
相关概念
步骤
错误推测法
概念
场景法
正交试验法
功能图法
非功能测试
强度测试
性能测试
安全测试
安装与卸载测试
配置测试
兼容性测试
故障修复测试
使用性能测试
帮助菜单及用户说明测试
白盒测试
以程序的内部逻辑为基础的一种测试技术
基本概念
控制流图
环路复杂性(环形复杂度)
V(G)=控制流图中的区域数
V(G)=E-N+2,其中,E为控制流图的边数,N为图的结点数
V(G)=P+1,其中P为控制流图中的判定结点数
分类
静态测试
代码检查法
静态结构分析法
代码质量度量
动态测试
程序插桩
逻辑覆盖
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
条件组合覆盖
基本路径测试
操作过程
画程序的控制流图
计算程序的环形复杂度
确定独立路径集合(导出独立路径集)
为每一条独立路径设计测试用例
路径表达式(控制流图表示)
弧a和弧b相乘
弧a和弧b相加
独立路径
概念
循环测试
测试策略:P55
软件测试过程
V型图表示软件开发与软件测试对应关系:P73
软件测试充分性五原则
单调性
非复合性
非分解性
复杂性
回报递减性
测试过程(IEEE定义)
单元测试
定义
主要任务
模块接口测试
模块局部数据结构测试
模块中所有独立执行路径测试
各种错误处理测试
模块边界条件测试
测试环境
被测模块
辅助模块
驱动模块
桩模块(模拟子模块)
集成测试
定义
主要任务
实施方案分类
非增量式
增量式
自顶向下增量式
自底向上增量式
其他
三明治集成测试
核心系统先行集成测试
高频集成测试
?确认测试
系统测试
验收测试(验证测试)
软件测试项目管理
测试报告与测试评测
测试用例设计
面向对象软件测试
面向对象软件的特点及其对测试的影响
特点
封装性
继承性
多态性
不同层次及及其特点
方法测试
类测试——面向对象单元测试
类簇测试——面向对象的集成测试
系统测试——面向对象的系统测试
面向对象软件测试模型
面向对象分析的测试(OOA)
面向对象设计的测试(OOD)
面向对象编程的测试(OOP)
Web应用测试
测试目标
保证程序开发的正确性和有效性
测试组成
性能测试
主要术语
并发用户
用户并发数量
请求响应时间
事务响应时间
吞吐量
TPS
点击率
资源利用率
虚拟用户
请求成功率
性能指标
性能通用指标
Web服务器指标
数据库服务器指标
种类
压力测试
负载测试
强度测试
数据库容量测试
预期指标的性能测试
独立业务性能测试
组合业务性能测试
疲劳强度性能测试
网络性能测试
大数据量测试
服务器性能测试
一些特殊的测试,主要是配置测试
规划设计
需求分析
整体规划
计划制定
功能测试
链接测试
表单测试
Cookies测试
设计语言测试
数据库测试
数据库错误
数据一致性错误
数据输出错误
相关性功能检查与测试
界面测试
测试内容
目标
安全测试
安全性
应用安全测试
应用级安全
传输级安全
操作系统安全
浏览器的漏洞
客户端兼容性测试
平台测试
浏览器测试
软件测试自动化
软件测试自动化基础
定义
作用和优势
产生可靠的系统
改进测试工作质量
提高测试工作效率
引入
实施软件测试自动化面临的问题
引入条件
实施过程
熟悉、分析测试用例
把已有的测试用例归类写成比较简单的测试自动化计划书
开始自动化测试程序的编写
尽量用“数据驱动”来将测试用例覆盖率提高
将测试用例写成自动化测试程序
不断地完善自动化测试系统
主流软件测试工具
白盒测试工具
黑盒测试工具
性能测试工具
测试管理工具
移动端软件测试
使用场景特点
屏幕小
时间碎片化
输入困难化
容量有限
……
卸载测试
升级测试
启动页