软件测试任务八

createh51个月前 (03-19)技术教程8

@华敏IT教育

软件测试第十一次作业

  1. 场景法

场景法是通过运用场景来对系统的功能点或业务流程进行描述,从而提高测试效果的~种方法。使用用例场景来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。通常以正常的用例场景分析开始然后再着手其他的场景分析。场景法一般包含基本流和备选流,从一个流程开始,通过描述经过的路径来确定过程,经过遍历所有的基本流和备选流来完成整个场景。

图表 1场景法示意图

基本流:采用直黑线表示,是经过用例的最简单的路径。

备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,如场景法示意图中的备选流 3;也可以起源于另-个备选流,如备选流 2;或终止用例,不再加入基本流中,如备选流2或备选流4。

  1. 基本流是主流,备选流是支流。
  2. 一个业务只存在一个基本流;基本流只有一个起点、一个终点
  3. 备选流可以起始于基本流,也可以起始于备选流,备选流的终点,可以是一个流程的出口,也可以回到基本流,还可以汇人其他备选流
  4. 如果在流程图中出现了两个不相上下的基本流,一般需要把它们分别当作一个业务看待。

图表 2场景法示意图的用例场景

场景法的设计步骤:

  1. 根据说明,描述出程序的基本流及各项备选流;
  2. 根据基本流和各项备选流生成不同的场景;
  3. 对每一个场景生成相应的测试用例;
  4. 对生成的所有测试用例重新复审,去掉多余的测试用例。测试用例确定后,对每一个测试用例确定测试数据值。
  5. 网上银行支付交易

【案例描述】

图表 3网上银行支付交易系统的基本流表

图表 4网上银行支付交易系统的备选流表

问题1:

假定输入的的银行卡号是正确的,不考虑备选流循环情况,使用场景法设计测试用例,指出所涉及的基本流和备选流。基本流用字母A表示,备选流用题干中描述对应编号表示。

问题2:

请针对描述以上设计的用例场景,依次将银行卡号、初次输入密码、最终输入密码、卡内余额、银行卡可支付额度等信息填入测试用例表。其中V表示这个条件必须是有效的才可以执行用例,I用于表明这种条件下将激活所需的备选流,n/a表示这个条件不适用于测试用例。

【案例分析】

场景法首先需要确定基本流和备选流,在基本流和备选流已经确定的前提下,可以进一步设计场景。每个场景覆盖了在该案例下不同触发顺序与处理结果形成的事件流,最后得出所有的测试用例。例如,可以设计以下场景,如果没有特殊的情况发生,可以顺利完成网上银行支付行为。应该由基本流 A构成,具体如图网上银行支付交易系统的基本流表所示。

如果在支付的过程中,遇到密码不对的情况,则可以用到基本流 A和备选流 B构成场景 A、B。其他情况也依此类推。

根据设计好的场景,就可以对应地进行测试用例的设计比如针对只包括基本流的场景,应该选择正确的银行卡号、正确的输入密码、卡内余额应该大于订单的额度、银行卡的可支付额度也大于可支付的额度,见表网上银行支付交易系统测试用例。

图表 5网上银行支付交易系统基本流

图表 6网上银行支付交易系统测试用例

其中用V表示有效数据元素,I表示无效数据元素,n/a表示不适用。C01表示“成功支付”用例。

【案例实现】

图表 7网上银行支付交易系统场景表

图表 8网上银行支付交易系统测试用例(完整)

  1. 电子不停车收费系统
  1. 基本流与备选流描述

图表 9电子不停车收费系统基本流表

图表 10电子不停车收费系统备选流表

  1. 根据基本流和备选流生成场景

图表 11电子不停车收费系统场景表

  1. 设计测试用例

图表 12电子不停车收费系统测试用例

一、 单元测试

1. 例子

测试以下程序段的正确性


以JAVA程序为例,创建一个类,将被测方法放入同一个类文件中,并在main()方法中调用。



1.设计测试用例

用例编号

输入数据

