|
Simulator,基于模型的仿真与测试工具 |
作者:俎涛 (火龙果软件工程) |
|
什么是Simulator |
Simulator是基于EA模型的自动化开发和测试工具。可以把EA的Sys ML和UML模型生成可执行代码、编译、运行,然后基于模型执行自动化测试作模式对比如下: |
|
为什么需要Simulator |
现在软件的规模越来越大、参与人员越来越多,所以对软件的整体理解和持续理解能力要求越来越高,而随着软件规模的积累,很多团队已经深感力不从心。而软件开发的整个过程是一个整体,这就好比软件开发过程是一个木桶,而交付的软件就是木桶中的水,软件开发过程中的每个环节都是木桶的一个挡板,任何2个挡板之间出现了间隙,都会影响整体,造成最终软件的质量问题。参照这个木桶效应,软件开发过程有必要从基于文档的分析设计进化到基于模型的分析设计,这样会实现能力的提升: |
在基于文档的分析设计工作模式下,需求和设计没有统一的语言和形式,造成过渡间隙,导致需求和设计的问题。
在基于模型的需求和设计工作模式下,需求和设计工作采用模型可以实现良好而自然的过渡,所以可以形成紧密跟踪,大大提高了需求和设计的工作质量和效率。
|
2种工作模式对比如下: |
基于文档的分析设计 |
工作场景 |
|
1. 需求人员编写《需求文档》
2. 设计人员编写《设计文档》
3. 开发人员理解需求和设计,编码《代码》
4. 测试人员理解需求和设计,设计、执行《测试用例》
这种工作模式下,需求和设计采用文档描述,而文档的描述能力和关联跟踪能力都比较弱,进而影响分析设计的广度和深度,难以搞定复杂系统或者持续积累的系统。 |
基于模型的分析设计 |
工作场景 |
|
1. 需求人员建立《需求模型》
2. 设计人员建立《设计模型》
3. 开发人员理解需求和设计,编码《代码》
4. 测试人员理解需求和设计,设计、执行《测试用例》
这种工作模式下,采用模型可以提高描述能力,进而提高分析设计能力,采用建模规范Sys ML和UML还有助于提高交流和复用能力。能够大大提高应对复杂系统和持续积累系统的能力。
|
|
基于文档的分析设计 |
|
工作场景 |
1.
需求人员编写《需求文档》
2. 设计人员编写《设计文档》
3. 开发人员理解需求和设计,编码《代码》
4. 测试人员理解需求和设计,设计、执行《测试用例》
这种工作模式下,需求和设计采用文档描述,而文档的描述能力和关联跟踪能力都比较弱,进而影响分析设计的广度和深度,难以搞定复杂系统或者持续积累的系统。
|
基于模型的分析设计 |
|
工作场景 |
1.
需求人员建立《需求模型》
2. 设计人员建立《设计模型》
3. 开发人员理解需求和设计,编码《代码》
4. 测试人员理解需求和设计,设计、执行《测试用例》
这种工作模式下,采用模型可以提高描述能力,进而提高分析设计能力,采用建模规范Sys ML和UML还有助于提高交流和复用能力。能够大大提高应对复杂系统和持续积累系统的能力。
|
|
基于模型的开发遇到的问题 |
在基于模型的分析设计工作模式下,需求和设计面向后续工作软件开发和测试的信息传递主要还是靠人工进行,这就很容易出现过渡间隙,造成漏水! |
|
基于模型的开发 ~测试 |
为了解决需求和设计模型和软件开发 和测试的对接,我们还需要把模型的工作继续推进: |
基于模型的开发: |
基于设计模型自动化生成code,然后对代码进行编译。减少人工编码的漏洞,提高质量和效率,并形成严谨的跟踪关系。 |
基于模型的测试: |
基于模型生成测试用例,然后基于模型实现自动化的测试设计和执行,提高测试的质量和效率,并形成严谨的跟踪关系。 |
|
基于设计模型的生成code和基于设计模型的测试工作场景描述如下: |
基于模型的开发 |
工作场景 |
|
1. 基于《设计模型》,生成《代码》
2. 对生成的代码进行编译,获得可执行程序
3. 部署可执行程序到目标设备
这种工作模式下,设计到代码实现了自动化生成,提高了效率,减少了人为质量问题的引入。
|
基于模型的测试 |
工作场景 |
|
1. 基于《模型》->生成测试用例
2. 基于《模型》发出测试请求给可执行程序
3. 接收可执行程序的响应
4. 标记测试用例的执行结果
实现了如下能力:基于需求和设计可以快速生成测试用例,然后基于模型进行自动化测试,提高了测试效率和测试的质量。
|
|
基于模型的开发 |
|
工作场景 |
1.
基于《设计模型》,生成《代码》
2. 对生成的代码进行编译,获得可执行程序
3. 部署可执行程序到目标设备
这种工作模式下,设计到代码实现了自动化生成,提高了效率,减少了人为质量问题的引入。 |
基于模型的测试 |
|
工作场景 |
1.
基于《模型》->生成测试用例
2. 基于《模型》发出测试请求给可执行程序
3. 接收可执行程序的响应
4. 标记测试用例的执行结果
实现了如下能力:基于需求和设计可以快速生成测试用例,然后基于模型进行自动化测试,提高了测试效率和测试的质量。
|
|
基于模型,开发者就可以贯穿软件开发的整个过程:需求-设计-开发-测试,让软件开发的整个过程实现如下4大能力: |
1. 平滑过渡:因为模型具有统一的规范,相近的形式,屏蔽点实现的差异,让不同的工作转换和过渡更容易。 |
2. 严谨跟踪:基于模型的转换和过渡,会自然而然的实现各种工作的紧密的跟踪关系,这对需求跟踪、变更管理都是非常重要的基础。 |
3. 提高效率:基于模型的4种工作的快速迭代,可以打破专业壁垒,大大提高沟通效率。 |
4. 保证质量:在工作内容清晰、工作过渡顺畅、借助自动化的能力,质量无疑会得到更好的保障。 |
对于这种基于模型的开发模式,取Model Based 和各个工作的首字母,可以称之为MB-ADDT(Model Based Analysis ,Design ,Development , Test)。 |
|
MB-DDT的目标是:基于模型的闭环开发。为了更形象一些,我们来个图标吧: |
Simulator可以实现 基于模型的全周期闭环开发过程,提高开发效率和质量。 |
|
Simulator有什么 |
Simulator具有如下功能: |
基于模型的代码生成
对生成的代码进行编译
基于模型生成测试用例
基于模型执行测试用例
基于模型报告测试状态
|
|
Simulator可以用来做什么 |
Simulator可以为用户提供的工作场景如下: |
1. 在EA中建立需求模型
2. 在EA中建立设计模型
3. 使用Simulator基于模型自动生成代码,
4. 使用Simulator编译代码为可执行程序,
5. 部署可执行程序到目标设备;
6. 使用Simulator通过通信连接访问目标设备,执行测试用例,进行仿真测试。
7. Simulator接受目标设备的测试响应,以模型显示软件的状态。
|
如下是MB-DDT的工具工作示意图: |
|
Simulator什么样子 |
下面是具体的工作界面截屏: |
生成代码:用户可以基于SysML和UML模型自动生成100%可运行的代码。 |
|
编译可执行程序:用户可以对生成的代码一键编译。用户可以对生成的可执行程序进行部署。 |
|
仿真测试:用户可以基于模型生成测试用例,发送请求给部署了可执行程序的设备,接收设备的响应,以模型方式显示测试结果。 |
|
|
|