基于Monkey的参数可定制的自动测试系统及方法与流程

未命名 08-29 阅读:125 评论:0

基于monkey的参数可定制的自动测试系统及方法
技术领域
1.本发明涉及软件测试技术领域,特别是涉及一种基于monkey的参数可定制的自动测试系统及方法。


背景技术:

2.monkey测试是一种自动化的软件测试方法,它通过随机生成的输入数据和事件来测试应用程序或系统的稳定性和可靠性。
3.monkey是一个命令行工具,通常在目标设备上进行monkey测试需要在cmd命令行输入完整的运行指令,或是把多个monkey指令汇集在一起,编写成脚本来进行,比较耗时繁琐。而且,现有的基于monkey的自动化测试方法,多数是在monkey测试过程中记录过程数据,测试结束后通过记录的数据分析测试结果。因此,现有的monkey测试存在测试效率低、测试灵活性低等问题,无法有效保证测试产品质量。
4.需要说明的是,在上述背景技术部分公开的信息仅用于对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本发明的目的在于解决monkey测试的测试效率和测试灵活性较低的技术问题,提供一种基于monkey的参数可定制的自动测试系统及方法。
6.为实现上述目的,本发明采用以下技术方案:
7.一种基于monkey的参数可定制的自动测试系统,包括:
8.设备管理模块,用于连接至少一个目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;
9.参数配置模块,用于对monkey测试参数进行设置,以定制测试事件;
10.测试计划模块,用于自定义设置测试事件的测试时间、运行次数与延时时间,以制定测试计划;
11.测试执行模块,用于根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,获取测试结果;
12.测试分析模块,用于根据测试过程数据自动分析并输出测试报告。
13.在一些实施例中,所述设备管理模块、参数配置模块和测试计划模块分别通过可视化界面选择需要测试的测试包、设置测试参数、制定测试计划,以实现可视化操作。
14.在一些实施例中,所述可视化界面为web页面,所述web页面基于electron搭建windows桌面应用,使用antdesign组件库搭建页面。
15.在一些实施例中,所述设备管理模块通过数据接口将目标设备和所述测试系统所在服务器连接;所述设备管理模块还用于识别目标设备类型,根据目标设备类型自动关联同类型的常用历史测试脚本。
16.在一些实施例中,所述测试参数包括:用户操作间的时延、触摸事件百分比、反馈
信息级别和伪随机数生成器的seed值。
17.在一些实施例中,所述反馈信息级别分为level0、level1和level2。
18.在一些实施例中,所述测试执行模块还用于对每次生成的测试脚本进行记录,所记录的历史测试脚本能够直接重复运行,当重复的测试场景再次测试时能够通过所述历史测试脚本实现一键化执行测试。
19.在一些实施例中,所述测试执行模块还用于集成devops工具链,在持续集成流程中调度所述测试系统执行每日自动化测试;所述每日自动化测试具体为:通过jenkins触发定时测试任务,获取测试系统内计划的测试脚本,在测试环境执行测试任务,获取测试结果并进行反馈。
20.在一些实施例中,所述测试分析模块根据测试过程数据自动分析并输出测试报告具体为:获取monkey测试过程中的日志数据,重定向日志文件并保存;通过分析保存的日志文件,进行自动化分析处理,统计anr和crash异常点,截取异常日志;自动统计测试过程中的异常点总数,记录异常日志并进行反馈。
21.本发明还提供一种基于monkey的参数可定制的自动测试方法,基于如上任一项所述的基于monkey的参数可定制的自动测试系统,包括如下步骤:
22.a1、连接所述测试系统和目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;
23.a2、对monkey测试参数进行设置,定制测试事件;
24.a3、自定义设置测试事件的测试时间、运行次数与延时时间,制定测试计划;
25.a4、根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,并获取测试结果;
26.a5、对测试结果进行自动化分析并输出测试报告。
27.本发明具有如下有益效果:
28.本发明提供的基于monkey的参数可定制的自动测试系统,通过设备管理模块连接多个目标设备同时进行monkey测试,通过参数配置模块自定义设置monkey测试参数,通过测试计划模块自定义设置测试时间、运行次数与延时时间,通过测试执行模块自动生成测试脚本进行测试,通过测试分析模块自动分析测试过程数据并生成测试报告,从而提高测试效率,增加测试灵活性,保证测试产品质量。
29.此外,在本发明的一些实施例中,还具有如下有益效果:
30.通过可视化界面选择需要测试的测试包、设置测试参数、制定测试计划,从而实现可视化操作,进一步增加测试灵活性。
31.通过测试执行模块记录历史测试场景和测试脚本,相同的测试场景二次测试时可以一键执行,从而实现测试脚本可记录以及测试场景可复用,进一步提高测试效率。
32.本发明实施例中的其他有益效果将在下文中进一步述及。
附图说明
33.图1是本发明实施例中基于monkey参数可定制的自动测试系统的测试流程示意图。
34.图2是本发明实施例中基于monkey参数可定制的自动测试系统的结构示意图。
35.图3是本发明实施例中基于monkey参数可定制的自动测试系统的用户界面示意图。
具体实施方式
36.以下对本发明的实施方式做详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
37.参阅图1至图3,本发明实施例提供一种测试参数可定制、测试脚本可记录、测试结果可自动化分析的基于monkey的参数可定制的自动测试系统。该测试系统包括:设备管理模块,用于连接至少一个目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;参数配置模块,用于对monkey测试参数进行设置,以定制测试事件;测试计划模块,用于自定义设置测试事件的测试时间、运行次数与延时时间,以制定测试计划;测试执行模块,用于根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,获取测试结果,测试执行过程不需要手动输入测试脚本;测试分析模块,用于根据测试过程数据自动分析并输出测试报告。
38.该测试系统所有的测试操作均提供可视化界面。优选的,可视化界面基于electron(前端开发框架)开源技术,通过jsbridge(一种js和native之间的通信方式)实现跨平台通信,通过内嵌webview(可视化组件)实现搭建window桌面应用。基于node(结点)中的child_process模块集成web页面与shell命令脚本,并通过electron的jsbridge实现跨平台通信,进行数据传输通信。基于umijs的框架的antdesign组件库快速搭建业务页面。
39.设备管理模块通过数据接口将目标设备和测试系统所在服务器连接,测试系统会获取所有连接的测试设备。具体地,通过adb device指令获取当前测试系统连接的设备信息,截取设备号供测试执行的时候指定设备,以实现多设备同时执行monkey测试。
40.设备管理模块还用于识别目标设备类型,测试系统会根据接入目标设备的类型,自动关联同类型的常用历史测试脚本,从而节约测试成本。
41.优选地,设备管理模块获取设备号后,通过adb-s设备shell pm list package获取当前设备所有的apk包(测试包)。
42.当测试系统与目标设备连接后,通过web页面在参数配置模块中设置monkey测试相关的所有参数。所有的测试参数都可以根据测试场景定制选择。测试参数全都可以通过web页面来按需选择,测试系统根据选择后的测试参数结合目标设备和测试包生成测试脚本。测试参数内容包括:
43.‑‑
throttle,用于指定用户操作(即事件)间的时延;
44.‑‑
pct-touch,用于调整触摸事件的百分比;
45.‑‑
pct-motion,用于调整动作事件的百分比;
46.‑‑
pct-trackball,用于调整轨迹事件的百分比;
47.‑‑
pct-nav,用于调整“基本”导航事件的百分比;
48.‑‑
pct-majornav,用于调整“主要”导航事件的百分比;
49.‑‑
pct-syskeys,用于调整“系统”按键事件的百分比;
50.‑‑
pct-appswitch,用于调整启动activity的百分比;
51.‑‑
pct-anyevent,用于调整其它类型事件的百分比;
52.‑‑
ignore-crashes,用于指定当应用程序崩溃时(force&close错误),monkey是否中止运行。若是使用此参数,即便应用程序崩溃,monkey依然会发送事件,直到事件计数完成;
53.‑‑
ignore-timeouts,用于指定当应用程序发生anr(application no responding)错误时,monkey是否中止运行。若是使用此参数,即便应用程序发生anr错误,monkey依然会发送事件,直到事件计数完成;
54.‑‑
ignore-security-exception,用于指定当应用程序发生许可错误时(如证书许可,网络许可等),monkey是否中止运行。若是使用此参数,即便应用程序发生许可错误,monkey依然会发送事件,直到事件计数完成;
55.‑‑
kill-process-after-error,用于指定当应用程序发生错误时,是否中止其运行。若是指定此参数,当应用程序发生错误时,应用程序中止运行并保持在当前状态;
56.‑‑
v,用于指定反馈信息级别;
57.‑‑
s,用于伪随机数生成器的seed值;
58.‑‑
monitor-native-crashes,用于指定是否监视并报告应用程序发生崩溃的本地代码;
59.‑‑
ignore-native-crashes,用于忽略native层代码的崩溃;
60.上述反馈信息级别分为level0、level1和level2。这三个不同等级可以在参数配置模块中按需选择,在一些实施例中,level0表示:提供很少的信息,除了启动通知,测试完成和最终结果;level1表示:提供更详细的信息,如个别事件被发生至测试activity;level2表示:提供更详细的设置等信息,如activity选中和未选中的测试信息。
61.参数配置模块设置完成后,在测试计划模块中设置本次的执行时间、执行次数以及执行延迟时间。参数非必填,可通过测试场景自定义。测试计划模块设置完成后,测试系统会根据设置的时间点执行多次测试。
62.测试执行模块可以记录历史测试脚本数据(每次生成的测试脚本)并保存至测试分析模块中的数据库(数据库用于测试系统的数据记录),所记录的历史测试脚本可以直接点击再重复运行,当典型重复的测试场景二次执行(再次测试)时可以通过所记录的历史测试脚本实现一键化执行测试。在一些实施例中,测试执行模块在开始运行测试脚本前会进行判断,测试条件满足要求时会在后台模拟cmd命令执行测试脚本。
63.测试执行模块还用于集成devops工具链,在持续集成(ci)流程中调度测试系统执行每日自动化测试。每日自动化测试具体为:通过jenkins触发定时测试任务,获取测试系统内计划的测试脚本,在每日构建的测试环境中自动执行测试任务,获取测试结果并进行反馈。优选地,将测试结果以邮件的方式反馈发送给用户。当目标设备或者测试包升级后,测试系统可以通过jenkins自动触发测试任务,以保障本次升级对历史的测试功能无影响。
64.在测试脚本执行完成后,测试分析模块获取monkey测试过程中的日志数据,重定向日志文件并保存。测试分析模块通过分析保存的日志文件,进行自动化分析处理,统计anr和crash异常点,截取异常日志,异常日志的截取可以避免冗余的测试数据,更加直观地判断各测试包的测试结果,对测试记录进行过滤、汇总与分析,大大提高了测试的效率与质量。测试结果自动化分析处理后,测试分析模块自动统计测试过程中的异常点总数,记录异常日志并进行反馈。优选地,测试分析模块在测试结束后自动生成测试异常统计表与测试
异常日志表,通过excel的方式保存并反馈给用户。
65.本发明实施例还公开了一种基于monkey的参数可定制的自动测试方法,基于上述的基于monkey的参数可定制的自动测试系统,包括如下步骤:
66.a1、连接测试系统和目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包。
67.a2、对monkey测试参数进行设置,定制测试事件。
68.a3、自定义设置测试事件的测试时间、运行次数与延时时间,制定测试计划。
69.a4、根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,并获取测试结果。
70.a5、对测试结果进行自动化分析并输出测试报告。
71.本发明实施例提供的基于monkey的参数可定制的自动测试系统,通过设备管理模块实现对多目标设备的连接与管理,获取目标设备的测试包信息,并可根据所获取的信息对测试参数进行灵活匹配;通过参数配置模块对测试相关的monkey参数进行设置;通过测试计划模块,根据测试需求,模拟测试场景,定制测试的次数与时间,实现测试执行自动化;通过测试执行模块,基于参数配置模块,根据参数自动生成测试脚本进行测试;通过测试分析模块,当测试执行完成后根据测试过程数据自动化分析测试结果并生成测试报告。本发明实施例通过可视化页面替代传统的cmd窗口发送adb指令进行monkey测试,测试执行模块会记录历史的测试执行场景,相同的测试场景二次测试时可以一键执行,测试分析模块自动分析测试过程数据并生成测试报告。实现了测试参数可配置、测试脚本可记录以及测试场景可复用,极大地提高了测试效率,增加了测试灵活性,保证了测试产品质量。
72.实施例一
73.如图2所示,本实施例提供的基于monkey可定制的自动测试与分析系统包括:设备管理模块、参数配置模块、测试计划模块、测试执行模块以及测试分析模块。该系统所有的测试操作均提供可视化界面。前端页面通过内嵌webview实现搭建window桌面应用。业务页面基于umijs的框架的antdesign组件库进行开发,并通过electron的jsbridge实现跨平台通信,进行数据传输通信。
74.设备管理模块主要是基于node框架实现,通过child_process执行shell命令脚本,获取连接的目前设备信息。
75.测试执行模块也是通过child_process将拼接的测试脚本下发给测试设备,执行monkey测试。
76.测试分析模块基于python通过使用sed工具分析monkey日志文件,并且通过pandas模块对分析结果进行汇总记录。
77.如图1和图3所示,本实施例的基于monkey参数可定制的自动测试系统的具体测试操作流程包括以下步骤:
78.s1:目标设备正常接入测试系统后,可以在测试系统内选择目标设备进行测试。测试系统会根据接入的目标设备类型,自动匹配同类型设备的历史测试脚本。
79.根据测试场景,测试系统支持选择一个设备或者多个设备进行测试。
80.s2:目标设备接入后,测试系统会获取当前目标设备所有待测试的apk包,用户可以在界面中选择需要的apk包进行测试。
81.s3:用户可以在界面(wer页面)中设置monkey测试的相关参数,具体包括用户操作(即事件)间的时延、触摸事件百分比、反馈信息级别、伪随机数生成器的seed值以及程序运行中的相关配置。
82.s4:用户可以在界面(wer页面)中制定测试计划,根据测试场景配置测试时间、运行次数以及延时时间。
83.s5:测试系统会根据用户选择的monkey测试参数,自动生成测试脚本。
84.测试场景案例:
85.测试包名com.android.settings,触摸事件的百分比10%,动作事件的百分比20%,轨迹事件的百分比30%,日志等级为level3,伪随机数生成器的seed值为3500,事件执行次数为100000。
86.devops作为敏捷开发重要的实现途径,测试系统支持jenkins持续集成,通过jenkins任务触发测试任务。持续集成作为devops中重要的一环,通过自动化构建与测试来加快产品开发速度、提高产品质量和可靠性。
87.本实施例中,持续集成的具体实现如下:
88.首先是插件安装:在jenkins的管理界面中,点击"manage jenkins",然后选择"manage plugins"。在"available"选项卡中搜索并安装以下插件:android emulator plugin、gradle plugin、android lint plugin、apk builder plugin、test resultsanalyzerplugin。
89.创建项目:在jenkins主页上,点击"new item"创建一个新的项目。输入项目名称,并选择"freestyle project"或者"pipeline"作为项目类型。
90.配置构建步骤:根据项目需求,配置构建步骤。以下是一些常见的配置示例:在"build"部分中,配置gradle构建步骤,例如执行gradle命令进行代码编译、运行测试和生成apk文件等。使用android lint插件配置代码静态分析步骤。使用apkbuilder插件配置构建apk文件的步骤。使用test resultsanalyzer插件配置测试结果分析步骤。
91.系统集成测试:在构建完成后,自动从测试系统获取需要的monkey测试脚本,执行测试并将结果通知到用户。从自动化构建到自动化测试的过程以实现持续集成的目标。
92.s6:在步骤s5执行完成后,手动执行测试或通过jenkins触发测试任务,测试系统会在后台模拟cmd命令自动执行测试脚本。手动执行测试可以是在测试系统内的页面上进行相关操作使其开始测试,jenkins触发测试任务是指通过jenkins来直接调度测试系统内的测试任务进行测试,不需要在测试系统内操作。
93.在自动执行测试脚本完成后,记录历史测试脚本,并存放在数据库中,增加测试脚本复用性,提高测试效率。
94.s7:在步骤s6执行完成后,根据测试数据,自动化分析测试结果。
95.测试结果分析包括崩溃日志分析统计:monkey测试期间,如果应用程序崩溃或发生异常,会生成崩溃日志。这些日志记录了崩溃的堆栈跟踪信息,可以帮助开发人员定位并解决问题。
96.anr(应用程序无响应)日志分析统计:如果应用程序在monkey测试期间出现无响应的情况,测试系统会生成anr日志。anr日志包含了导致应用程序无响应的线程信息,有助于定位并解决应用程序的性能问题。
97.覆盖率报告分系统计:monkey测试可以生成应用程序的覆盖率报告,显示在测试期间访问的代码和功能的覆盖情况。通过分析覆盖率报告,可以了解哪些部分的代码被测试覆盖,哪些部分需要进一步测试和验证。
98.性能指标分析统计:monkey测试期间可以收集应用程序的性能指标,如cpu使用率、内存占用、网络流量等。分析这些指标可以评估应用程序的性能表现,并发现性能瓶颈和优化机会。
99.异常情况分析统计:分析monkey测试期间发生的异常情况,如闪退、卡顿、ui(用户界面)异常等。可以统计异常的频率和类型,帮助开发人员识别和解决问题。
100.测试覆盖范围和结果总结:根据monkey测试的目标和测试策略,可以对测试覆盖的范围和结果进行总结。包括测试持续时间、事件数量、覆盖的应用程序功能等信息。
101.测试结果自动写入excel文件中,用户可以通过测试报告了解测试执行结果。
102.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。