期望结果

001

X=75,y=88

Z=88

002

X=103,y=589

Z=589

003

X=233,y=233

Z=233

2.测试结果两者均一致






也可以将被测单元封装在独立的类中,在测试类中创建被测类的对象,并通过调用被测类对象的方法进行测试。




1.设计测试用例

用例编号

输入数据

期望结果

001

X=75,y=88

Z=88

002

X=103,y=589

Z=589

003

X=233,y=233

Z=233

2.测试结果












二、 闰年测试

根据下面的方法,编写桩模块来测试程序



1. 分析

被测案例是一个主函数,需要构造被测单元的桩模块。

创建一个方法作为桩模块,被测单元调用这个方法来测试程序

增加一个循环,以便于多次测试



2.设计测试用例

用例编号

输入数据

期望结果

001

Year=1001

1001 is not a leap year.

002

Year=1004

1004 is a leap year.

003

Year=1000

1000 is not a leap year.

004

Year=2000

2000 is a leap year.

3.测试结果





三、 拓展案例

(1)根据下面的方法,编写驱动模块来测试程序的正确性







方法一:

1.创建一个类,包含主函数和此方法,通过主函数调用此方法





2. 设计测试用例

用例编号

输入数据

期望结果

001

A=1,b=2,c=3

Result=3

002

A=2,b=1,c=3

Result=3

003

A=2,b=2,c=3

Result=3

004

A=1,b=2,c=1

Result=2

005

A=2,b=1,c=2

Result=2

006

A=3,b=3,c=3

Result=3

3. 测试结果










方法二:

1.将Max()方法防御一个Max.java文件中,通过对象调用。






2.设计测试用例

用例编号

输入数据

期望结果

001

A=1,b=2,c=3

Result=3

002

A=2,b=1,c=3

Result=3

003

A=2,b=2,c=3

Result=3

004

A=1,b=2,c=1

Result=2

005

A=2,b=1,c=2

Result=2

006

A=3,b=3,c=3

Result=3

5.测试结果












(2)根据下面的代码,编写桩模块来测试程序

1.创建一个方法来实现判断是否是素数,并且创建Prime.java文件,通过对象调用来实现。





2.设计测试用例

用例编号

输入数据

期望结果

001

Num=1

False

002

Num=2

true

003

Num=9

false

004

Num=13

false

3.测试结果








五、使用测试工具JUnit进行单元测试

【案例实现】

①创建caculator类



②创建caculator类的测试类




③测试正确结果



④测试错误结果


相关文章

与面试官的对话:100万以内的质数用Java怎么实现?

一个头发稀少、穿着格子衬衣的中年男子走了进来,把手里拿的MAC放在桌子上。面试官说对我说:“我会用电脑记录面试过程,你不要介意啊”。我回答道:“没关系。”面试官:“先来一点基础的算法题吧,用Java写...

这里的每一题都能提升你的java水平,10道java经典算法题!第二弹

10道java经典算法!注意文章末尾!【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成...

javaWeb RSA加密使用

加密算法在各个网站运用很平常,今天整理代码的时候看到了我们项目中运用了RSA加密,就了解了一下。先简单说一下RSA加密算法原理,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要...

java面试必备:七个常见的Java算法问题和示例答案

#头条创作挑战赛#当面试Java算法问题时,根据不同的难度级别和特定的面试流程,以下是一些常见的Java算法问题和示例答案。问题1:如何判断一个字符串是回文字符串?示例答案:问题2:如何找到一个数组中...

初学者的玩具——Java经典小程序,问题源码详解

准备了一些java初级的小程序,关于java的知识点都被程序概括,选取最经典的一些介绍给大家。1、编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被10...

一文读懂map和hash_map的差异原理

在平时的工作或面试中,经常需要考虑容器的选择问题,其中“map和hash_map的差异点”出现的概率最高。那么,我们从底层原理上看看具体都有哪些区别和联系。目录为了方便大家阅读文章,我们先介绍一下文章...