当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于代码变更的移动应用测试脚本自动维护方法技术

技术编号:13887133 阅读:68 留言:0更新日期:2016-10-23 23:36
本发明专利技术提出的一种基于代码变更的移动应用测试脚本自动维护方法,包括以下步骤:步骤1、代码变更分析:分析新旧版本代码中产生变化的代码,进行过滤后,获取导致界面行为模型产生变更的代码变更;步骤2、模型变更分析:利用代码和模型中元素的对应关系对模型进行行为变更分析,得到行为变更信息以及模型变更信息,将变更应用在模型中,得到新模型;步骤3、脚本变更修复:将脚本语句抽象为事件序列,根据行为变更信息、模型变更信息,修复和更新脚本对应的事件序列,得到能够正常使用的新脚本。对受到影响的脚本中的事件序列进行自动的维护和更新,最终得到可以应用在新版本中的脚本,以减轻测试人员维护脚本的负担。

【技术实现步骤摘要】

本专利技术涉及移动应用测试中脚本的自动维护方法,属于移动应用测试、脚本测试、模型驱动的测试交叉

技术介绍
在移动应用领域,移动应用开发周期短且迭代速度快,同时由于设备软硬件种类繁多,需要大量测试工作。在移动应用的测试中,主要采用人工测试以及脚本驱动的测试方法,后者需要测试人员编写大量测试脚本或者采用模型驱动的测试方法自动生成测试脚本,来达到批量测试的目的,此处测试脚本为使用脚本编程语言所写的代码,能够在测试工具的支撑下对应用进行测试。然而在版本迭代回归过程中,功能的增删、布局的改动等都会影响移动应用的界面和结构等内容,使之前正确的脚本失效,降低了脚本回归的效率和能力,违背了自动化测试的初衷,其中一些细小的更改甚至需要测试人员重写大量脚本,增加了测试人员的负担,或者局部的更改需要从模型中重新生成全部脚本,在模型规模较大时会造成较大的开销。由于移动应用为事件驱动的软件,采用界面行为的状态机模型描述较为合适,在状态机模型中可以采用屏幕变化定义状态、采用用户事件定义转换规则,利用行为状态机模型可以描述当前应用的行为、事件序列等,模型与代码、脚本之间存在明确的映射关系。模型采用建模语言来表示,能够描述软件的行为、结构和功能,贯穿整个开发和测试流程,无论是设计阶段、开发阶段或者是测试阶段,模型都是十分重要的组成部分。模型在测试领域应用也十分的广泛,例如模型驱动的测试是以模型为基础,生成测试用例并进行测试执行,是软件测试中常用的手段和重要的研究课题。模型与设计、代码之间往往有较为明确的对应关系,含有软件的基本信息和结构。然而软件可能会由于需求变更、优化、漏洞修复等各种原因进行版本的变更,版本的变更往往跟随者代码的变更以及模型的变更。《一种提高性能测试脚本重用率的方法》(申请号:201210474774.9):针对性能测试中的数据变更问题,通过对脚本数据的维护和管理,使得脚本可以应用于变更后的程序,并不修改脚本本身,因此不能适用于代码变更的新版本程序。《跨模型的图形用户界面测试脚本自动修复方法》(申请号:201110419535.9):生
成两个版本的EFG模型,对新模型中找不到的事件进行修复,在修复过程中还需要工程师逐个指定程序修复的方式,无法一直迭代循环下去,自动化程度较低;且其主要针对测试工具QTP,这类测试工具通常维护一个对象库,脚本的修复可以通过维护对象库进行,而不可以是任意事件驱动的移动应用测试工具。《自动化测试方法和装置》(申请号:201110222217.3):公开了一种自动化脚本升级方法,在升级后的软件版本上运行原测试脚本时,若检测到原测试脚本的一个测试步骤中存在软件变更点,则跳过测试步骤执行下一个测试步骤;根据软件变更点对原测试脚本进行升级;在升级后的软件版本上运行升级后的测试脚本。主要是在运行过程中找到所有需要的修复点进行更新,通过变更-模型-事件-脚本。无法覆盖所有代码,且一个测试脚本对应一个特定软件,不具有通用性。
技术实现思路
针对现有技术中存在的问题,本专利技术提供一种基于代码变更的移动应用测试脚本自动维护方法,自动的维护受到变更影响的旧版本测试脚本中的事件序列,得到可以应用在新版本中的脚本。方法得到的新脚本和新模型可以用于下一次版本迭代时的修复工作。技术方案为:一种基于变更的移动应用测试脚本自动维护方法,采用代码变更分析技术来比较代码(源代码、中间代码、二进制代码)之间的差异,获取能够导致界面行为模型产生变化的变更,即得到界面模型变更的操作序列,对旧版本模型进行更新,利用代码与模型、模型与测试脚本之间的映射关系,对受到影响的脚本中的事件序列进行自动的维护和更新,从而形成针对新版本可用的脚本。状态机模型是对移动应用中的事件序列进行的简化,状态机模型包含状态以及在这些状态之间的转移和动作,将界面的转换和用户事件的特征描述出来。代码、模型、测试脚本之间的映射关系包括一系列映射,这些映射包含了代码与模型、模型事件与测试脚本之间的关系。具体包括以下步骤:步骤1、代码变更分析:分析新旧版本代码中产生变化的代码,对其进行过滤,将不能导致界面行为模型产生变更的代码变更进行过滤,包括:脚本语句源代码中的空行、注释、空白字符,或者中间码中的行号标识、寄存器标识,以及变更不会造成界面行为模型产生变化的变更,
获取导致界面行为模型产生变更的代码变更;步骤2、模型变更分析:利用代码和模型中元素的对应关系对模型进行行为变更分析,得到行为变更信息以及模型变更信息,将变更应用在模型中,得到新模型;根据代码与模型中元素的对应关系以及增加的变更代码,得到模型中行为变更信息,如果变更使得模型中增加新的状态或者事件,则记录变更信息,即为模型变更信息,包含新状态相关状态的信息,以及事件转换信息、事件触发的条件,并将变更应用在模型中;根据代码与模型中元素的对应关系以及删除的变更代码,得到模型中行为变更信息,如果变更使得模型中删除状态或者事件,则记录变更信息,即为模型变更信息,包含该状态相关状态的信息,以及该状态相关的事件,并将变更应用在模型中;根据代码与模型中元素的对应关系以及修改的变更代码,得到模型中行为的变更信息,记录变更信息,即模型变更信息,包括修改的元素和修改结果,并将变更应用在模型中。步骤3、脚本变更修复:将脚本抽象为事件序列,事件序列为应用上的一系列动作序列,根据行为变更信息、模型变更信息,修复和更新脚本对应的事件序列,得到能够正常使用的新脚本。步骤3.1:根据脚本和模型之间的映射关系,将脚本语句抽象为事件序列,找出受到变更影响的脚本,并找到在模型中相应的状态转换序列;步骤3.2:根据步骤2中得到的模型变更信息,对受影响脚本进行逐个修复,首先修复事件序列,得到新的可用的事件序列;如果脚本的事件序列中含有增加变更,则在受到变更影响的事件之间加入新的事件或者增加新的状态转换对应的事件序列;如果脚本的事件序列中含有删除变更,则删除受到变更影响的事件以及之后所有的事件序列,若对于受到变更影响的事件对应的状态,其前一个状态和后一个状态之间有其他可用的状态转换事件,则用该事件作为原事件的替代;如果脚本的事件序列中含有修改变更,则修改受到变更影响的元素;步骤3.3:利用修改后的事件序列,脚本与模型之间的映射关系,得到修复后的新脚本。通过预先定义脚本和模型之间的映射关系表,可应用于各类移动应用脚本测试工具。本专利技术具有如下有益效果:本专利技术的基于代码变更的移动应用测试脚本自动维护方法中,通过分析移动应用两个版本之间的差异,包括源代码的变更、中间码的变更、二进制码的变更(以上统称为代码的变更),识别两个版本之间的事件变更,包括增加、删除、修改等,获取会导致界面行为发生变化的变更,将变更应用在状态机模型上,通过脚本与模型中事件的映射关系,自动的修复测试脚本,减轻了测试人员维护测试脚本的负担。具体说来,本专利技术所述的方法具有如下有益效果:(1)在本专利技术所述的基于代码变更的移动应用测试脚本自动维护方法中,代码差异是通过自动分析出来的,并且能够自动过滤不相关的变更差异,减轻测试人员的负担。(2)在本专利技术所述的基于代码变更的移动应用测试脚本自动维护方法中,代码包含源代码、中间码、二进制码,有较高通用性,在无源码的第三本文档来自技高网
...

