在遇到有事务流或由于某种条件成立导致状态改变的软件项目时,如何进行测试用例的设计就比较麻烦。以前所讲的各种方法,每个被测对象之间是没有相互的关联或数据流向发生,遇到这样的事务流软件就要考虑用其他方法进行用例的设计了。
以前在讲操作系统原理时,曾经提到过进程的状态转换。我们看以下图形:
当进程从就绪队列中被进程调度算法选中的时候,它就被调进CPU里执行,这个时候进程的状态由就绪状态变换到执行状态;而当该进程执行完毕的时候,是由于所分配的时间片用完,进程调度算法又回到就绪队列里重新提取。当进程执行到一定阶段时,由于发生I/O事件,例如:外部数据的输入或运行的中间数据的输出,这时候CPU必须进行中断处理,那么该进程就由执行状态转变成阻塞状态,等待事件的完成;当事件完成后,进程从阻塞状态就转换成就绪状态,等待进程调度算法的再一次选中。
以上是操作系统中进程的状态迁徙过程。
我们以QQ登录界面为例子,用来讲解状态图法设计测试用例。
(一)通过对QQ登录界面的分析,我们看到有4个输入项:
ip1:输入帐号
ip2:输入密码
ip3:点击“登录”按钮
ip4:点击“关闭”按钮
(二)那么从QQ启动界面开始,进行状态迁徙分析:
第1轮状态图:
第2轮状态图:
第3轮状态图:
(三)从最后的状态图中可以看出QQ登录界面最后的状态有7种,那么从这7种状态中构造出状态类表:
状态/用例 | 用例1 | 用例2 | 用例3 | 用例4 | 用例5 | 用例6 | 用例7 | 用例8 |
QQ启动 | 1 | 1 | 1 | 1 | 1 | 1 3 | 1 | 1 |
帐号已输入 | 2 | 2 4 | 3 | |||||
密码已输入 | 2 | 2 4 | ||||||
“登录”按钮已点击 | 3 | 3 | 2 | 2 | ||||
帐号/密码已输入 | 3 | 3 | 5 | 5 | 4 | 2 | ||
QQ主界面 | 4 | 4 | 6 | 6 | 5 | |||
退出 | 2 | 4 | 3 |
(四)有一些用例没有列出,望大家自己思考,最后所有的测试用例都省略