首页> 中国专利> 一种针对界面测试生成测试建议的方法和装置

一种针对界面测试生成测试建议的方法和装置

摘要

本发明实施例提供了一种针对界面测试生成测试建议的方法和装置,该方法包括:对待测试的应用的新版本构建包含界面函数的第一函数关系图;查找所述应用的基线版本的第二函数关系图;依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数;针对受版本更新影响的界面函数生成测试建议信息。本发明实施例避免了人工进行测试对象的评估,避免研发人员在提交更新范围时的疏漏或者描述不清的问题,进而减少遗漏测试重点的项目,使得测试人员有的放矢,将精力投入到重点项目的测试,减少资源浪费,提高测试效率。

著录项

  • 公开/公告号CN105389262A

    专利类型发明专利

  • 公开/公告日2016-03-09

    原文格式PDF

  • 申请/专利号CN201510982950.3

  • 发明设计人 蒋文乐;冯刚;

    申请日2015-12-23

  • 分类号G06F11/36;

  • 代理机构北京润泽恒知识产权代理有限公司;

  • 代理人赵娟

  • 地址 100088 北京市西城区新街口外大街28号D座112室(德胜园区)

  • 入库时间 2023-12-18 14:45:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-05

    专利权的转移 IPC(主分类):G06F11/36 专利号:ZL2015109829503 登记生效日:20220726 变更事项:专利权人 变更前权利人:北京奇虎科技有限公司 变更后权利人:北京奇虎科技有限公司 变更事项:地址 变更前权利人:100088 北京市西城区新街口外大街28号D座112室(德胜园区) 变更后权利人:100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801 变更事项:专利权人 变更前权利人:奇智软件(北京)有限公司 变更后权利人:

    专利申请权、专利权的转移

  • 2019-02-15

    授权

    授权

  • 2016-04-06

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20151223

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明涉及测试技术领域,特别是涉及一种针对界面测试生成测试建议 的方法和一种针对界面测试生成测试建议的装置。

背景技术

随着智能设备的广泛应用,现在已经步入了移动互联网时代。

为增强系统的功能,当前应用的数量呈指数式增长,应用的安全性、可 靠性、功能性等都受到了很大的关注和挑战。

测试是保证应用质量的重要手段,通过测试可以验证应用的功能、性能、 可靠性等指标是否满足规定的要求,通过系统的、严密的测试能够最大限度 的发现应用中的错误,从而减少应用中遗留的错误。

其中,界面测试是应用测试中的测试之一。

在每次应用的新版本提交过程中,产品测试人员根据产品研发人员给出 的测试范围进行产品测试。

目前的应用开发模式下,一款产品往往是由一个团队进行开发,这样造 成研发人员在提交更新范围时,难免有疏漏或者描述不清,在界面测试可能 会出现偏差时,容易导致遗漏测试重点的项目、对非重点的项目进行测试, 资源浪费等问题,测试效率低。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分 地解决上述问题的一种针对界面测试生成测试建议的方法和相应的一种针 对界面测试生成测试建议的装置。

依据本发明的一个方面,提供了一种针对界面测试生成测试建议的方 法,包括:

对待测试的应用的新版本构建包含界面函数的第一函数关系图;

查找所述应用的基线版本的第二函数关系图;

依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受 版本更新影响的界面函数;

针对受版本更新影响的界面函数生成测试建议信息。

可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关 系图的步骤包括:

对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数 之间的调用关系;

以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函 数关系图;

其中,所述功能函数包括界面函数,所述界面函数为叶子节点。

可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关 系图的步骤还包括:

针对所述功能函数生成指纹值。

可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关 系图的步骤还包括:

按照所述调用关系确定父节点和子节点;

记录所述父节点和所述子节点的第一亲缘关系。

可选地,所述依据所述第一函数关系图与所述第二函数关系图之间的差 异,以确定受版本更新影响的界面函数的步骤包括:

在所述第一函数关系图中,提取某一功能函数的第一指纹值;

在所述第二函数关系图中,提取相同功能函数的第二指纹值;

当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询 所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

