CN110851370B - 程序测试方法及装置、存储介质 - Google Patents

程序测试方法及装置、存储介质 Download PDF

Info

Publication number
CN110851370B
CN110851370B CN201911143151.1A CN201911143151A CN110851370B CN 110851370 B CN110851370 B CN 110851370B CN 201911143151 A CN201911143151 A CN 201911143151A CN 110851370 B CN110851370 B CN 110851370B
Authority
CN
China
Prior art keywords
file
test
page
level
program
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.)
Active
Application number
CN201911143151.1A
Other languages
English (en)
Other versions
CN110851370A (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 Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201911143151.1A priority Critical patent/CN110851370B/zh
Publication of CN110851370A publication Critical patent/CN110851370A/zh
Application granted granted Critical
Publication of CN110851370B publication Critical patent/CN110851370B/zh
Active 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
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)

Abstract

本公开是关于一种程序测试方法及装置、存储介质。本公开实施例中的方法包括:在运行混合模式移动应用的过程中,获取测试指令;响应于所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;基于程序文件的运行结果,确定相应的测试结果。通过本公开实施例提供的技术方案,能够将自动化测试相关的测试文件与程序文件独立设置,在测试时基于测试指令在程序文件中加载测试文件,从而提升测试效率。

Description

程序测试方法及装置、存储介质
技术领域
本公开涉及信息处理技术,尤其涉及一种程序测试方法及装置、存储介质。
背景技术
Hybrid app(混合模式移动应用)是一种基于手机硬件平台的新型应用形态,是一种介于web-app(网页应用)与native-app(原生应用)之间的应用类型。Hybrid app兼具native-app良好用户交互体验的优势与web-app跨平台开发的优势,无需下载安装并且能够带来流畅的应用体验。在Hybrid app的开发过程中,程序测试占据了重要的地位,但是,目前仍然缺少针对Hybrid app程序高效便捷的测试方法。
发明内容
本公开提供一种程序测试方法及装置、存储介质。
根据本公开实施例的第一方面,提供一种程序测试方法,包括:
在运行混合模式移动应用的过程中,获取测试指令;
响应于所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
基于程序文件的运行结果,确定相应的测试结果。
在一些实施例中,所述测试文件包括:应用级测试文件和页面级测试文件;所述程序文件包括:应用级文件和页面级文件;所述响应于所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
响应于所述测试指令,确定当前运行的程序文件的类型为所述应用级文件或所述页面级文件;
如果当前运行的程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
如果当前运行的程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
在一些实施例中,所述将所述应用级测试文件添加到所述应用级文件,包括:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
在一些实施例中,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
在一些实施例中,所述页面级测试文件,包括:测试用例文件,所述将所述页面级测试文件添加到所述页面级文件,包括:
将所述测试用例文件添加到所述页面级文件。
在一些实施例中,所述运行包含有所述测试文件的程序文件,包括:
运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
在一些实施例中,所述首页包括:预设的待测页面列表;所述运行包含有所述测试文件的程序文件,还包括:
根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
在一些实施例中,所述将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
根据所述程序文件确定所述程序文件运行的抽象语法树AST;
根据所述测试文件,更新所述AST;
根据更新后的所述AST,生成更新后的程序文件。
根据本公开实施例的第二方面,提供一种程序测试装置,包括:
获取模块,用于在运行混合模式移动应用的过程中,获取测试指令;
添加模块,用于响应所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
运行模块,用于运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
确定模块,用于基于程序文件的运行结果,确定相应的测试结果。
在一些实施例中,所述测试文件包括:应用级测试文件和页面级测试文件;所述程序文件包括:应用级文件和页面级文件;所述添加模块,包括:
第一确定子模块,用于响应所述测试指令,确定当前运行的程序文件的类型为所述应用级文件或所述页面级文件;
第一添加子模块,用于如果当前运行的程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
第二添加子模块,用于如果当前运行的程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
在一些实施例中,所述第二添加子模块,具体用于:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
在一些实施例中,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
在一些实施例中,所述页面级测试文件,包括:测试用例文件,所述第二添加子模块,具体用于:
将所述测试用例文件添加到所述页面级文件。
在一些实施例中,所述运行模块,包括:
第一运行子模块,用于运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
中止子模块,用于当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
在一些实施例中,所述首页包括:预设的待测页面列表;所述运行模块,还包括:
第二运行子模块,用于根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
在一些实施例中,所述添加模块,包括:
第二确定子模块,用于根据所述程序文件确定所述程序文件运行的抽象语法树AST;
更新子模块,用于根据所述测试文件,更新所述AST;
生成子模块,用于根据更新后的所述AST,生成更新后的程序文件。
根据本公开实施例的第三方面,提供一种程序测试装置,所述装置至少包括:处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:
处理器用于运行所述可执行指令时,所述可执行指令执行上述任一项程序测试方法中的步骤。
根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述任一程序测试方法中的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:通过上述方法中的步骤,实现了混合模式移动应用的自动化测试,并能够基于测试指令针对需要测试的内容进行独立的测试。此外,由于测试文件独立于从程序文件单独设置,减少了测试文件对程序文件自身的影响,使各个程序模块之间能够单独测试。测试文件能够应用于全局环境,可以由不同的程序文件调用。由于测试文件并非直接写入程序文件中,而是不限于特定的程序文件的使用独立文件,因此,提升了测试的覆盖面,并有效提升了测试的灵活性和实用性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种程序测试方法的流程图。
图2是根据一示例性实施例示出的另一种程序测试方法的流程图。
图3是根据一示例性实施例示出的又一种程序测试方法的流程图。
图4是根据一示例性实施例示出的测试文件的设置方法的流程图。
图5是根据一示例性实施例示出的一种程序测试装置的结构框图。
图6是根据一示例性实施例示出的一种程序测试装置的实体结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种程序测试方法的流程图,如图1所示,包括以下步骤:
步骤S101、在运行混合模式移动应用的过程中,获取测试指令;
步骤S102、响应于所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
步骤S103、运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
步骤S104、基于程序文件的运行结果,确定相应的测试结果。
这里,混合模式移动应用即Hybrid app介于web-app与native-app之间,由云端运行,并将运行结果显示在终端,并从终端接收控制指令。快应用以及小程序等都属于该类型的混合模式移动应用程序。
混合模式移动应用的用户无需下载安装应用包,即点即用。其中,混合模式移动应用框架深度集成在终端设备的操作***中,可以在终端设备的操作***的层面形成用户需求与应用服务的无缝衔接,很多只有在native-app中才能使用而不能在web-app使用的功能,在混合模式移动应用中也可以很方便的实现,可以享受native-app的性能体验。其中,混合模式移动应用的运行由混合模式移动应用平台来执行,并在混合模式移动应用前端进行运行结果的显示,混合模式移动应用前端还可以用于接收混合模式移动应用运行指令。例如,如果基于混合模式移动应用前端接收到了针对于该混合模式移动应用的点击操作,则具体执行点击操作的过程由混合模式移动应用平台来执行。所以,实际运行混合模式移动应用的过程主要基于混合模式移动应用平台和混合模式移动应用前端所构建的网络架构中来实现的。
混合模式移动应用程序从数据角度可以分为组件树(DOM)、样式(CSS)、逻辑(JS代码);从组成上可以分为配置文件(manifest.json)、全局文件(app.js)、页面文件(page),对该程序打包后会形成rpk打包文件,该打包文件即为混合模式移动应用的应用程序(Application,App)。
一个混合模式移动应用的文件包可能包含有多个不同的程序文件,即不同的程序模块,在测试时,可能需要对每个程序模块进行单独测试。此外,在完成一次测试后,可能需要针对不同的程序模块进行再次测试。因此,如果直接将测试文件固定写入程序文件中,则每次测试时可能都需要执行不必要的测试动作,测试效率低。
因此,上述步骤提供了一种实现混合模式移动应用的自动化测试的实现方式。将携带有测试相关指令代码的测试文件,单独设置于混合模式移动应用的文件包中,在混合模式移动应用运行的过程中,如果接收到测试执行,则调用测试文件,将测试文件中的指令代码添加到待测试的程序文件中,运行得到的结果则为相应的测试结果。
这里,测试指令可以从终端的命令行工具中的命令来获取,测试人员可以根据实际需求在命令行中输入测试指令。混合模式移动应用运行的过程中,如果获取到上述测试指令,则自动将预设的测试文件添加至程序文件中;如果未获取到上述测试指令,则继续执行程序文件中的各程序模块,并实现混合模式移动应用的相应功能。
上述测试文件可以包括测试框架与断言库,测试框架是用来提供模拟混合模式移动应用基础功能的测试指令的集合。在程序中注入测试框架并运行,相当于自动执行混合模式移动应用的指定功能,然后可以通过断言的方式来判断运行结果是否有误。断言库是预设的断言指令的集合,当程序运行到指定位置时,如果返回值与断言库中所预设的值相同时,则认为运行无误;如果返回值与断言库中所预设的值不同,则认为运行错误。
上述测试文件也可以包括预设的测试用例文件。测试用例文件包括一个或多个测试用例,测试用例是对程序文件的一个或一些功能的测试方案,这些测试方案包括:测试目标、测试环境、输入数据以及测试脚本等的信息。当程序文件调用测试用例时,根据测试用例中设置的测试方案来运行,并最终输出相应的结果。当测试用例执行完毕后,输出的结果即当前测试的一次测试结果。
通过上述方法中的步骤,实现了混合模式移动应用的自动化测试,并能够基于测试指令针对需要测试的内容进行独立的测试。此外,由于测试文件独立于从程序文件单独设置,减少了测试文件对程序文件自身的影响,使各个程序模块之间能够单独测试。测试文件能够应用于全局环境,可以由不同的程序文件调用。由于测试文件并非直接写入程序文件中,而是不限于特定的程序文件的使用独立文件,因此,提升了测试的覆盖面,并有效提升了测试的灵活性和实用性。
在一些实施例中,所述测试文件包括:应用级测试文件和页面级测试文件;所述程序文件包括应用级文件和页面级文件。如图2所示,上述步骤S102中,所述响应于所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
步骤S201、响应于所述测试指令,确定当前运行的程序文件的类型为所述应用级文件或所述页面级文件;
步骤S202、如果当前运行的所述程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
步骤S203、如果当前运行的所述程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
混合模式移动应用通常以多页面的形成展现,不同的页面通常由独立的程序文件或程序模块来实现,即通过页面级文件来实现。此外,程序文件还包括设置有全局参数及接口信息等内容的应用级文件。对于应用级文件与页面级文件,可以添加不同的测试文件来实现自动化测试。也就是说,上述程序文件至少包括两种子文件的类型,即应用级文件和页面级文件。
因此,可以先确定当前运行的程序文件中子文件的类型。如果当前运行的子文件类型为应用级文件,则将应用级测试文件添加到该应用级文件中,并进行相应的测试。应用级测试文件可以包括测试框架以及断言库,同时还可以设置终端操作***的原生接口信息,便于全局访问。
如果当前运行的子文件类型为页面级文件,则将页面级测试文件添加到该页面级文件中,并进行测试。页面级测试文件可以包括预设的测试用例文件,以及预设的超时时间或超时返回指令。为了保证测试结果的完整性,可以设置较长的超时时间,例如,设置为3000ms等。
通过识别不同的程序文件的类型,可以引入不同的测试文件,进行更加灵活的测试并能够自动执行。
在一些实施例中,所述将所述应用级测试文件添加到所述应用级文件,包括:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
上述应用级测试文件的接口信息可以包括全局环境下的API(ApplicationProgramming Interface,应用程序接口),以便测试时可以在程序文件的全局进行调用;还可以包括终端操作***的原生接口,以便测试时可以获取原生参数。
在一些实施例中,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
对于类型为应用级的程序文件,其程序主要包括应用于全局的功能参数及指令等信息,可以采用通用的测试框架来检测其基本功能。
因此,应用级测试文件为预设测试功能的测试框架与断言库。上述实施例中已经对测试框架与断言库进行了说明,并介绍了原生接口的功能,这里不再赘述。
在一些实施例中,所述页面级测试文件,包括:测试用例文件,所述将所述页面级测试文件添加到所述页面级文件,包括:
将所述测试用例文件添加到所述页面级文件。
由于类型为页面级的程序文件,不同页面具有不同的功能、属性以及参数等信息。例如,视频播放页面可以用于通过视频连接播放视频文件;列表页面为用户提供多种选项的列表,并链接至其他页面;新闻页面可以以动态切换标签的形式展示不同的新闻等。这些不同功能的页面,可以具有不同类型的属性,例如,页面的布局、样式等;也可以具有不同的参数,例如显示亮度参数等等。因此,需要针对不同的页面设置不同的测试用例,并通过测试用例来进行测试。因此,上述页面级测试文件包括上述测试用例文件。上述实施例中已经对测试用例进行了说明,这里不再赘述。
在一些实施例中,所述运行包含有所述测试文件的程序文件,包括:
运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
页面级文件在运行时,会生成一个页面,并加载页面中的信息;当接收到关闭页面或切换页面等操作指令时,页面会被销毁,返回至首页。
因此,可以在测试用例文件中通过设置页面运行时间信息来设置页面的生命周期,当页面生成后到达生命周期对应的时间时,结束测试,页面会被销毁并返回至首页。或者,设置指定的返回指令,当执行至返回指令时,则销毁页面并返回至首页。
这里的首页是指快应用的主页面,对应于上述应用级文件所执行创建的页面,首页中可以包含页面列表等信息,也可以包含应用于全局的接口信息等。
为了保证测试用例能够完整执行,可以设置较长的生命周期;相应地,如果页面文件较为简短,则可以设置较短的生命周期,以提升测试速率。
在一些实施例中,所述首页包括:预设的待测页面列表;所述运行包含有所述测试文件的程序文件,还包括:
根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
当一个页面的页面级文件完成测试后,基于上述页面运行时间信息或者返回条件指令,会返回至首页。在运行首页文件时,可以通过首页中设置的待测页面列表中下一页面的入口,进入并运行下一页面。
因此,在设置首页对应的应用级测试文件时,可以指定需要测试的页面,并在列表中依次标识出来。当测试完一个页面的页面级文件,并返回至首页时,可以根据列表中的标识确定下一测试页面的入口,进入并运行下一测试页面的页面级文件。此时,可以将下一测试页面对应的页面级测试文件,也就是测试用例文件添加至页面级文件中,并执行该测试用例,实现下一测试页面的测试。
通过上述方法,即可以完成混合模式移动应用中不同页面文件的分别测试,并且,对于无需进行测试的页面级文件,则可以跳过运行,从而有效提升了测试效率。
在一些实施例中,所述将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
根据所述程序文件确定所述程序文件运行的AST(Abstract Syntax Tree,抽象语法树);
根据所述测试文件,更新所述AST;
根据更新后的所述AST,生成更新后的程序文件。
上述步骤提供了一种将测试文件添加至程序文件中实现方式。首先将程序文件解析为抽象语法树,以体现程序文件的语法结构。然后将相应的测试文件中的代码编辑添加至该抽象语法树中,生成更新后的程序文件。此时,更新后的程序文件中包含有测试文件中的各种指令及数据。最后根据更新后的抽象语法树,生成更新后的程序文件。
在进行自动化测试时,直接运行上述更新后的程序文件,则可以根据测试文件中的信息,得到相应的测试结果。
本公开实施例还提供以下示例:
Web开发的功能测试可以占到整个开发过程所需时间的30%至50%,甚至更高。因此,能够实现高效的自动化测试是提高技术开发效率的关键因素。
Web前端开发中经常用到karma/jest/mocha等框架,配合chai断言库进行自动化测试。通常,借助node.js环境或浏览器环境提供的api来运行并完成测试任务。但是在快应用混合开发中,由于缺少相应的环境和对应的api,则无法通过上述框架配合断言库的方式进行自动化测试。
针对快应用混合开发,在一些实施例中,可以通过如下步骤进行测试:
1、在命令行中设置字段,用于在编译工具内判断是否引入自动化测试。
2、引入测试框架,并在全局环境下暴露测试库的api,以保证运行时测试用例的访问。
3、封装原生能力,如安卓提供的原生能力,在全局环境下暴露一些测试用例需要使用的api。
4、针对不同的页面,分别在页面所对应的生命周期内引入对应的控制代码,并实例化测试框架。
5、设置需要自动测试的页面列表。测试开始时进入快应用首页,然后依次进入到需要测试的页面。
6、测试用例完成后,返回首页,然后进入下个页面进行测试用例。
7、最后统计所有页面的测试通过率,对失败的测试用例进行排查。
为了提升开发和测试效率,可以在快应用开发环境下引入自动化测试框架,从而保证快应用框架的稳定性和测试覆盖面。
实现方案如下:
为了保证自动化测试能力的独立性,需要把自动化测试模块单独抽象成一个Loader(程序模块),Loader是一个导出为函数的JavaScript模块。Loader runner(模块运行单元)会调用这个函数,然后把上一个Loader产生的结果或者资源文件传入进去。通过hap-toolkit工具(快应用配套的打包编译工具)提取命令行的NODE_TEST命令,当NODE_TEST命令的值为Y则引入自动化测试Loader。
Loader逻辑内判断当前的脚本是否是app.js文件,app.js文件是小程序或快应用程序的入口文件,即全局文件。
如果当前脚本是app.js文件,则注入测试框架和断言库。例如:mocha测试框架和chai断言库。同时封装native(原生方法)提供的原生能力,并暴露至全局环境下,供全局访问。
如果当前脚本是页面级别的脚本,并且该页面在测试列表中,则引入src目录(源目录)对应的test目录(测试目录)下的测试用例文件。在onCreate(生命周期)内实例化测试框架并添加测试完成后的返回逻辑。这里,可以采用将测试用例解析成AST后重新生成ux文件的方法。同时设置超时时间为3000ms,保证自动化测试能够一直执行,当然,如果页面的测试逻辑较为复杂,则可以适当增加超时时间,保证测试用例正常执行完毕。
以上就是在hap-toolkit工具下实现自动化测试Loader的过程。除此之外,还可以在业务代码目录内创建autocase.js文件,用来记录测试用例列表。在整个程序的首页中引入autocase.js,使快应用基于指令生成待测页面,并进入第一个页面开始测试。
如图3所示,上述在hap-toolkit实现自动化测试Loader的方法包括以下步骤:
步骤S11、判断命令行设置的NODE_TEST的值是否为Y;
步骤S12、如果NODE_TEST值不是Y,则跳过当前的页面的自动化处理Loader;
步骤S13、如果NODE_TEST值为Y,则判断当前脚本是否为app.js文件;
步骤S14、如果当前脚本为app.js文件,则将测试用例解析成AST,然后引入测试框架和断言库,封装native的原生能力,并生成新的AST,保证测试框架与断言库的全局访问。
步骤S15、如果当前脚本不是app.js文件,则对当前页面的onCreate函数进行处理,解析生成AST。并设置超时时间为3000ms。保证自动化测试的正常执行,并添加执行完毕后的逻辑。
步骤S16、基于上述步骤S4或步骤S5中生成的AST,通过generate包(编译工具)重新生成js文件。
步骤S17、完成当前页面的Loader或跳过当前页面的Loader后,进入到下一个Loader,继续处理js文件。
步骤S18、将生成的各js文件与测试代码逻辑共同打包生成rpk文件包,则可以应用于真机的自动化测试。
测试代码中的实现逻辑可以包括以下几个步骤:
步骤S21、在src文件下添加一个autocase.js文件(可以通过node.js环境下的fs包动态生成),其中包含autolist.js列表文件;
步骤S22、将page/home/index.ux等待测试的文件引入autolist.js的列表对象,并使用快应用语法书写对应的template(模板),生成rpk文件包;
步骤S23、在超时时间内完成当前页面的功能测试,达到超时时间后返回首页;
步骤S24、进入到autolist.js的列表中的下一个页面,进行上述步骤S23直至整个测试用例完毕。
通过上述实施例中的方法,将自动化测试模块单独抽出,通过命令行设置,保证各个模块之间的弱耦合。通过引入mocha/chai库并暴露到全局,实现自动化测试。同时,对原始页面级别的ux文件进行改造,***新的生命周期并实例化测试框架。从而提升开发和测试效率,保证快应用框架的稳定性和测试覆盖面。
图5是根据一示例性实施例示出的一种程序测试装置的框图。参照图5,该装置500包括获取模块510,添加模块520、运行模块530和确定模块540。
获取模块510,用于在运行混合模式移动应用的过程中,获取测试指令;
添加模块520,用于响应所述测试指令,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
运行模块530,用于运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
确定模块540,用于基于程序文件的运行结果,确定相应的测试结果。
在一些实施例中,所述测试文件包括:应用级测试文件和页面级测试文件;所述添加模块,包括:
第一确定子模块,用于响应所述测试指令,确定当前运行的程序文件的类型为应用级文件或页面级文件;
第一添加子模块,用于如果当前运行的程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
第二添加子模块,用于如果当前运行的程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
在一些实施例中,所述第二添加子模块,具体用于:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
在一些实施例中,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
在一些实施例中,所述页面级测试文件,包括:测试用例文件,所述第二添加子模块,具体用于:
将所述测试用例文件添加到所述页面级文件。
在一些实施例中,所述运行模块,包括:
第一运行子模块,用于运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
中止子模块,用于当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
在一些实施例中,所述首页包括:预设的待测页面列表;所述运行模块,还包括:
第二运行子模块,用于根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
在一些实施例中,所述添加模块,包括:
第二确定子模块,用于根据所述程序文件确定所述程序文件运行的抽象语法树AST;
更新子模块,用于根据所述测试文件,更新所述AST;
生成子模块,用于根据所述AST,生成更新后的程序文件。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种程序测试装置600的实体结构框图。例如,装置600可以是移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
参照图6,装置600可以包括以下一个或多个组件:处理组件601,存储器602,电源组件603,多媒体组件604,音频组件605,输入/输出(I/O)接口606,传感器组件607,以及通信组件608。
处理组件601通常控制装置600的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件601可以包括一个或多个处理器610来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件601还可以包括一个或多个模块,便于处理组件601和其他组件之间的交互。例如,处理组件601可以包括多媒体模块,以方便多媒体组件604和处理组件601之间的交互。
存储器602被配置为存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器602可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器、磁盘或光盘。
电源组件603为装置600的各种组件提供电力。电源组件603可以包括:电源管理***,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
多媒体组件604包括在所述装置600和用户之间提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件604包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和/或后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件605被配置为输出和/或输入音频信号。例如,音频组件605包括一个麦克风(MIC),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器610或经由通信组件608发送。在一些实施例中,音频组件605还包括一个扬声器,用于输出音频信号。
I/O接口606为处理组件601和***接口模块之间提供接口,上述***接口模块可以是键盘、点击轮、按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件607包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件607可以检测到装置600的打开/关闭状态、组件的相对定位,例如所述组件为装置600的显示器和小键盘,传感器组件607还可以检测装置600或装置600的一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件607可以包括接近传感器,被配置为在没有任何的物理接触时检测附近物体的存在。传感器组件607还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件607还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
通信组件608被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如WiFi、2G或3G,或它们的组合。在一个示例性实施例中,通信组件608经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件608还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术或其他技术来实现。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器602,上述指令可由装置600的处理器610执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行上述实施例中提供的任一种程序测试方法中的步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (18)

