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

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

Info

Publication number
CN105389262A
CN105389262A CN201510982950.3A CN201510982950A CN105389262A CN 105389262 A CN105389262 A CN 105389262A CN 201510982950 A CN201510982950 A CN 201510982950A CN 105389262 A CN105389262 A CN 105389262A
Authority
CN
China
Prior art keywords
function
relation
interface
node
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510982950.3A
Other languages
English (en)
Other versions
CN105389262B (zh
Inventor
蒋文乐
冯刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510982950.3A priority Critical patent/CN105389262B/zh
Publication of CN105389262A publication Critical patent/CN105389262A/zh
Application granted granted Critical
Publication of CN105389262B publication Critical patent/CN105389262B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)

Abstract

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

Description

一种针对界面测试生成测试建议的方法和装置
技术领域
本发明涉及测试技术领域,特别是涉及一种针对界面测试生成测试建议的方法和一种针对界面测试生成测试建议的装置。
背景技术
随着智能设备的广泛应用,现在已经步入了移动互联网时代。
为增强***的功能,当前应用的数量呈指数式增长,应用的安全性、可靠性、功能性等都受到了很大的关注和挑战。
测试是保证应用质量的重要手段,通过测试可以验证应用的功能、性能、可靠性等指标是否满足规定的要求,通过***的、严密的测试能够最大限度的发现应用中的错误,从而减少应用中遗留的错误。
其中,界面测试是应用测试中的测试之一。
在每次应用的新版本提交过程中,产品测试人员根据产品研发人员给出的测试范围进行产品测试。
目前的应用开发模式下,一款产品往往是由一个团队进行开发,这样造成研发人员在提交更新范围时,难免有疏漏或者描述不清,在界面测试可能会出现偏差时,容易导致遗漏测试重点的项目、对非重点的项目进行测试,资源浪费等问题,测试效率低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种针对界面测试生成测试建议的方法和相应的一种针对界面测试生成测试建议的装置。
依据本发明的一个方面,提供了一种针对界面测试生成测试建议的方法,包括:
对待测试的应用的新版本构建包含界面函数的第一函数关系图;
查找所述应用的基线版本的第二函数关系图;
依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数;
针对受版本更新影响的界面函数生成测试建议信息。
可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤包括:
对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数之间的调用关系;
以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函数关系图;
其中,所述功能函数包括界面函数,所述界面函数为叶子节点。
可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤还包括:
针对所述功能函数生成指纹值。
可选地,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤还包括:
按照所述调用关系确定父节点和子节点;
记录所述父节点和所述子节点的第一亲缘关系。
可选地,所述依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤包括:
在所述第一函数关系图中,提取某一功能函数的第一指纹值;
在所述第二函数关系图中,提取相同功能函数的第二指纹值;
当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
可选地,所述依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤包括:
在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;
在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;
当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
可选地,所述第二亲缘关系包括父节点和子节点的关系,不相同之处包括相同父节点的子节点的增加或删除。
可选地,还包括:
将所述应用的新版本设置为基线版本。
根据本发明的另一方面,提供了一种针对界面测试生成测试建议的装置,包括:
第一函数关系图构建模块,适于对待测试的应用的新版本构建包含界面函数的第一函数关系图;
第二函数关系图查找模块,适于查找所述应用的基线版本的第二函数关系图;
界面函数确定模块,适于依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数;
测试建议信息生产模块,适于针对受版本更新影响的界面函数生成测试建议信息。
可选地,所述第一函数关系图构建模块还适于:
对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数之间的调用关系;
以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函数关系图;
其中,所述功能函数包括界面函数,所述界面函数为叶子节点。
可选地,所述第一函数关系图构建模块还适于:
针对所述功能函数生成指纹值。
可选地,所述第一函数关系图构建模块还适于:
按照所述调用关系确定父节点和子节点;
记录所述父节点和所述子节点的第一亲缘关系。
可选地,所述界面函数确定模块还适于:
在所述第一函数关系图中,提取某一功能函数的第一指纹值;
在所述第二函数关系图中,提取相同功能函数的第二指纹值;
当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
可选地,所述界面函数确定模块还适于:
在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;
在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;
当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
可选地,所述第二亲缘关系包括父节点和子节点的关系,不相同之处包括相同父节点的子节点的增加或删除。
可选地,还包括:
基线版本设置模块,适于将所述应用的新版本设置为基线版本。
本发明实施例通过对比新版本和基线版本的函数关系图,确定应用中受本次更新影响的界面函数,从而针对该界面函数生成建议信息,避免了人工进行测试对象的评估,避免研发人员在提交更新范围时的疏漏或者描述不清的问题,进而减少遗漏测试重点的项目,使得测试人员有的放矢,将精力投入到重点项目的测试,减少资源浪费,提高测试效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图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(ApplicationProgrammingInterface,应用程序编程接口),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所述的装置,还包括:
基线版本设置模块,适于将所述应用的新版本设置为基线版本。

Claims (10)

