目录
基础概念
1、软件测试的概念
简单来说,就是在软件中找bug
具体概念:检查软件产品是否满足用户的需求
2、软件测试的目的
以最少的人力,物力,财力找到软件潜在的缺陷和错误
3、基本要求
外观界面测试+功能测试+易用性测试+性能测试+兼容性测试+安全性测试
外观界面测试:界面排版符合要求,窗口缩放等
功能测试:产品是否符合客户要求
易用性测试:产品使用是否符合正常逻辑,是否方便用户操作
性能测试:产品性能检测
兼容性测试:产品在不同平台、不同版本、不同系统等是否可以正常使用
安全性测试:用户信息加密存储等
4、测试的工作流程
- 需求分析
- 测试计划和测试方案
- 测试用例制定
- 测试用例执行
- 评估阶段,测试报告
1)需求分析:阅读需求文档,明白需求内容,分析需求的测试点。参与需求评审来排除不合理的需求
2)制定测试计划和测试方案:
测试计划:测试整个项目的安排(人力,时间等),测试范围,测试策略,测试地点,风险评估,风险规避等。
测试方案:测试目标,测试工具,测试方法,测试重点等
3)测试用例的设计与执行
4)测试项目的评估,撰写测试报告
5、开发模型
1、瀑布模型
瀑布模型是最原始的开发模型
1、计划时期:进行项目整体分析,研究需求的正确性,可行性
2、开发时期:针对项目进行需求分析,针对需求进行软件设计和代码编写
3、运行时期:针对写出来的项目进行测试,测试通过后发布,上线之后也要进行维护
a)特点:
1、一个过程执行结束之后,才可以继续执行下一步,也就是阶段之间具有顺序性和依赖性
2、一个阶段结束之后才可以继续执行下一步,每一个阶段都设计了测试点,保证了每一个阶段的质量
b)优点:
1、每一个阶段设置了检查点
2、此阶段完成之后,就只需要关注后序阶段
c)缺点:
不支持需求模糊或者需求经常变动的项目
2、增量模型
将软件看作一系列相互联系的模型的增量,每次完成一个增量。
将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
a)特点:可以根据功能划分模块
b)优点:
1、开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
2、将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
3、快速模型
快速建立起可以在计算机上运行的程序。
即先用相对少的成本,较短的周期开发一个简单的、但可以运行的系统原型向用户演示或让用户试用,以便及早澄清并检验一些主要设计策略,在此基础上再开发实际的软件系统。
4、螺旋开发模型
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
5、迭代开发模型
开发出来一个功能之后,在此功能上迭代,增加新的功能
迭代开发模型不可并行,增量模型各个功能可以并行
6、敏捷开发模型
简单设计,快速实现。
敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
在敏捷开发中,软件项目在构建初期被切分成多个子系统,各个子系统的成果都经过测试,具备可视,可集成和可运行使用的特征。换言之,就是把一个大的项目分为多个相互联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
6、测试模型
1、V模型
缺点:测试介入太晚,如果需求出现问题,之前的工作就可能要做出很大的改正。
优点:每一个阶段都清晰明了,便于控制每一个阶段
2、W模型
双V模型,测试伴随着项目始终。
7、软件测试的分类
1、测试开发的阶段
- 单元测试:编码完成后运行 (比如写完一个方法,一个类,检测这个内容能否正确运行) 参与人员:开发人员 白盒测试人员
- 集成测试:单元测试结束之后,主要检测模块和模块之间的内容测试 参与人员:开发人员 白盒测试人员
- 系统测试:集成测试结束之后,检测整个项目 参与人员:开发人员 白盒测试人员 黑盒测试人员
- 验收(交付)测试:系统测试之后,可以内测(α测试)和公测(β测试)
2、是否覆盖源码
1、黑盒测试没有源码;包括功能测试和性能测试
功能测试主要包括:
- UI测试:检验界面是否符合要求,界面排版,窗口缩放等
- 功能测试:主要功能是否符合预期
- 兼容性:是否支持各种平台、各种系统、各种版本;软件自身的新、旧版本是否可以兼容;对其他软件的兼容性;数据之间的兼容性
- 文档测试:检测需求文档是否正确
- 易用性测试:是否符合用户的平时使用习惯
- 安装和卸载测试:软件的安装和卸载是否正常
性能测试:
- 请求的响应时间(响应速度)
- 对资源的利用(CPU,内存大小)
- 稳定性测试(服务器稳定性,程序稳定性)
- 负载测试(服务器的负载容量如果是5万,就要看能不能扛到5万的并发访问)
- 压力测试(项目可以正常运行时,到达不会崩溃的极限)
2、白盒测试有源码
- 语句覆盖
- 判断覆盖
- 条件覆盖
- 路径覆盖
就是保证 每一种情况 每一个语句 都会被考虑到
3、灰盒测试:不是完全的黑盒,白盒 介于两个之间。
关心输入和输出,同时可以考虑输入输出过程内程序运行的状态
8、测试用例
为了测试某一个功能,编制的一组输入数据
测试用例基本要素:1、测试用例编号 2、测试项目(测试模块) 3、前置条件 4、测试输入 5、预期输出 6、操作步骤 7、测试用例标题 8、级别
9、测试用例设计方法
1、等价类
在输入数据穷举时,测试数据才可以说是完美的。然而,穷举是无法实现的,使用等价类划分,选取一类中的某一个数据,代表这一类
比如:程序规定了用户名长度。用户注册时输入用户名,就要符合规范。
如果长度规定在[4,8],那么有效等价类 长度就是4 5 6 7 8的不包含特殊字符的字符串,无效等价类就是其他数字长度的字符串或者包含特殊字符的字符串
长度为4的有效等价类,就可以选取数据 ’1234‘ 作为所有长度为4的用户名的代表,输入结果作为所有长度为4的用户名的结果
测试用例编号 | 测试模块 | 前置条件 | 测试输入 | 预期输出 | 操作步骤 | 测试用例标题 | 级别 | 测试人员 | 测试结果 |
1 | 注册 | 网络正常 | 10000 | 注册成功 | 1、输入此用户名和符合要求的密码"123" 2、点击注册 | 用户名注册长度检测 | 重要 | 张三 | 通过 |
2 | 注册 | 网络正常 | 100 | 注册 不成功 | 1、输入此用户名和符合要求的密码"123" 2、点击注册 | 用户名注册长度检测 | 重要 | 张三 | 通过 |
2、边界值
选择数据的边界进行测试
3、因果图法
使用因果图描述 不同输入和输出之间的对应关系
4、判定表
将因果图的结果使用表格表示
5、正交表
使用最少的测试过程集合获取最大的测试覆盖率。
当条件过多,产生的组合就可能有n种。(比如A,B两个条件,可能组合就有AB同时满足,A满足B不满足,B满足A不满足,AB都不满足),这时是很难覆盖到每一个组合情况的。
测试方法是从大量的测试情况中找出具有代表性的测试情形,利用正交表,结合等价类划分、边界值等方法来编写测试用例。
覆盖到每一个测试用例 有 3*3*3*3种可能性。我们使用选取少数排列组合的测试结果,表示测试的结果
6、场景法
设置一个场景,走完所有的流程
7、错误猜测法
根据经验,重点测试容易出错的位置
10、软件缺陷报告
包括测试过程中的bug,没有满足用户需求的点等