1.一种程序测试方法,其特征在于,包括:
在运行混合模式移动应用的过程中,获取测试指令;
响应于所述测试指令,确定当前运行的程序文件的类型;
基于当前运行的所述程序文件的类型,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
所述测试文件能够应用于所述混合模式移动应用的全局环境,由不同的所述程序文件调用;
所述测试文件包括用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述测试文件还包括测试用例文件,所述测试用例文件包括对所述程序文件的一个或多个功能的测试方案;
运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
基于程序文件的运行结果,确定相应的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述测试文件包括:应用级测试文件和页面级测试文件;所述程序文件包括应用级文件和页面级文件;所述基于当前运行的所述程序文件的类型,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
如果当前运行的所述程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
如果当前运行的所述程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述应用级测试文件添加到所述应用级文件,包括:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
4.根据权利要求3所述的方法,其特征在于,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
5.根据权利要求2所述的方法,其特征在于,所述页面级测试文件,包括:测试用例文件,所述将所述页面级测试文件添加到所述页面级文件,包括:
将所述测试用例文件添加到所述页面级文件。
6.根据权利要求5所述的方法,其特征在于,所述运行包含有所述测试文件的程序文件,包括:
运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
7.根据权利要求6所述的方法,其特征在于,所述首页包括:预设的待测页面列表;所述运行包含有所述测试文件的程序文件,还包括:
根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
8.根据权利要求1至7任一所述的方法,其特征在于,所述将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中,包括:
根据所述程序文件确定所述程序文件运行的抽象语法树AST;
根据所述测试文件,更新所述AST;
根据更新后的所述AST,生成更新后的程序文件。
9.一种程序测试装置,其特征在于,包括:
获取模块,用于在运行混合模式移动应用的过程中,获取测试指令;
添加模块,用于响应所述测试指令,确定当前运行的程序文件的类型;基于当前运行的所述程序文件的类型,将独立于所述混合模式移动应用的程序文件设置的测试文件添加到所述程序文件中;
所述测试文件能够应用于所述混合模式移动应用的全局环境,由不同的所述程序文件调用;
所述测试文件包括用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述测试文件还包括测试用例文件,所述测试用例文件包括对所述程序文件的一个或多个功能的测试方案;
运行模块,用于运行包含有所述测试文件的程序文件,其中,所述程序文件在运行至测试节点时调用所述测试文件运行;
确定模块,用于基于程序文件的运行结果,确定相应的测试结果。
10.根据权利要求9所述的装置,其特征在于,所述测试文件包括:应用级测试文件和页面级测试文件;所述程序文件包括:应用级文件和页面级文件;所述添加模块,包括:
第一添加子模块,用于如果当前运行的程序文件的类型为所述应用级文件,将所述应用级测试文件添加到所述应用级文件;
第二添加子模块,用于如果当前运行的程序文件的类型为所述页面级文件,将所述页面级测试文件添加到所述页面级文件。
11.根据权利要求10所述的装置,其特征在于,所述第二添加子模块,具体用于:
将应用于所述混合模式移动应用的全局环境的应用级测试文件和接口信息添加到所述应用级文件。
12.根据权利要求11所述的装置,其特征在于,所述应用级测试文件,包括:用于提供测试功能的测试框架和用于判断测试结果是否正确的断言库;所述接口信息,包括:操作***原生接口;其中,所述操作***原生接口包括:用于获取所述混合模式移动应用所属的操作***原生参数的接口。
13.根据权利要求10所述的装置,其特征在于,所述页面级测试文件,包括:测试用例文件,所述第二添加子模块,具体用于:将所述测试用例文件添加到所述页面级文件。
14.根据权利要求13所述的装置,其特征在于,所述运行模块,包括:
第一运行子模块,用于运行包含有所述测试用例文件的页面级文件;其中,所述测试用例文件中包括:返回条件指令和/或页面运行时间信息;
中止子模块,用于当所述页面级文件运行至所述返回条件指令时,和/或,当所述页面级文件运行时间超过所述页面运行时间信息所指示的时间时,中止所述页面级文件的运行并返回至所述混合模式移动应用的首页。
15.根据权利要求14所述的装置,其特征在于,所述首页包括:预设的待测页面列表;所述运行模块,还包括:
第二运行子模块,用于根据所述待测页面列表中下一测试页面的入口,进入并运行所述下一测试页面的页面级文件。
16.根据权利要求9至15任一所述的装置,其特征在于,所述添加模块,包括:
第二确定子模块,用于根据所述程序文件确定所述程序文件运行的抽象语法树AST;
更新子模块,用于根据所述测试文件,更新所述AST;
生成子模块,用于根据更新后的所述AST,生成更新后的程序文件。
17.一种程序测试装置,其特征在于,所述装置至少包括:处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:
处理器用于运行所述可执行指令时,所述可执行指令执行上述权利要求1至8任一项提供的程序测试方法中的步骤。
18.一种非临时性计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述权利要求1至8任一项提供的程序测试方法中的步骤。
CN201911143151.1A 2019-11-20 2019-11-20 程序测试方法及装置、存储介质 Active CN110851370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911143151.1A CN110851370B (zh) 2019-11-20 2019-11-20 程序测试方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911143151.1A CN110851370B (zh) 2019-11-20 2019-11-20 程序测试方法及装置、存储介质