1.一种针对界面测试生成测试建议的方法,包括:
对待测试的应用的新版本构建包含界面函数的第一函数关系图;
查找所述应用的基线版本的第二函数关系图;
依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数;
针对受版本更新影响的界面函数生成测试建议信息。
2.如权利要求1所述的方法,其特征在于,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤包括:
对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数之间的调用关系;
以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函数关系图;
其中,所述功能函数包括界面函数,所述界面函数为叶子节点。
3.如权利要求2所述的方法,其特征在于,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤还包括:
针对所述功能函数生成指纹值。
4.如权利要求2所述的方法,其特征在于,所述对待测试的应用的新版本构建包含界面函数的第一函数关系图的步骤还包括:
按照所述调用关系确定父节点和子节点;
记录所述父节点和所述子节点的第一亲缘关系。
5.如权利要求2或3或4所述的方法,其特征在于,所述依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤包括:
在所述第一函数关系图中,提取某一功能函数的第一指纹值;
在所述第二函数关系图中,提取相同功能函数的第二指纹值;
当所述第一指纹值与所述第二指纹值不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
6.如权利要求2或3或4所述的方法,其特征在于,所述依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数的步骤包括:
在所述第一函数关系图中,提取某一功能函数的第一亲缘关系;
在所述第二函数关系图中,提取相同功能函数的第二亲缘关系;
当所述第一亲缘关系与所述第二亲缘关系不相同时,按照所述调用关系查询所述功能函数所处的节点连接的叶子节点;
确定所述叶子节点所在的界面函数受版本更新影响。
7.如权利要求6所述的方法,其特征在于,所述第二亲缘关系包括父节点和子节点的关系,不相同之处包括相同父节点的子节点的增加或删除。
8.如权利要求1或2或3或4或7所述的方法,其特征在于,还包括:
将所述应用的新版本设置为基线版本。
9.一种针对界面测试生成测试建议的装置,包括:
第一函数关系图构建模块,适于对待测试的应用的新版本构建包含界面函数的第一函数关系图;
第二函数关系图查找模块,适于查找所述应用的基线版本的第二函数关系图;
界面函数确定模块,适于依据所述第一函数关系图与所述第二函数关系图之间的差异,以确定受版本更新影响的界面函数;
测试建议信息生产模块,适于针对受版本更新影响的界面函数生成测试建议信息。
10.如权利要求9所述的装置,其特征在于,所述第一函数关系图构建模块还适于:
对待测试的应用的新版本进行静态分析,确定功能函数及所述功能函数之间的调用关系;
以所述功能函数为节点、按照所述调用关系连接所述节点,生成第一函数关系图;
其中,所述功能函数包括界面函数,所述界面函数为叶子节点。
CN201510982950.3A 2015-12-23 2015-12-23 一种针对界面测试生成测试建议的方法和装置 Expired - Fee Related CN105389262B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510982950.3A CN105389262B (zh) 2015-12-23 2015-12-23 一种针对界面测试生成测试建议的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510982950.3A CN105389262B (zh) 2015-12-23 2015-12-23 一种针对界面测试生成测试建议的方法和装置

Publications (2)

Publication Number Publication Date
CN105389262A true CN105389262A (zh) 2016-03-09
CN105389262B CN105389262B (zh) 2019-02-15

Family

ID=55421568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510982950.3A Expired - Fee Related CN105389262B (zh) 2015-12-23 2015-12-23 一种针对界面测试生成测试建议的方法和装置

Country Status (1)

