一、基本信息

标题:Automated generation of test oracles using a model-driven approach
时间:2013
出版源:Information and Software Technology
领域分类:软件测试;自动化测试oracle;模型驱动的测试;UML状态机;模型到文本转换

二、研究背景

问题定义:模型驱动的方法生成Oracle的测试
难点:元模型的建立,模型之间的转换
相关工作:模型到模型转换(M2M),模型到文本转换(M2T),使用三个元模型。

三、创新方法

1.
2.

四、实验

实验1:Oracle自动化

要探究的问题:Oracle自动化问题
结论:自动化oracle意味着测试系统必须能够在测试用例中包含一个机制,以便自己给出一致的通过/失败判定,这必须取决于输入测试数据和预期结果。然后,给定测试功能和输入测试数据,自动计算预期结果。使用基于模型的方法解决了oracle自动化问题,其中UML状态机增加了特定的信息,以便使用UML Profile for oracles进行测试。之后,使用模型驱动的方法转换这些模型,以获取返回预期结果的oracle类。

实验2:MDT框架通过测试得到加强

要探究的问题:运行事例;测试模型生成;测试代码生成;测试Oracle的动机;
结论:获得测试用例判定:一旦在SUT中执行操作,下一步是比较预期结果(预期 _ 状态)和从SUT(状态)实际获得的结果是否相等。这在验证操作中用句子{ expected _ state == state }表示。
MOFScript转换将测试模型作为输入,并且对于定型为«TestCase的每个UML Interaction(即序列图),将其转换为xUnit测试方法。为了说明这种转换,我们使用Java及其相应的测试语言JUnit。
此时需要注意的是,预期结果由测试人员手动计算并存储在dataPool中。在UML-TP之后,对应于执行场景的每个测试用例过程(即序列图)在DataPool中具有一个或多个相关联的元组以便对其进行测试。除输入测试数据外,这些元组也具有预期值。以返回簿作为测试场景,测试输入是借方和副本。结果是借款人的州和支付金额。如果oracle未自动化,则必须由测试人员手动计算预期结果并将其存储在DataPool中。而手动计算每个测试用例的预期结果是一项繁琐且容易出错的任务。为了处理大量的情况,可以为UML状态机提供获得预期结果的功能。注意,UML分类器的状态可以被描述为其属性的函数,并且因此,根据相应的状态机,交互图中表示的消息序列修改场景中涉及的对象的状态。

实验3:自动化测试Oracle实现

要探究的问题:用于oracle确定的UML配置文件;转换获取oracle方法;实际与预期结果比较。
结论:UML状态机使用guard和effect子句中的变量。我们需要知道如何从dataPool获取这些变量以生成oracle。UML状态机中缺少此信息,这是获取测试oracle所必需的。TestPrecondition在UML注释中定义,该注释被定型为«TestPrecondition,它附加到UML状态机。标注为«TestPrecondition的UML注释可以具有不同的标记以获得用于oracle的数据。
Oracle方法的实现是通过模型到文本转换(M2T)来执行的。作为输入,它将一个UML状态机定型为«TestOracle,并使用两个oracle方法以与SUT相同的语言返回一个类,对于定型为«Precondition的每个状态,生成相应的效果作为该方法的文本代码结果。
没有oracle的JUnit代码的UML序列图。还需要更改从测试模型到xUnit代码的MOFScript转换。现在,转换已经考虑到有一个与UML序列图相关的UML状态机定型的TestOracle。
在SUT中调用每个操作以获得实际结果,最后,使用JUnit中的断言句子完成预期和实际结果之间的比较,测试人员可以使用带来xUnit框架的功能来管理缺陷并重新执行测试用例。如果缺陷是由于oracle过程中的错误,测试人员或设计人员只需要更改UML状态机,再次执行获取测试oracle过程的模型转换,并使用xUnit框架再次重新执行测试用例。

五、结论

作者的总结:在本文中,我们提出了一种允许测试oracle生成的方法,自动化测试oracle中的两个重要步骤:预期输出及其与实际输出的比较。我们描述了一个支持测试用例自动化的自动化测试框架。该框架使用UML表示法将描述系统的模型作为输入,并根据模型驱动的方法从中导出测试模型,然后导出测试代码。因此,获得了完整的可执行测试用例,其中包含以下信息:
参数化输入测试数据:测试仪将输入测试数据存储在dataPool中,测试用例自动检索它。dataPool中的操作返回测试用例的所有测试输入,并为每组输入执行测试用例。
以自动方式获得预期结果:测试oracle的这部分是从UML状态机自动获得的。结果,获得两种方法以产生预期结果和预期状态。
测试用例过程:测试用例过程从序列图自动生成,该序列图表示要测试的功能,并使用有关测试输入和预期结果的信息。测试用例程序侧重于功能测试。然后,测试系统和演员之间的交互。因此,在xUnit中获取一个方法,该方法调用dataPool中的测试输入,使用测试输入调用在SUT中测试的操作,使用oracle方法计算预期结果,最后验证预期结果是否相等使用xUnit中的Assert语句到实际的一个。
自己的评价:在模型驱动工程(MDE)中,模型被视为用于自动生成代码的第一类实体。在维护阶段,当需要更改请求时,将修改模型并自动重新生成代码。