可选地,所述依据所述第一函数关系图与所述第二函数关系图之间的差 异,以确定受版本更新影响的界面函数的步骤包括:

在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;

在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;

当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系 查询所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

可选地,所述第二亲缘关系包括父节点和子节点的关系,不相同之处包 括相同父节点的子节点的增加或删除。

可选地,还包括:

将所述应用的新版本设置为基线版本。

根据本发明的另一方面,提供了一种针对界面测试生成测试建议的装 置,包括:

第一函数关系图构建模块,适于对待测试的应用的新版本构建包含界面 函数的第一函数关系图;

第二函数关系图查找模块,适于查找所述应用的基线版本的第二函数关 系图;

界面函数确定模块,适于依据所述第一函数关系图与所述第二函数关系 图之间的差异,以确定受版本更新影响的界面函数;

测试建议信息生产模块,适于针对受版本更新影响的界面函数生成测试 建议信息。

可选地,所述第一函数关系图构建模块还适于:

对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数 之间的调用关系;

以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函 数关系图;

其中,所述功能函数包括界面函数,所述界面函数为叶子节点。

可选地,所述第一函数关系图构建模块还适于:

针对所述功能函数生成指纹值。

可选地,所述第一函数关系图构建模块还适于:

按照所述调用关系确定父节点和子节点;

记录所述父节点和所述子节点的第一亲缘关系。

可选地,所述界面函数确定模块还适于:

在所述第一函数关系图中,提取某一功能函数的第一指纹值;

在所述第二函数关系图中,提取相同功能函数的第二指纹值;

当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询 所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

可选地,所述界面函数确定模块还适于:

在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;

在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;

当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系 查询所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

可选地,所述第二亲缘关系包括父节点和子节点的关系,不相同之处包 括相同父节点的子节点的增加或删除。

可选地,还包括:

基线版本设置模块,适于将所述应用的新版本设置为基线版本。

本发明实施例通过对比新版本和基线版本的函数关系图,确定应用中受 本次更新影响的界面函数,从而针对该界面函数生成建议信息,避免了人工 进行测试对象的评估,避免研发人员在提交更新范围时的疏漏或者描述不清 的问题,进而减少遗漏测试重点的项目,使得测试人员有的放矢,将精力投 入到重点项目的测试,减少资源浪费,提高测试效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技 术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它 目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本 领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的, 而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示 相同的部件。在附图中:

图1示出了根据本发明一个实施例的一种针对界面测试生成测试建议的 方法实施例的步骤流程图;

图2示出了根据本发明一个实施例的一种关系函数图的示例图;以及

图3示出了根据本发明一个实施例的一种针对界面测试生成测试建议的 装置实施例的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示 了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不 应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地 理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照图1,示出了根据本发明一个实施例的一种针对界面测试生成测试 建议的方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,对待测试的应用的新版本构建包含界面函数的第一函数关系 图;

在本发明实施例中,通过函数关系图确定受版本更新影响的界面函数, 针对性地对该界面函数进行UI(用户界面,UserInterface)测试,可以覆盖 多个测试平台,如Android(安卓)、IOS、WindowsPhone、Windows等等。

对于提交的新版本的应用,可以进行静态分析,生成第一函数关系图。

在具体实现中,可以对待测试的应用的新版本进行静态分析,确定功能 函数及所述功能函数之间的调用关系。

静态分析,又称程序静态分析(ProgramStaticAnalysis),指在不运行代 码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序 代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指 标的一种代码分析技术。

其中,静态分析技术可以包括如下一种或多种:

(1)词法分析:从左至右一个字符一个字符的读入源程序,对构成源 程序的字符流进行扫描,通过使用正则表达式匹配方法将源代码转换为等价 的符号(Token)流,生成相关符号列表。

(2)语法分析:判断源程序结构上是否正确,通过使用上下文无关语 法将相关符号整理为语法树。

(3)抽象语法树分析:将程序组织成树形结构,树中相关节点代表了 程序中的相关代码。

(4)语义分析:对结构上正确的源程序进行上下文有关性质的审查。

