1引言
作者在《工作流仿真综述》这篇文章中提到了工作流仿真的两种方式:交互式和非交互式。同时提到了将仿真分为交互式和非交互式的思想来源于软件测试领域。下面将详细介绍仿真和测试的异同并引出两种方式的仿真。两种方式的仿真实现方式不同、侧重点不同、应用场景也不同。
2 仿真和测试的异同
通常仿真是测试的重要方法之一。但仿真又和测试有一些区别,尤其是工作流的仿真和程序测试在很多方面存在差异。下面就几个方面描述一下仿真和测试的区别和联系。
(1)测试中的用例可以由仿真人员来填写生成也可以由特定的测试用例工具自动生成。仿真用例即相关资料中所提到的一组离散事件的集合。在SynchroFLOW仿真工具Simulation中,仿真用例(下文中会反复提到)就是一组全局变量以及他们的值。这组全局变量和它们的值是由随机数产生器生成的。下文中会详细说明生成算法。
(2)测试的对象是程序,目的是发现程序中的错误。仿真的对象是工作流模型,目的是发现模型错误并修改优化。
(3)仿真和测试之前都要输入一批测试数据。仿真输入的是相关数据。测试输入的是用例数据。
(4)测试过程中,程序运行在某种语言的编译运行环境中。仿真过程中,工作流模型是运行在仿真引擎中。
(5)测试的前置条件是编译运行环境正确。仿真的前置条件是仿真引擎是正确的。
(6)程序测试之前要搭建测试环境。仿真之前要设置仿真环境。
(7)测试可分为手动测试和自动测试。仿真可分为交互式的和非交互式的。
(8)程序测试中可通过调试工具查看变量的值。仿真过程中也可查看全局变量的值。
3 仿真的两种方式
因此仿真要执行count次才能把仿真用例全部执行完毕。而这些用例也将仿真人员提供的变量值集合全部覆盖。
仿真结束后要收集仿真数据形成仿真报表。仿真报表包括四类信息:路径信息、活动信息、用例信息、缺陷信息、错误信息。
非交互式仿真是执行通过随机数生成器将仿真人员给定的数据集合生成的仿真用例。从而验证模型的可用性及健壮性。最后仿真人员通过查看仿真报表来修改优化工作流模型。
3.2 交互式仿真
交互式仿真主要侧重业务问题,即如何和仿真工具交互来验证业务逻辑是否正确、参与者是否正确、表单样式是否符合行业规范。
目前,工作流产品主要应用在办公自动化领域。人们主要是以表单的形式处理各种事务。因此表单是否正确尤为重要。同时,在中国特色的业务流程里面,哪些人有权处理表单,哪些人没权处理表单是很重要的。总之,交互式仿真就是要验证是否是正确的人在做正确的事情。
在交互式仿真过程中要显示两类信息:一类是全局变量实时信息,一类是业务相关信息。
测试可以有手动测试和自动测试两种。通过借鉴程序测试的思想,研发人员提出了两种仿真方式:非交互式仿真和交互式仿真。这两种方式的仿真侧重不同的方面。下面分别就这两种仿真方式进行探讨。
3.1非交互式仿真
非交互式仿真主要侧重覆盖问题,即如何通过仿真覆盖到仿真人员输入的数据集、模型的每条路径、模型中的每个活动。
模型的全局变量分为两类:一类是由仿真人员通过手动输入的全局变量,称之为初始变量。一类是在模型运行过程中由系统给其赋值的全局变量,称之为中间变量。仿真人员只能给初始变量赋值。
首先通过模型解析工具得到一组全局变量。仿真人员给每一个变量赋一个或多个值。然后随机数生成器会根据仿真人员输入的全局变量及全局变量的值生成多个仿真用例。仿真用例的生产有两种方式:一种是概率型,一种是全覆盖型
(1) 概率型
相关数据设置表 1中显示的是相关数据及其值,每个变量设置了一个或多个值,并且给这个变量的每个值设置一个概率即百分比。变量的各个值的概率之和是1。通过随机数生产器产生多个仿真用例。这种方式是侧重测试在业务中可能反复出现的一些数据。
(2) 全覆盖型
下表是仿真环境设置时的相关数据设置表,每个变量都设置了一个或多个变量。通过计算得到各种组合情况。每种组合就是一个仿真用例。通过借鉴数据库中的笛卡尔积的算法可以实现。
当流程实例运行到某个活动时,仿真工具自动弹出该活动关联的表单。仿真人员向表单填写相关数据并提交表单。
仿真结束后要收集仿真数据形成仿真报表。
4 两种仿真方式应用场景
4.1非交互式仿真
(1)最终用户选定系统开发商后,开发商通过招标或其他方式选择工作流产品。开发商通过仿真工具验证模型的健壮性和正确性。此时输入的数据是模拟业务的数据。
(2)开发的应用系统经过一段时间的应用后 产生大量的业务数据和模型相关数据,通过提取这些数据作为仿真的输入,然后重新测试模型及业务。此时输入的数据时真实的业务数据。这种方式下的应用有点像测试里面的压力测试。另外在这种场景下应用非交互式仿真还可以对业务的一些瓶颈进行简单的分析,为改进模型提供有力的参考依据。
4.2交互式仿真
(1) 最终用户选定系统开发商后,开发商通过招标或其他方式选择工作流产品。开发商通过仿真工具模拟最终的系统来向最终用户展示,开发商和用户共同查看当前流程执行到哪个活动,表单设计的是否符合行业规范,和当前活动关联的表单是否正确,当前表单的实际参与者和预期参与者是否一致,当前变量的值是否正确。
(2)最终用户选定工作流产品之前,工作流厂商利用仿真工具模拟最终的系统来向最终用户展示,看工作流产品是否符合用户需求。此时仿真系统是作为工作流产品宣传的工具使用。
5 总结
现在,仿真技术已经应用到了各个行业中,在工作流领域的应用还处于探索阶段,还没有大量的应用,仿真工具的有用性还需要客户经过大量的使用后得到验证。协同仿真工具——Simulation通过借鉴程序测试的思想提出了两种仿真方式。总之开发仿真工具本质就是开发一个工作流的测试工具。另外如果仿真工具和模型的过程定义检查工具结合使用可能效果会更好。关于过程定义检查工具的介绍会在后续文章《协同SynchroFLOW过程定义检查工具的研究》中详细介绍。
责编:张欢
微信扫一扫实时了解行业动态
微信扫一扫分享本文给好友