Publications (2)

Publication Number Publication Date
CN110851370A CN110851370A (zh) 2020-02-28
CN110851370B true CN110851370B (zh) 2024-04-26

Family

ID=69602708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911143151.1A Active CN110851370B (zh) 2019-11-20 2019-11-20 程序测试方法及装置、存储介质

Country Status (1)

Country Link
CN (1) CN110851370B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817864B (zh) * 2021-02-23 2024-04-16 北京字节跳动网络技术有限公司 一种测试文件的生成方法、装置、设备及介质
CN113360406B (zh) * 2021-07-01 2022-08-02 上海哔哩哔哩科技有限公司 应用程序的JSBridge方法的测试方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360353B1 (en) * 1998-02-21 2002-03-19 Adaptec, Inc. Automated alternating current characterization testing
CN104750487A (zh) * 2015-03-25 2015-07-01 广州市悦智计算机有限公司 一种移动终端app的开发方法及启动方法
CN105468527A (zh) * 2015-12-09 2016-04-06 百度在线网络技术(北京)有限公司 一种应用中组件的测试方法及装置
CN107861875A (zh) * 2017-11-15 2018-03-30 北京中电普华信息技术有限公司 一种混合移动应用的模拟方法及***
CN108009084A (zh) * 2017-11-29 2018-05-08 北京中电普华信息技术有限公司 一种混合移动应用的测试方法、装置及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360353B1 (en) * 1998-02-21 2002-03-19 Adaptec, Inc. Automated alternating current characterization testing
CN104750487A (zh) * 2015-03-25 2015-07-01 广州市悦智计算机有限公司 一种移动终端app的开发方法及启动方法
CN105468527A (zh) * 2015-12-09 2016-04-06 百度在线网络技术(北京)有限公司 一种应用中组件的测试方法及装置
CN107861875A (zh) * 2017-11-15 2018-03-30 北京中电普华信息技术有限公司 一种混合移动应用的模拟方法及***
CN108009084A (zh) * 2017-11-29 2018-05-08 北京中电普华信息技术有限公司 一种混合移动应用的测试方法、装置及***