参考文献:
【1】S.R. Dalal, A. Jain, N. Karunanithi, J.M. Leaton, C.M. Lott, G.C. Patton, B.M. Horowitz, Model-based testing in practice, in: Proceedings of the International Conference on Software Engineering, 1999, pp. 285–294.
【2】IEEE, IEEE Standard Glossary of Software Engineering Terminology, Tech. rep., IEEE, 1990. Google Scholar
【3】T. Mens, P. Van CorpA taxonomy of model transformation Electronic Notes in Theoretical Computer Sciences, 152 (2006), pp. 125-142
【4】B. Pérez Lamancha, P. Reales Mateo, I. García, M. Polo Usaola, M. Piattini, Automated model-based testing using the uml testing profile and qvt, in: International Workshop on Model-DriveEngineering, Verification and Validation, ACM, Denver, Colorado, 2009, pp. 1–10.
【5】B. Pérez Lamancha, M. Polo, M. Piattini An automated model-driven testing framework for model-driven development and software product lines International Conference on Evaluation of Novel Approaches to Software Engineering, SciTePress, Athens, Greece (2010), pp. 112-121

Automated generation of test oracles using a model-driven approach的更多相关文章

  1. Automated Generation of VNF Deployment Rules Using Infrastructure Affinity Characterization

    标题:Automated Generation of VNF Deployment Rules Using Infrastructure Affinity Characterization 使用基础结 ...

  2. 【Entity Framework】Model First Approach

    EF中的model first 所谓mf, 就是使用vs提供的edm designer去设计model,然后将设计好的model使用vs在指定的数据库中生成数据库即可. 当你的项目既没有数据库也没有c ...

  3. [Angular2 Form] Model Driven Form Custom Validator

    In this tutorial we are going to learn how simple it is to create custom form field driven validator ...

  4. Object constraint language for code generation from activity models

    一.基本信息 标题:Object Constraint Language for Code Generation from Activity Models 时间:2018 出版源:Informatio ...

  5. 关于conversation generation的论文笔记

    对话模型此前的研究大致有三个方向:基于规则.基于信息检索.基于机器翻译.基于规则的对话系统,顾名思义,依赖于人们周密设计的规则,对话内容限制在特定领域下,实际应用如智能客服,智能场馆预定系统.基于信息 ...

  6. Entity Framework Tutorial Basics(12):Model First

    Model First development with Entity Framework: In the Model First approach, you create Entities, rel ...

  7. Create Entity Data Model

    http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx 官 ...

  8. Entity Framework Tutorial Basics(5):Create Entity Data Model

    Create Entity Data Model: Here, we are going to create an Entity Data Model (EDM) for SchoolDB datab ...

  9. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

随机推荐

  1. 孤儿进程VS僵尸进程

    我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成 ...

  2. vue mock

    如果后端不肯来帮你 mock 数据的话,前端自己来 mock 也是很简单的.你可以使用mock server 或者使用 mockjs + rap 也是很方便的. 不久前出的 easy-mock也相当的 ...

  3. 项目总结之Oauth2.0免登陆及相关知识点总结

    简介Oauth2.0授权步骤 授权码模式的基本步骤 原文链接地址 (A)用户访问客户端,后者将前者导向认证服务器. (B)用户选择是否给予客户端授权. (C)假设用户给予授权,认证服务器将用户导向客户 ...

  4. python跨平台注释

    使python程序运行在window以外的平台上 !#  user/bin/python

  5. Synchronized的几种用法

    https://blog.csdn.net/luoweifu/article/details/46613015

  6. sql语句order by排序问题

    根据某个字段的值排序,等于这个值的放最前面,不等的放后面 select * from [DTS_Interface] order by case when from_tag_name='木质饰条' t ...

  7. Swift - 修改导航栏“返回”按钮文字和图标 /手势冲突解决/响应范围

    iOS11之前 修改导航栏“返回”按钮文字,图标 https://blog.csdn.net/u012701023/article/details/50264265 iOS11 完美解决导航栏按钮偏移 ...

  8. python入门day02数据类型

    字符串:数据类型的学习 #======================================基本使用====================================== #1.用途 ...

  9. layerweb弹层组件(SSH框架下)

    action类 这里主要看业务方法中表单路径中的(isClose = "1";return resUri;) public class MaterialsAction extend ...

  10. VBA 生成XML(转)

    需要引用连个库,Microsoft ADO Ext. 6.0 for DDL and Security, Miscrosoft  ActiveX Data Objects 2.7 Library . ...