(5)控制流分析:生成有向控制流图,用节点表示基本代码块,节点 间的有向边代表控制流路径,反向边表示可能存在的循环;还可生成函数调 用关系图,表示函数间的嵌套关系。

(6)数据流分析:对控制流图进行遍历,记录变量的初始化点和引用 点,保存相切片关数据信息。

(7)污点分析:基于数据流图判断源代码中哪些变量可能受到攻击, 是验证程序输入、识别代码表达缺陷的关键。

(8)无效代码分析,根据控制流图可分析孤立的节点部分为无效代码。

以功能函数为节点、按照调用关系连接节点,生成第一函数关系图。

函数关系图,是静态分析图,属于单向有序图,是对应用中函数调用关 系的一种静态描述。

在函数关系图中,节点表示函数,边表示函数之间的调用关系。

通过函数关系图,可以了解应用中函数以及函数之间的调用关系,从而 辅助理解应用的基本结构及其功能。

为使本领域技术人员更好地理解本发明实施例,以下通过以Java应用中 的类型传播为具体的示例来说明函数关系图的构建方法。

类型传播是一种只关注对象类型的简易数据流分析方法,包括过程内的 类型传播和过程间的类型传播。

过程内的类型分析是指在类型的传播依赖于函数体内从类型事件到函 数调用间的建议数据流分析,从而改进对函数调用点中的接受对象类型结合 的越近方式。

在算法中,R表示可达函数的集合,用StatementType(e)表示变量e 的生命类型;SonTypes(t)表示类t的所有子类集合,StaticLookup(c,m) 表示在类C中静态地查找其是否有生命为m的函数;SM是对应用中的每个 函数M所给定的一个特殊结合;SX是对每个域X给定的一个特殊结合; ReturnYype(M)表示函数M的返回类型;ParamTypes(M)表示函数M 的参数的声明类型集合。对于可达函数M中的每个实例化类C给定一个特 殊的集合RC,RC表示函数M中类C的实例化可达到的变量的集合。

步骤1:从函数mai()开始,main∈R。

步骤2:对于每个函数M以及M中的每个函数调用点e.m(),如果在M 中存在一系列赋值语句:v=newC(),x1=v,x2=x1,……,xn=xn-1,e=xn,即类C的 实例语句存在于M中,且通过过程内的类型传播,类C的实例化信息可达 到e,那么:(M∈R)=>(e∈Rc),这就代表变量e属于集合Rc。

步骤3:对于每个函数M,如果M中包含newC()这样的实例化信息, 那么(M∈R)=>(C∈SM),这是初始化SM为在可达函数M中实例化的 对象类型。

步骤4:对于每个函数M,以及M中的每个调用点e.m(),如果存在类 C∈SonTypes(StatementType(e)),并且有StaticLookup(c,m)=M’,如果可 用类型集合SM’包含目标函数的类,且对于该函数调用点中的接受对象来说, 通过过程内的类型传播,实例化信息是可达的,那么符合条件的目标函数M’ 可以加入可达函数的集合R中,同时可以通过参数传递将调用函数的可用类 型集合与被调用函数的形惨声明类型及其子集的类型集合的交集传递给被 调用函数,作为其可用类型集合的子集,又如果被调用函数返回值类型为空, 则可以将其与被调用函数的可用类型集合交集作为子集传递给调用函数的 可用类型集合。对于在调用函数中的实例化对象类型,它同时也属于被调用 函数的可用类型集合。

步骤5:在每个函数M中,如果存在对域x的读取,那么:(M∈R)= >(SX∈SM),即代表x可能指向的对象类型集合是该可达函数类型集合的 子集。

步骤6:在每个函数M中,如果存在对域x的写入,那么:(M∈R)= >(SonTypes(StaticType(x))∩SM∈SX),即如果可达函数中有写入x,那 么x可能指向的对象类型集合包含x的声明类型及其子类型集合与该可达函 数的可用类型集合的交集。

所绘制的函数关系图,如图2所示,其中,图中的每一个方框或椭圆形 表示一个功能函数,箭头表示调用关系。