Country Link
CN (1) CN105389262B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528422A (zh) * 2016-11-10 2017-03-22 ***股份有限公司 一种检测Java程序页面扰动的方法和装置
CN107451050A (zh) * 2017-06-20 2017-12-08 阿里巴巴集团控股有限公司 函数获取方法和装置、服务器
CN108845930A (zh) * 2018-05-23 2018-11-20 深圳市腾讯网络信息技术有限公司 界面操作测试方法和装置、存储介质及电子装置
CN109828760A (zh) * 2018-12-28 2019-05-31 北京奇安信科技有限公司 基于函数摘要的程序文件分析方法及装置
CN110543427A (zh) * 2019-09-06 2019-12-06 五八有限公司 测试用例存储方法、装置、电子设备及存储介质
CN111258876A (zh) * 2018-11-30 2020-06-09 ***通信集团浙江有限公司 一种微服务架构下的精确回归测试方法及装置
US11726897B2 (en) 2020-04-13 2023-08-15 The Toronto-Dominion Bank System and method for testing applications

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
CN101425078A (zh) * 2008-11-17 2009-05-06 阿里巴巴集团控股有限公司 一种软件源代码的更新方法及装置
CN102495790A (zh) * 2011-10-20 2012-06-13 镇江睿泰信息科技有限公司 一种版本变更差异识别器及版本变更识别方法
CN103678097A (zh) * 2012-09-05 2014-03-26 百度在线网络技术(北京)有限公司 一种选择回归测试用例的方法和装置
CN103699488A (zh) * 2013-12-30 2014-04-02 优视科技有限公司 基于调用关系依赖图的回归测试方法及***
CN103870384A (zh) * 2012-12-11 2014-06-18 航天信息股份有限公司 测试用例推定方法及***
CN104503917A (zh) * 2015-01-04 2015-04-08 牟永敏 基于数据流函数调用路径的变更影响域分析方法及***
CN104834603A (zh) * 2015-05-26 2015-08-12 牟永敏 一种面向回归测试的控制流变更影响域分析方法和***
CN106557414A (zh) * 2015-09-28 2017-04-05 富士通株式会社 应用程序测试***和方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
CN101425078A (zh) * 2008-11-17 2009-05-06 阿里巴巴集团控股有限公司 一种软件源代码的更新方法及装置
CN102495790A (zh) * 2011-10-20 2012-06-13 镇江睿泰信息科技有限公司 一种版本变更差异识别器及版本变更识别方法
CN103678097A (zh) * 2012-09-05 2014-03-26 百度在线网络技术(北京)有限公司 一种选择回归测试用例的方法和装置
CN103870384A (zh) * 2012-12-11 2014-06-18 航天信息股份有限公司 测试用例推定方法及***
CN103699488A (zh) * 2013-12-30 2014-04-02 优视科技有限公司 基于调用关系依赖图的回归测试方法及***
CN104503917A (zh) * 2015-01-04 2015-04-08 牟永敏 基于数据流函数调用路径的变更影响域分析方法及***
CN104834603A (zh) * 2015-05-26 2015-08-12 牟永敏 一种面向回归测试的控制流变更影响域分析方法和***
CN106557414A (zh) * 2015-09-28 2017-04-05 富士通株式会社 应用程序测试***和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528422A (zh) * 2016-11-10 2017-03-22 ***股份有限公司 一种检测Java程序页面扰动的方法和装置
CN107451050A (zh) * 2017-06-20 2017-12-08 阿里巴巴集团控股有限公司 函数获取方法和装置、服务器
CN107451050B (zh) * 2017-06-20 2020-07-03 阿里巴巴集团控股有限公司 函数获取方法和装置、服务器
CN108845930A (zh) * 2018-05-23 2018-11-20 深圳市腾讯网络信息技术有限公司 界面操作测试方法和装置、存储介质及电子装置
CN108845930B (zh) * 2018-05-23 2022-12-30 深圳市腾讯网络信息技术有限公司 界面操作测试方法和装置、存储介质及电子装置
CN111258876A (zh) * 2018-11-30 2020-06-09 ***通信集团浙江有限公司 一种微服务架构下的精确回归测试方法及装置
CN109828760A (zh) * 2018-12-28 2019-05-31 北京奇安信科技有限公司 基于函数摘要的程序文件分析方法及装置
CN110543427A (zh) * 2019-09-06 2019-12-06 五八有限公司 测试用例存储方法、装置、电子设备及存储介质
US11726897B2 (en) 2020-04-13 2023-08-15 The Toronto-Dominion Bank System and method for testing applications
US11994972B2 (en) 2020-04-13 2024-05-28 The Toronto-Dominion Bank System and method for testing applications

Also Published As

Publication number Publication date
CN105389262B (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
CN109426722B (zh) Sql注入缺陷检测方法、***、设备及存储介质
CN105389262A (zh) 一种针对界面测试生成测试建议的方法和装置
Ocariza et al. An empirical study of client-side JavaScript bugs
Zhang et al. Which configuration option should I change?
US9612943B2 (en) Prioritization of tests of computer program code
US20220350682A1 (en) Automatically Generating Testing Code for a Software Application
EP3458953A1 (en) Systems and methods for model-based analysis of software
US11307975B2 (en) Machine code analysis for identifying software defects
CN111382070B (zh) 兼容性测试方法、装置、存储介质和计算机设备
US7895575B2 (en) Apparatus and method for generating test driver
US20160259636A1 (en) Software patch evaluator
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
US9311077B2 (en) Identification of code changes using language syntax and changeset data
JP6142705B2 (ja) オブジェクト指向言語のための記号テストドライバの反復生成
Nie et al. A framework for writing trigger-action todo comments in executable format
Kang et al. A secure-coding and vulnerability check system based on smart-fuzzing and exploit
Mayan et al. Optimized test data generation over suspicious implementation of oracle problem
CN114968817A (zh) 代码改动影响范围的评估方法、装置、设备及存储介质
Wang et al. Runtime permission issues in android apps: Taxonomy, practices, and ways forward
Hussain et al. RUGRAT: Evaluating program analysis and testing tools and compilers with large generated random benchmark applications
Mehrpour et al. Can static analysis tools find more defects? a qualitative study of design rule violations found by code review
US8930765B2 (en) Systems and methods for feedback driven regression testing
Ortin et al. Cnerator: A Python application for the controlled stochastic generation of standard C source code
Oliveira pytest Quick Start Guide: Write better Python code with simple and maintainable tests
Mukelabai et al. Semi-automated test-case propagation in fork ecosystems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220726

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190215