【技术保护点】
一种基于代码变更的移动应用测试脚本自动维护方法,其特征在于,包括以下步骤:步骤1、代码变更分析:分析新旧版本代码中产生变化的代码,进行过滤后,获取导致界面行为模型产生变更的代码变更;步骤2、模型变更分析:利用代码和模型中元素的对应关系对模型进行行为变更分析,得到行为变更信息以及模型变更信息,将变更应用在模型中,得到新模型;步骤3、脚本变更修复:将脚本语句抽象为事件序列,根据行为变更信息、模型变更信息,修复和更新脚本中的事件序列,得到能够正常使用的新脚本。

【技术特征摘要】
1.一种基于代码变更的移动应用测试脚本自动维护方法,其特征在于,包括以下步骤:步骤1、代码变更分析:分析新旧版本代码中产生变化的代码,进行过滤后,获取导致界面行为模型产生变更的代码变更;步骤2、模型变更分析:利用代码和模型中元素的对应关系对模型进行行为变更分析,得到行为变更信息以及模型变更信息,将变更应用在模型中,得到新模型;步骤3、脚本变更修复:将脚本语句抽象为事件序列,根据行为变更信息、模型变更信息,修复和更新脚本中的事件序列,得到能够正常使用的新脚本。2.根据权利要求1所述的基于代码变更的移动应用测试脚本自动维护方法,其特征在于,步骤1中的过滤操作为:将不能导致界面行为模型产生变更的代码变更进行过滤,包括:代码中的空行、注释、空白字符,或者中间码中的行号标识、寄存器标识,以及变更不会造成界面行为模型产生变化的变更。3.根据权利要求1所述的基于代码变更的移动应用测试脚本自动维护方法,其特征在于,步骤2具体步骤为:根据代码与模型中元素的对应关系以及增加的变更代码,得到模型中行为变更信息,如果变更使得模型中增加新的状态或者事件,则记录变更信息,即为模型变更信息,包含新状态相关状态的信息,以及事件转换信息、事件触发的条件,并将变更应用在模型中;根据代码与模型中元素的对应关系以及删除的变更代码,得到模型中行为变更信息,如果变更使得模型中删除状态或者事件,则记录变更信息,即为模型变更信息,包含该状态相关状态的信息,以及该状态相关的事件,并将变...

【专利技术属性】
技术研发人员:王林章李筱李宣东陈志
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1