技术特征:
1.一种基于monkey的参数可定制的自动测试系统,其特征在于,包括:设备管理模块,用于连接至少一个目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;参数配置模块,用于对monkey测试参数进行设置,以定制测试事件;测试计划模块,用于自定义设置测试事件的测试时间、运行次数与延时时间,以制定测试计划;测试执行模块,用于根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,获取测试结果;测试分析模块,用于根据测试过程数据自动分析并输出测试报告。2.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述设备管理模块、参数配置模块和测试计划模块分别通过可视化界面选择需要测试的测试包、设置测试参数、制定测试计划,以实现可视化操作。3.如权利要求2所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述可视化界面为web页面,所述web页面基于electron搭建windows桌面应用,使用antdesign组件库搭建页面。4.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述设备管理模块通过数据接口将目标设备和所述测试系统所在服务器连接;所述设备管理模块还用于识别目标设备类型,根据目标设备类型自动关联同类型的常用历史测试脚本。5.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述测试参数包括:用户操作间的时延、触摸事件百分比、反馈信息级别和伪随机数生成器的seed值。6.如权利要求5所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述反馈信息级别分为level0、level1和level2。7.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述测试执行模块还用于对每次生成的测试脚本进行记录,所记录的历史测试脚本能够直接重复运行,当重复的测试场景再次测试时能够通过所述历史测试脚本实现一键化执行测试。8.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述测试执行模块还用于集成devops工具链,在持续集成流程中调度所述测试系统执行每日自动化测试;所述每日自动化测试具体为:通过jenkins触发定时测试任务,获取测试系统内计划的测试脚本,在测试环境执行测试任务,获取测试结果并进行反馈。9.如权利要求1所述的基于monkey的参数可定制的自动测试系统,其特征在于,所述测试分析模块根据测试过程数据自动分析并输出测试报告具体为:获取monkey测试过程中的日志数据,重定向日志文件并保存;通过分析保存的日志文件,进行自动化分析处理,统计anr和crash异常点,截取异常日志;自动统计测试过程中的异常点总数,记录异常日志并进行反馈。10.一种基于monkey的参数可定制的自动测试方法,其特征在于,基于如权利要求1至9中任一项所述的基于monkey的参数可定制的自动测试系统,包括如下步骤:a1、连接所述测试系统和目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;
a2、对monkey测试参数进行设置,定制测试事件;a3、自定义设置测试事件的测试时间、运行次数与延时时间,制定测试计划;a4、根据设置好的monkey测试参数自动生成测试脚本并对测试包进行测试,并获取测试结果;a5、对测试结果进行自动化分析并输出测试报告。

技术总结
本发明公开了一种基于Monkey的参数可定制的自动测试系统及方法,该系统包括:设备管理模块,用于连接至少一个目标设备,获取目标设备所有待测试的测试包,并自定义选择需要测试的测试包;参数配置模块,用于对Monkey测试参数进行设置,以定制测试事件;测试计划模块,用于自定义设置测试事件的测试时间、运行次数与延时时间,以制定测试计划;测试执行模块,用于根据测试参数自动生成测试脚本并对测试包进行测试,获取测试结果;测试分析模块,用于根据测试过程数据自动分析并输出测试报告。本发明能够连接多个目标设备同时测试,可自定义设置测试参数及自动化分析测试结果,从而提高测试效率,增加测试灵活性,保证测试产品质量。保证测试产品质量。保证测试产品质量。


技术研发人员:严璐 付志宝 张博
受保护的技术使用者:深圳市桑达无线通讯技术有限公司
技术研发日:2023.06.20
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