当然,上述构建方式只是作为示例,在实施本发明实施例时,可以根据 实际情况设置其他构建方式,例如,类层次分析(ClassHierarchyAnalysis, CHA),快速类型分析(RapidTypeAnalysis,RTA)等等,本发明实施例对 此不加以限制。另外,除了上述构建方式外,本领域技术人员还可以根据实 际需要采用其它构建方式,本发明实施例对此也不加以限制。

在本发明实施例中,功能函数包括界面函数,即实现界面的函数。

应用的UI的本质也是在函数中予以实现的,构建函数关系图时,可以 将实现UI的界面函数和整个函数调用树绑定。

可以理解为,实现UI的界面函数为叶子结点,而实现UI的界面函数调 用的其它功能函数就是根系。

除了构建函数关系图之外,还可以针对功能函数生成指纹值,即唯一识 别该功能函数的信息,如MD5(Message-DigestAlgorithm5,信息摘要算法 5)、SHA(SecureHashAlgorithm,安全哈希算法)、SHA1等等。

此外,按照调用关系确定父节点和子节点,记录父节点和子节点的第一 亲缘关系。

当然,父节点和子节点是相对于调用关系而言的,某个函数可以为其他 函数的父节点,同时,也可以为其他函数的子节点。

如图2所示,main()函数调用PC_DispClrScr()函数,即main()函数可以 为PC_DispClrScr()函数的父节点,PC_DispClrScr()函数为main()函数的子节 点。

步骤102,查找所述应用的基线版本的第二函数关系图;

应用本发明实施例,可以将应用的某个版本的设置为基线版本,由于后 续的版本开发基本是基于在先的版本进行的,因此,基线版本可以作为后续 版本的参考。

针对应用的第一个版本,它没有对应的历史版本,所有它所有的函数都 是新的,可以定义为初始的基线版本。

在迭代过程中,可以重新定义新的版本为基线版本。

在本发明实施例中,可以将该应用的新版本设置为基线版本。

由于后续的版本开发大多是基于上一个版本进行的,因此,当前版本的 基线版本,比较大的概率为上一个版本。

步骤103,依据所述第一函数关系图与所述第二函数关系图之间的差异, 以确定受版本更新影响的界面函数;

在本发明实施例中,如果第一函数关系图与第二函数关系图之间存在差 异,表示功能函数发生变化,基于其所调用的界面函数受到影响。

在一种方式中,可以依据指纹值确定受版本更新影响的界面函数。

具体而言,在第一函数关系图中,提取某一功能函数的第一指纹值,在 第二函数关系图中,提取相同功能函数的第二指纹值。

当第一指纹值与所述第二指纹值不相同时,表示该功能函数发生变化, 可以按照调用关系查询功能函数所处的节点连接的叶子节点,确定叶子节点 所在的界面函数受版本更新影响。

例如,假设函数关系图中某个支路的调用关系为:A→B→C→D,其中, A、B、C为普通的功能函数,D为界面函数,箭头表示调用关系。若功能函 数B的指纹值发生变化,则可以通过调用关系追溯到叶子节点D,即界面函 数D受版本更新影响。

在另一种方式中,可以依据亲缘关系确定受版本更新影响的界面函数。

具体而言,在第一函数关系图中,提取某一功能函数的第一亲缘关系, 在第二函数关系图中,提取相同功能函数的第二亲缘关系。

当第一亲缘关系与第二亲缘关系不相同时,表示调用关系发生变化,可 以按照调用关系查询该功能函数所处的节点连接的叶子节点,确定该叶子节 点所在的界面函数受版本更新影响。

其中,第二亲缘关系包括父节点和子节点的关系,不相同之处可以包括 相同父节点的子节点的增加或删除。

例如,假设函数关系图中某个支路的基线版本的调用关系为:A→B→C →D,其中,A、B、C为普通的功能函数,D为界面函数,箭头表示调用关 系。

若新版本的调用关系为:A→B→E→F→D,A→B→G→H,其中,A、 B、E、F、G为普通的功能函数,D、H为界面函数,箭头表示调用关系。

父节点B的子节点C删除了,因此,可以通过调用关系追溯到叶子节 点D,即界面函数D受版本更新影响。