Also Published As

Publication number Publication date
CN110851370A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
CN111026396B (zh) 页面渲染方法、装置、电子设备及存储介质
CN110990105B (zh) 界面显示方法、装置、电子设备及存储介质
US20090228862A1 (en) Modularized integrated software development environments
CN111273899B (zh) 代码处理方法、装置、电子设备及存储介质
CN111221559B (zh) 应用更新方法、装置、存储介质、终端及服务器
CN110781080B (zh) 程序调试方法及装置、存储介质
CN111736916A (zh) 基于Java语言的动态扩展方法、装置、电子设备及存储介质
CN110851370B (zh) 程序测试方法及装置、存储介质
CN116933707B (zh) 设计电路的测试方法、装置、设备及介质
CN113377370A (zh) 一种文件处理方法、装置、电子设备及存储介质
CN111767058A (zh) 程序编译方法及装置、电子设备和存储介质
CN110795354A (zh) 信息处理方法、装置及存储介质
CN109344051B (zh) 数据处理的方法、装置、电子设备及存储介质
CN113010157A (zh) 一种代码生成方法及装置
CN104991857A (zh) 跟踪调试方法及装置
CN111209195A (zh) 一种生成测试用例的方法及装置
CN108600838B (zh) Android电视的信源切换方法、装置、Android电视及可读存储介质
CN111338961B (zh) 应用调试方法及装置、电子设备及存储介质
CN112214404A (zh) 移动应用的测试方法、装置、存储介质及电子设备
CN112631695A (zh) 一种数据校验方法、装置、电子设备及存储介质
CN109933357B (zh) 应用程序升级方法及装置
CN111459494A (zh) 一种代码处理方法及装置
CN111124553B (zh) 一种程序执行方法、装置、终端及存储介质
CN112612474A (zh) 产品移植方法、装置、存储介质和电子设备
CN110569037A (zh) 数据写入的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant