美文网首页程序员码农的世界@IT·互联网
基于OOPN网的类行为的测试分析与用例生成算法

基于OOPN网的类行为的测试分析与用例生成算法

作者: 胖艺 | 来源:发表于2017-03-15 17:36 被阅读643次

为什么要进行类行为的测试分析

面向对象的开发相信很多人都非常清楚其基本的理念。而面向对象的测试,在实际测试工作中很少有人提及。在面向对象的测试中,可以大致分为算法、类、子系统、系统四个级别。除了白盒测试外,一般测试人员都在子系统或者系统级别进行测试,很少能够感受到面向对象与面向过程的测试区别——在测试过程中,采用基于业务的、基于处理过程的、基于事件的、基于场景的等的测试方法都适用于面向对象和面向过程的系统测试。而对于面向对象的测试中,对象和类的概念必然会对测试产生影响。而这一影响被很多人都忽略了。特别是类的行为,其封装性、消息传递、多态特性都是传统测试分析中遗漏的,造成潜在且难以发现的BUG。

为什么使用OOPN网

OOPN网是Petri网的发展。

在系统分析和设计时,状态图、时序图、类图等工具都是很好的描述系统的模型。而petri网在描述实际系统运行时的类之间的行为互动,特别是合适用于描述异步的、并发的过程。经典的Petri网是简单的过程模型,由两种节点:库所和变迁,有向弧,以及令牌组成的。

Petri网

Petri网的详细介绍参考:Petri网

经过多年的发展,在基本的Petri网上,已经扩展出各种高级Petri网模型。将面向对象的思想和Petri网结合,就形成了面向对象的Petri网(Object Oriented Petri Net,OOPN)。本文讨论的是简化的OOPN网下,对类行为的测试分析的一个实例。

定义OOPN网

OOPN网有很多定义。本文对OOPN的定义如下:

定义:一个面向对象的Petri网是一个5元组,OOPN={P,T,C,G,F},其中

P={P11,P12……},是库所(表示状态)的有限集合,。

T={T11,T12……},是变迁(表示操作)的有限集合

C={gray,red,blue},是颜色的有限集合。

其中,gray:灰色表示同步路径;red:红色表示异步路径,blue:蓝色表示需要并发控制路径。

G={G11,G12……},是消息(调用服务)的有限集合。

F是P、T、G间的有向弧的集合。

业务背景

在一个支付业务中,支付的处理过程可以简要描述为:接收到卡信息,对卡信息进行验证。验证未通过,则提示卡信息错误。验证通过后,调用支付服务。收到支付结果后,更新订单状态。在这个过程中,主要有订单处理类OrderHandle,卡信息类CardInfo,支付服务类PayService,支付回调处理类PayCallBackHandle。

建立OOPN模型

订单处理类与卡信息类交互的OOPN网 支付处理类与支付服务类交互的OOPN网

注:G41属于订单类的服务,未列出。

测试分析

通过建立OOPN模型,很明确订单处理类、卡信息类、支付服务类之间的关系。特别是在订单处理类与支付服务类之间的异步路径、并发控制路径是测试的特别关注点。同时也明确了并发点来源是由于之前的异步路径造成的。并发控制路径的要点就是库所(状态)的变迁是唯一的。

用例生成算法

1 将OOPN模型中的变迁T取出,形成{输入库所,变迁,输出库所}的三元组。其中输入库所中,包含门G的,将门作为输入库所。输出库所中,包含门G的,将门作为输出库所。

2 归并所有的三元组。由于输出库所必然是其他三元组的输入库所,所以取输入库所不在输出库所集合中的,作为初始输入库所。将输出库所与输入库所的三元组首位相连,并将连接的三元组标记为已遍历。遇到输出库所作为多个输出库所的,采用深度遍历,直到完成一条路径后再返回走下一节点。若遇到并发控制路径,需要给予并发控制标记。直到输出库所为终态或为异步调用库所,则完成一条路径,加入测试路径集合

3 重复2的过程,当无法找到未遍历的三元组且输入库所不在输出库所集合中时,继续第4步。

4 将测试路径集合中,有相同并发控制标记的测试路径,取出添加到并发测试路径集中。

5 最终得到的测试路径集和并发测试路径集即为测试用例。

对于订单处理类与卡信息类交互的OOPN网,可以得到以下三元组:

(p11,t11,g21)

(g22,t12,p11)

(g23,t13,g31)

(g21,t21,p22)

(g21,t21,p23)

(p22,t22,g22)

(p23,t23,g23)

归并三元组得到测试路径:

(p11,t11,g21,t21,p22,t22,g22,t12,p11)

(p11,t11,g21,t21,p23,t23,g23,t13,g31)

对于支付处理类与支付服务类交互的OOPN网,可以得到以下三元组:

(g31,t31,p32)

(g31,t31,p33)

(p32,t32,g32)

(p33,t33,g33)

(g32,t41,p42)

(g33,t42,p43)

(p42,t43,g41)

(p43,t43,g41)

归并三元组得到2条测试路径:

(g31,t31,p32,t32,g32,t41,p42,t43,g41)

(g31,t31,p33,t33,g33,t42,p43,t43,g41)

得到并发控制测试路径:

(g31,t31,p32,t32,g32,t41*,p42*,t43*,g41*)

(g31,t31,p33,t33,g33,t42*,p43*,t43*,g41*)

*:表示并发控制标记

总结

使用OOPN进行测试分析考虑了对象之间的行为交互,体现了面向对象的封装、消息传递的特性,是能够覆盖到数据流、状态变迁、类之间的消息的同步和异步操作、并发控制的测试分析方法。

相关文章

  • 基于OOPN网的类行为的测试分析与用例生成算法

    为什么要进行类行为的测试分析 面向对象的开发相信很多人都非常清楚其基本的理念。而面向对象的测试,在实际测试工作中很...

  • 测试用例设计技术

    1.基于规格说明的技术(黑盒) 1.1.术语 边界值分析、决策表测试、等价类划分、状态转换测试、用例测试 1.2....

  • 第二章:排序基础

    选择排序算法(selectionSort) 算法思想: 算法图示: 使用模板(泛型)编写算法:随机生成算法测试用例...

  • 精准测试(3)

    精准测试分析是根据需求,代码等的变更情况,结合函数关系、模块关系、推荐的用例来进行测试分析,设计测试方案和用例,评...

  • 接口用例测试用例设计总结(只提供技术方案情况下)

    接口测试活动先后顺序测试分析---测试用例设计---jemter编写并执行用例 测试分析在只有技术方案的情况下,进...

  • 推荐系统实践学习系列(二)利用用户行为数据(上)

    主要学习内容 1 用户行为数据简介2 用户行为分析3 实验设计和算法评测4 基于领域的算法(1)基于用户的协同过滤...

  • 测试用例设计方法

    一,等价类 等价类测试用例设计方法是一种典型的黑盒测试用例设计方法,使用该方法主要对测试子项进行测试规格分析,进而...

  • XCUITest进阶与技巧

    一、调试与代码 1.测试类的基类 创建「XCUITestBase」基于XCTestCase。接下来的UITest用...

  • 第三篇 测试用例的规范

    一、什么是测试用例? 首先对于新人我解释下什么是测试用例: 测试用例是测试过程中操作行为的方法指引,用例让整个测试...

  • 软件测试面试题目

    1、软件的生命周期 计划阶段—需求分析—设计阶段—编码—测试—运行与维护 2、测试用例主要包括哪些项目 用例编号、...

网友评论

    本文标题:基于OOPN网的类行为的测试分析与用例生成算法

    本文链接:https://www.haomeiwen.com/subject/xkalnttx.html