此外,父节点B新增了一个子节点G,因此,可以通过调用关系追溯到 叶子节点H,即界面函数H受版本更新影响。

步骤104,针对受版本更新影响的界面函数生成测试建议信息。

在具体实现中,受版本更新影响的界面函数变化较大,可以提示生成测 试建议信息,提示测试人员重点测试该界面函数。

此时,测试人员就可以重点关注本次更新受直接影响的界面函数,对于 未受影响的界面函数,可以减少精力投入。

当确定受版本更新影响的界面函数之后,就可以进行UI测试。

为使本领域技术人员更好地理解本发明实施例,在本发明实施例中,将 Android作为测试平台的一种示例对UI测试进行说明。

在Android系统中,可以应用多种自动化测试框架,例如,Robotium、 MoneyRunner、UIAutomator、Monkey等。

为使本领域技术人员更好地理解本发明实施例,以下以UIAutomator作 为自动化测试框架的示例进行说明。

UIAutomator提供了一组UI测试的组件和API(ApplicationProgramming Interface,应用程序编程接口),UI测试确保应用在一系列用户操作后,如 键盘输入、点击工具栏、菜单、对话框、图片或其他UI控件,返回正确的 UI输出。

当准备测试的时候,待测的应用可能还没有发布到市场上,但应该具有 该应用的APK(AndroidPackage,安装包)文件,可以通过ADB工具或其 他工具将待测试的应用安装到移动设备中。

UIAutomator测试案例(Testcase)继承至UiAutomatorTestCase类。

而UiAutomatorTestCase类继承至junit.framework.TestCase类,所以可以 用JUnit的Assert类来比较测试结果。

在UI测试时,可以调用预设的一个或多个测试用例(TestCase),其是 为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试 某个程序路径或核实是否满足某个特定需求。

本发明实施例通过对比新版本和基线版本的函数关系图,确定应用中受 本次更新影响的界面函数,从而针对该界面函数生成建议信息,避免了人工 进行测试对象的评估,避免研发人员在提交更新范围时的疏漏或者描述不清 的问题,进而减少遗漏测试重点的项目,使得测试人员有的放矢,将精力投 入到重点项目的测试,减少资源浪费,提高测试效率。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合, 但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限 制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其 次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施 例,所涉及的动作并不一定是本发明实施例所必须的。

参照图3,示出了根据本发明一个实施例的一种针对界面测试生成测试 建议的装置实施例的结构框图,具体可以包括如下模块:

第一函数关系图构建模块301,适于对待测试的应用的新版本构建包含 界面函数的第一函数关系图;

第二函数关系图查找模块302,适于查找所述应用的基线版本的第二函 数关系图;

界面函数确定模块303,适于依据所述第一函数关系图与所述第二函数 关系图之间的差异,以确定受版本更新影响的界面函数;

测试建议信息生产模块304,适于针对受版本更新影响的界面函数生成 测试建议信息。

在本发明的一种可选实施例中,所述第一函数关系图构建模块301还可 以适于:

对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数 之间的调用关系;

以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函 数关系图;

其中,所述功能函数包括界面函数,所述界面函数为叶子节点。

在本发明的另一种可选实施例中,所述第一函数关系图构建模块301还 可以适于:

针对所述功能函数生成指纹值。

在本发明的另一种可选实施例中,所述第一函数关系图构建模块301还 可以适于:

按照所述调用关系确定父节点和子节点;

记录所述父节点和所述子节点的第一亲缘关系。

在本发明的一种可选实施例中,所述界面函数确定模块303还可以适于:

在所述第一函数关系图中,提取某一功能函数的第一指纹值;

在所述第二函数关系图中,提取相同功能函数的第二指纹值;

当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询 所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

在本发明的另一种可选实施例中,所述界面函数确定模块303还可以适 于:

在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;

在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;

当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系 查询所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

在具体实现中,所述第二亲缘关系包括父节点和子节点的关系,不相同 之处包括相同父节点的子节点的增加或删除。

在本发明的一种可选实施例中,该装置还可以包括如下模块:

基线版本设置模块,适于将所述应用的新版本设置为基线版本。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较 简单,相关之处参见方法实施例的部分说明即可。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固 有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述, 构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定 编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容, 并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本 发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未 详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个 或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时 被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开 的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求 中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映 的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循 具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利 要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自 适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以 把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可 以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者 单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴 随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或 者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴 随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相 似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其 它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组 合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权 利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使 用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理 器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当 理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据 本发明实施例的针对界面测试生成测试建议的设备中的一些或者全部部件 的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一 部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。 这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个 或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载 体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制, 并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换 实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利 要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位 于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可 以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。 在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一 个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。 可将这些单词解释为名称。

本发明实施例公开了A1、一种针对界面测试生成测试建议的方法,包 括:

对待测试的应用的新版本构建包含界面函数的第一函数关系图;

查找所述应用的基线版本的第二函数关系图;

依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受 版本更新影响的界面函数;

针对受版本更新影响的界面函数生成测试建议信息。

A2、如A1所述的方法,所述对待测试的应用的新版本构建包含界面函 数的第一函数关系图的步骤包括:

对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数 之间的调用关系;

以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函 数关系图;

其中,所述功能函数包括界面函数,所述界面函数为叶子节点。

A3、如A2所述的方法,所述对待测试的应用的新版本构建包含界面函 数的第一函数关系图的步骤还包括:

针对所述功能函数生成指纹值。

A4、如A2所述的方法,所述对待测试的应用的新版本构建包含界面函 数的第一函数关系图的步骤还包括:

按照所述调用关系确定父节点和子节点;

记录所述父节点和所述子节点的第一亲缘关系。

A5、如A2或A3或A4所述的方法,所述依据所述第一函数关系图与 所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤 包括:

在所述第一函数关系图中,提取某一功能函数的第一指纹值;

在所述第二函数关系图中,提取相同功能函数的第二指纹值;

当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询 所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

A6、如A2或A3或A4所述的方法,所述依据所述第一函数关系图与 所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤 包括:

在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;

在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;

当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系 查询所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

A7、如A6所述的方法,所述第二亲缘关系包括父节点和子节点的关系, 不相同之处包括相同父节点的子节点的增加或删除。

A8、如A1或A2或A3或A4或A7所述的方法,还包括:

将所述应用的新版本设置为基线版本。

本发明实施例还公开了B9、一种针对界面测试生成测试建议的装置, 包括:

第一函数关系图构建模块,适于对待测试的应用的新版本构建包含界面 函数的第一函数关系图;

第二函数关系图查找模块,适于查找所述应用的基线版本的第二函数关 系图;

界面函数确定模块,适于依据所述第一函数关系图与所述第二函数关系 图之间的差异,以确定受版本更新影响的界面函数;

测试建议信息生产模块,适于针对受版本更新影响的界面函数生成测试 建议信息。

B10、如B9所述的装置,所述第一函数关系图构建模块还适于:

对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数 之间的调用关系;

以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函 数关系图;

其中,所述功能函数包括界面函数,所述界面函数为叶子节点。

B11、如B10所述的装置,所述第一函数关系图构建模块还适于:

针对所述功能函数生成指纹值。

B12、如B10所述的装置,所述第一函数关系图构建模块还适于:

按照所述调用关系确定父节点和子节点;

记录所述父节点和所述子节点的第一亲缘关系。

B13、如B10或B11或B12所述的装置,所述界面函数确定模块还适于:

在所述第一函数关系图中,提取某一功能函数的第一指纹值;

在所述第二函数关系图中,提取相同功能函数的第二指纹值;

当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询 所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

B14、如B10或B11或B12所述的装置,所述界面函数确定模块还适于:

在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;

在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;

当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系 查询所述功能函数所处的节点连接的叶子节点;

确定所述叶子节点所在的界面函数受版本更新影响。

B15、如B14所述的装置,所述第二亲缘关系包括父节点和子节点的关 系,不相同之处包括相同父节点的子节点的增加或删除。

B16、如B10或B11或B12或B15所述的装置,还包括:

基线版本设置模块,适于将所述应用的新版本设置为基线版本。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号