一、场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。当拿到一个测试任务时,我们并不是先关注某个控件的边界值、等价类是否满足要求,而是先要关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。当业务流程测试没有问题,也就是该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对控件进行测试。
在冒烟测试时也主要采用场景法进行测试进行测试。
1.1 场景法中重要的概念
(1)基本流:按照正确的业务流程来实现的一条操作路(也就是模拟正确的操作流程);
(2)备选流: 导致程序出现错误的操作流程(So,模拟错误的操作流程)。
给大家截了个图,可以参考一下:
1.2 场景法的基本设计步骤
(1)根据说明,描述出程序的基本流及各项备选流;
(2)根据基本流和各项备选流生成不同的场景;
(3)对每一个场景生成相应的测试用例。
案例:
使用场景法设计ATM机取款功能的测试用例
步骤一:根据说明,描述出程序的基本流及各项备选流;
步骤二:根据基本流和各项备选流生成不同的场景
步骤三:对每一个场景生成相应的测试用例,例如:
大家可以试着编写更好的测试用例,在之后,我也会相继给大家写一些或上传比较好的用例,我认为还是可以的\(^o^)/~
二、状态图
给大家展示的状态图转换法案例:货币转换器
2.1.1案例演示
输入人民币金额,选择要转换的国家,再输入汇率,即可计算所输入的人民币等价的货币金额。
用户的操作可能是:
输入人民币金额->选择国家->输入汇率->点击“计算”按钮;
选择国家 ->输入汇率->输入人民币金额->点击“计算”按钮;
输入人民币金额->选择国家->点击“清除”按钮。。。
2.1.2两个重要的概念
1、软件的状态
软件运行到某个时刻所处的情况
例如:
(1)刚刚启动处于“空闲”状态;
(2)输入人民币金额以后变为“人民币金额已输入”状态;
(3)所有输入正确完成后,点击“计算”按钮,程序应该处于“显示等价金额”状态;
(4)点击“清除”按钮后处于清除状态。
2、输入的动作
用户向软件进行的操作
例如:
(1)输入人民币金额
(2)点击某个国家单选按钮
(3)点击“计算”按钮
2.2 状态转换图法
找出软件所有的状态以及导致这些状态发生变化的所有输入动作,进而用图形的方法把相关联的输入动作和状态联系在一起,真实模拟用户的操、作顺序流程。
2.2.1 状态转换图法的核心
(1)软件所有的状态
(2)导致状态发生变化的所有输入动作
2.2.2 使用状态转换图法的步骤
(1)找出程序的所有输入动作,
并进行编号列出用户能够向软件输入的每一个独立的动作,并进行编号;
(2)找出程序的所有状态,
可以认为用户每输入一个动作就会使程序的状态发生变化,如果不能决定是否为一个独立状态,可以先假设“是”
(3)找出什么动作会导致什么状态发生,画出状态转换图(一般情况下这是一个反复的过程);
(4)把相关联的动作和状态联系起来,设计测试用例。
例子:
使用状态转换图法分析货币转换器程序
步骤一:找出程序的所有输入动作,并进行编号;
步骤二:找出程序的所有状态
可以认为用户每输入一个动作就会使程序的状态发生变化
1.系统启动后处于空闲状态
2.人民币金额已输入状态
3.国家已选择状态
4.国家已选择、汇率已输入状态
5.人民币金额已输入、国家已选择状态
6.所有输入已完成状态
7.显示等价金额状态
8.错误提示状态
(1)人民币未输入或输入错误;
(2)国家未选择错误;
(3)汇率未输入或输入错误。
9.清除状态
把清除状态看做空闲状态也可以
10.退出状态
步骤三:找出什么动作会导致什么状态发生,画出状态转换图(一般情况下这是一个反复的过程)
第1轮、将所有可能的输入单独加载到被测系统的空闲状态,得到新的状态
第2轮、将所有可能的输入单独加载到上一步得到的每一个状态中,再得到新的状态。
第3轮、1.先找到主要动作和状态
第3轮、2.先找到次要动作和状态
第4轮、1.先找主要动作和状态
第4轮、2.先找次要动作和状态
第5轮
步骤四:根据状态转换图,把相关联的动作和状态联系起来,设计测试用例
(1)先写主要操作(功能比较重要或用户操作比较频繁的动作),后写次要操作。
(2)为了减少测试用例数量,一条测试用例最好沿着状态转换图的一条路径编写完。
以此类推,写出所有测试用例。。。
最后给大家总结了状态转换图法小知识点:
(1)每种状态至少访问一次。无论用什么方法,每一种状态都必须测试。
(2)测试看起来最常见最普遍的状态转换。可以根据产品说明书,通过与客户、开发人员沟通,了解哪些操作更常用、更重要。
(3)测试状态之间最不常用的分支。这些分支是最容易被产品设计者和程序员忽视的。
(4)测试所有错误状态及其返回值。错误没有得到正确处理、错误提示信息不正确等情况是常有的。