|
实验2
|
(1)巩固所学的条件覆盖、条件组合覆盖测试方法;
(2)提高运用条件覆盖、条件组合覆盖法的能力。
(1)掌握逻辑覆盖的基本方法、概念;
(2)熟悉程序语言的逻辑结构与基础知识;
(3)选择一段程序语言。
以银行内部转账为实例,针对内部转账业务逻辑代码进行分析,运用条件覆盖进行测试用例设计。
内部转账用于处理发起户口号和接收户口号都是内部账户的系统内资金转账业务,主要用于财务资金的划拨、未实现自动清算业务的清算资金的划拨。
(1)内部转账发起是指:发起行发出内部资金交易,并换人复核,满足条件时需会计主管授权。
(2)内部转账接收是指:内部资金交易接收方根据接收方确认方式,对交易进行接收经办,满足条件的需复核或授权。
确定接收方的入账流程,“确认方式”分为以下三种:
(1)不需接收方确认,即发起方发起后自动记发起方和接收方的一套账务,接收方无须再做接收动作。
(2)需接收方确认,即接收方接收时不能更改接收信息,只能依据发起方输入的信息入账或退发起方。以目前的处理方式,接收经办→入账(金额小于100万元),大于100万元时为接收经办+接收授权→入账。
(3)需接收方经办,即接收方接收时可以更改接收信息,执行入账或退发起行。以目前的处理方式,接收经办+接收复核→入账(金额小于100万元),大于100万元时为接收经办+接收复核+接收授权→入账。
内部转账权限控制如表2-1所示。
表2-1 内部转账权限控制
以下为银行内部转账控制的部分伪代码实现:
(1)首先要让学生了解银行内部转账业务,能够模拟操作转账流程;
(2)能够将业务场景与代码逻辑关系对应;
(3)根据代码画出程序流程图,并分析各判定节点;
(4)根据代码流程图分析出条件覆盖、条件组合覆盖。
(1)明确被测试对象使用的测试方法;
(2)小组讨论业务场景并进行分析;
(3)测试实施工作安排;
(4)评审程序流程图和测试用例;
(5)执行测试,根据测试用例代入各条件测试数据,给出测试结果。
(1)根据银行内部转账业务描述,分析内部转账流程,包括主流程、分支流程以及正常流程、异常流程。
(2)模拟内部转账场景:触发内部转账的条件,不同条件是否走不同的转账流程。
(3)数据项检查:数据项的计算规则,数据项后台判断逻辑。
根据内部转账业务需求,设计出程序流程图,如图2-1所示,并对程序流程图做节点标记,分析流程图的判定条件与结果。
根据业务场景与流程逻辑判定,运用条件覆盖法进行用例设计。
图2-1 程序流程图
A~Q为测试路径编号,在下面的测试用例分析中将根据测试路径编号确定测试用例的业务流向。
条件覆盖即设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率的公式是:条件覆盖率=被评价到的条件取值的数量/条件取值的总数×100%。具体地说,就是在各种条件中,不考虑条件组合的因素,对每一个条件变量分别只取真假值一次,使得被测试程序中的每个条件取值至少被覆盖一次。
条件组合覆盖是通过设计足够多的测试用例,使得被测试程序中每个判断的所有可能条件取值的组合至少出现一次。
注意 :
(1)条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡儿乘积组合。
(2)不同的判断语句内的条件取值之间无须组合。
(3)对于单条件的判断语句,只需要满足自己的所有取值即可。
测试的依据是需求与设计文档,根据程序流程图实现。
(1)条件覆盖
银行内部转账流程在不考虑判定、仅考虑条件分支的情况下,条件分支数为5,即T1~T5。在条件覆盖中只考虑每个判定语句中的每个表达式,没有考虑各个条件分支。
根据图2-1所示的流程图,标记出节点。根据条件覆盖方法来进行分析,得到如表2-2所示的符合条件覆盖标准的测试用例。
表2-2 符合条件覆盖标准的测试用例
S(2)条件组合覆盖
对于判定1:
①条件转账金额>100W 取真为T1
②条件转账金额<=100W 取假为F1
对于判定2:
①条件“确认方式”==1 取真为T2
②条件“确认方式”==2 取真为T3
③条件“确认方式”==3 取真为T4
④条件T2、T3和T4都不成立 取假为F2
对于判定3:
①条件“确认方式”==2 取真为T5
②条件“确认方式”==3 取真为T6
③条件T5和T6都不成立 取假为F3
通过设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少出现一次。在这个银行内部转账流程上,判定1的条件和判定2、3中的条件分别构成组合。由于业务特定的逻辑,其组合简化为7个,而不是14个。
①判定1的条件T1和判定3中的各个条件构成组合,即3个组合,而不是2×3=6个组合;
②判定1的条件F1和判定2中的各个条件构成组合,即4个组合,而不是2×4=8个组合。
因此根据条件组合覆盖,总共有7个测试用例完成组合覆盖,如表2-3所示。这里不考虑异常情况,如转账金额<=0的情况。遇到这种情况会直接异常退出,也无法进入下一个判定2或判定3,和组合也没关系。
表2-3 符合条件组合覆盖度量标准的测试用例
从实验2项目案例中可以看出,条件覆盖仅考虑单个条件取真或取假一次,覆盖度相对较弱。如果想增强覆盖度,可以将本实验的条件覆盖和实验1的判定覆盖结合起来,构成更强的覆盖,即条件-判定覆盖。如果还想达到更高质量的要求,可以设计足够的测试用例达到组合覆盖测试。但条件组合的测试有些冗余,效率偏低。在这种情况下就要考虑到修正条件/判定覆盖来设计测试用例。
(1)程序实例:企业发放的奖金根据利润提成。
(2)请根据以上程序设计条件、判定条件、条件组合判定覆盖方法测试用例。