CN112650669A - 基于区块链的appium自动化测试方法 - Google Patents
基于区块链的appium自动化测试方法 Download PDFInfo
- Publication number
- CN112650669A CN112650669A CN202011406643.8A CN202011406643A CN112650669A CN 112650669 A CN112650669 A CN 112650669A CN 202011406643 A CN202011406643 A CN 202011406643A CN 112650669 A CN112650669 A CN 112650669A
- Authority
- CN
- China
- Prior art keywords
- test
- block chain
- apium
- automatic
- simulation operation
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 183
- 241000208306 Apium Species 0.000 claims abstract description 36
- 238000004088 simulation Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 230000004044 response Effects 0.000 claims description 6
- 230000007613 environmental effect Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 229910052711 selenium Inorganic materials 0.000 description 1
- 239000011669 selenium Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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
本发明公开了一种基于区块链的appium自动化测试方法,包括获取待执行应用程序的初始参数,将应用程序在appium框架下启动执行;从区块链上获取自动化测试任务发布节点上传的测试任务数据,根据测试任务数据确定自动化测试的测试环境数据,将测试环境数据存入区块链;根据测试任务数据确定自动化测试的测试脚本,将测试脚本上传至区块链,根据测试脚本生成模拟操作事件;在appium框架下按照深度遍历依次执行模拟操作事件,输出遍历结果,完成对应用程序的自动化测试。本发明通过在区块链上获取和存入测试任务数据,实现对自动化测试的流程监控,提高测试数据的真实性和安全性;在appium下使用使用深度遍历进行自动触发测试,占用内存少。
Description
技术领域
本发明涉及区块链的自动化测试技术领域,具体涉及一种基于区块链的appium自动化测试方法。
背景技术
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,可以节省人力、时间和硬件资源,提高测试效率。测试是完善的研发体系中不可或缺的一环,在自动化测试领域的工具层出不穷,但前端因其偏向GUI(Graphical UserInterface,图形用户接口,指采用图形方式显示的计算机操作用户界面)的特殊性而在其上可用的工具并不多,很多依旧以手工测试为主。现有的自动化测试方法大都是单纯使用的appium(一种开源测试自动化框架,可用于原生,混合和移动Web应用程序测试)、selenium(用于Web应用程序测试的工具)或者公司内部搭建工具,占用的内存高。同时,自动化测试通常需要多方共同完成,随着协作人员的变多,为了保证测试的安全性,协作各方对测试任务的具体完成情况不共享,导致测试过程中的数据真实性和有效性无法保证,测试数据不准确,降低了自动化测试的安全性。
发明内容
本发明要解决的技术问题是提供一种提高自动化测试安全性、降低内存占用的基于区块链的appium自动化测试方法。
为解决上述技术问题,本发明提供了一种基于区块链的appium自动化测试方法,包括以下步骤:
步骤1:获取待执行应用程序的初始参数,并生成启动参数文件,将应用程序在appium框架下启动执行;
步骤2:从区块链上获取自动化测试任务发布节点上传的测试任务数据,所述测试任务数据包括环境要求、工具选型以及任务分配;
步骤3:根据所述测试任务数据,确定自动化测试的测试环境数据,将所述测试环境数据存入区块链;根据所述测试任务数据,确定自动化测试的测试脚本,将所述测试脚本上传至区块链,根据所述测试脚本生成模拟操作事件;
步骤4:在appium框架下按照深度遍历依次执行模拟操作事件,输出遍历结果,完成对应用程序的自动化测试。
进一步地,所述步骤2中的测试任务数据由区块链上的自动化测试任务发布节点预先通过智能合约上传到区块链。
进一步地,所述区块链上的自动化测试任务发布节点预先通过智能合约上传到区块链,具体为自动化测试任务发布节点预先安装智能合约,之后通过智能合约将测试任务数据上至区块链,上传至区块链后区块链以广播的形式同步各节点。
进一步地,所述步骤3中确定自动化测试的测试环境数据,具体为:
首先根据测试设备获得***和***版本,然后获取测试应用的包名和启动名,最后根据测试需求自行添加其它参数。
进一步地,所述步骤3中确定自动化测试的测试环境数据的节点为一个用户节点或多个用户节点。
进一步地,所述步骤3中根据所述测试脚本生成模拟操作事件的触发执行方法为:生成待执行应用的模拟操作事件并进行压栈存储。
进一步地,所述生成待执行应用的模拟操作事件并进行压栈存储,具体过程为:对编辑控件生成模拟操作事件压栈存储,然后对列表控件生成模拟操作事件压栈存储,最后对除编辑控件和列表控件外的剩余控件生成模拟操作事件压栈存储。
进一步地,所述步骤4中在appium框架下按照深度遍历依次执行模拟操作事件,包括对Android客户端的自动化测试和对iOS客户端的自动化测试。
进一步地,所述对Android客户端的自动化测试过程为:
Android客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口,appium服务器端解析请求内容,调用对应的框架响应操作;
appium服务器端把请求内容转发给中间件,中间件安装在Android客户端监听接口并接收来自appium的命令,Android客户端调用UiAutomator命令进行自动化测试并将执行结果返回给appium服务器。
进一步地,所述对iOS客户端的自动化测试过程为:
iOS客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口,appium服务器端解析请求内容,调用对应的框架响应操作;
appium服务器端调用instruments.js启动socket server,同时分出一个子进程运行instruments.app进行自动化测试,将bootstrap.js注入到设备和外界进行交互,bootstrap.js将执行的结果返回给appium服务器端。
本发明的有益效果:该基于区块链的appium自动化测试方法,通过在区块链上获取和存入测试任务数据,实现了对自动化测试的流程监控,提高了测试数据的真实性和安全性;在appium下使用深度遍历进行自动触发测试,实现全方案、少内存的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
在本发明的描述中,需要理解的是,术语“包括”意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、***、产品或设备,没有限定于已列出的步骤或单元而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
参照图1流程图所示,本发明一种基于区块链的appium自动化测试方法的实施例,包括以下步骤:
步骤1:获取待执行应用程序的初始参数,并生成启动参数文件,将应用程序在appium框架下启动执行;具体参数包括***名(platformName)、***版本(platformVersion)、设备号(deviceName)、包名(pPackage)和启动名(appActivity)。
步骤2:从区块链上获取自动化测试任务发布节点上传的测试任务数据,所述测试任务数据包括环境要求、工具选型以及任务分配。
步骤3:根据所述测试任务数据,确定自动化测试的测试环境数据,即DesiredCapabilities(负责启动服务端时的参数设置,用于告诉服务器本次测试的上下文)。将所述测试环境数据存入区块链,本实施例中将所述测试脚本上传至区块链可以保证测试数据的安全性;根据所述测试任务数据,确定自动化测试的测试脚本,将所述测试脚本上传至区块链,根据所述测试脚本生成模拟操作事件。测试脚本包括的基本操作如表1所示。
方法名 | 作用 |
driver.pressKeyCode | 模拟按键操作 |
driver.startActivity | 打开指定应用的指定Activity |
TouchAction(driver).longPress().perform | 对控件模拟长按操作 |
webElement.click() | 对控件模拟点击操作 |
webElement.sendKeys() | 对控件模拟输入操作 |
driver.swipe() | 对控件模拟滑动操作 |
driver.tap() | 对控件模拟点击操作 |
findElement(By.name()) | 利用text属性或content-desc属性定位控件 |
findElement(By.id()) | 利用resource-id属性定位控件 |
findElement(By.xpath()) | 利用xpath属性定位控件 |
表1测试脚本包括的基本操作
步骤4:在appium框架下按照深度遍历依次执行模拟操作事件,即对待执行应用进行自动触发测试;输出遍历结果,完成对应用程序的自动化测试。深度遍历优先搜索一棵子树,然后是另一棵,和传统的遍历方法相比需要的内存相对较少,并且通过使用深度遍历能找出所有解决方案,可以实现全方案、少内存的有益效果。
本实施例中,所述步骤2中的测试任务数据由区块链上的自动化测试任务发布节点预先通过智能合约上传到区块链,具体为自动化测试任务发布节点预先安装智能合约,之后通过智能合约将测试任务数据上至区块链,上传至区块链后区块链以广播的形式同步各节点,区块链上的其它节点便可接收该测试任务数据。
本实施例中,所述步骤3中确定自动化测试的测试环境数据,具体为首先根据测试设备获得***和***版本,然后通过adb shell和dumps activity|grep mFousedActivity指令获取测试应用的包名和启动名,最后根据测试需求自行添加其它参数。确定自动化测试的测试环境数据的节点为一个用户节点或多个用户节点,具体的自动化测试执行节点协同完成这个自动化测试任务已经规定了,因此相应的自动化测试执行节点接到测试任务之后,首先要根据测试任务数据搭建自动化测试的测试环境数据。
本实施例中,所述步骤3中根据所述测试脚本生成模拟操作事件的触发执行方法为:生成待执行应用的模拟操作事件并进行压栈存储。具体过程为:对编辑控件EditText生成模拟操作事件Event并压栈存储,然后对列表控件ListView生成模拟操作事件Event并压栈存储,最后对除编辑控件和列表控件外的剩余控件生成模拟操作事件Event并压栈存储。
本实施例中,所述步骤4中在appium框架下按照深度遍历依次执行模拟操作事件,appium测试执行内部过程包括对Android客户端和对iOS客户端的自动化测试。
所述对Android客户端的自动化测试过程为:Android客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口(4723端口),在这里提供它提供了一套REST的接口,appium服务器接收web driver client标准rest请求,appium服务器端解析请求内容,调用对应的框架响应操作;appium服务器端把请求内容转发给中间件Bootstrap.jar,中间件Bootstrap.jar用java实现,安装在Android客户端监听接口(4723端口)并接收来自appium的命令,Android客户端调用UiAutomator命令进行自动化测试并将执行结果返回给appium服务器,appium服务器再将结果返回给appium客户端。
所述对iOS客户端的自动化测试过程为:iOS客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口(4723端口),在这里提供它提供了一套REST的接口,appium服务器接收web driver client标准rest请求,appium服务器端解析请求内容,调用对应的框架响应操作;appium服务器端调用instruments.js启动socket server,同时分出一个子进程运行instruments.app进行自动化测试,将bootstrap.js(一个UIAutomation脚本,ios下的自动化测试框架)注入到设备和外界进行交互,bootstrap.js将执行的结果返回给appium服务器端,appium服务器端再将结果返回给appium客户端。
该基于区块链的appium自动化测试方法,通过在区块链上获取和存入测试任务数据,实现了对自动化测试的流程监控,提高了测试数据的真实性和安全性;在appium下使用深度遍历进行自动触发测试,实现全方案、少内存的有益效果。区块链技术具有不可逆、不可伪造的特点,所以数据的真实性可以得到有效保证;区块链的算法实现安全、共识机制安全、***设计安全,具有特定协议的区块链能够实现不同程度上的匿名性,所以机密性和隐私保护的特点可以用来保护数据。因此,结合区块链和appium的测试数据的真实性和安全性更高,执行过程能够得到保护。同时,当前的区块链技术中已经出现了多种共识算法机制,即便测试过程中有多方协作,也不会出现安全性问题,根据测试任务数据测试出的结果更加真实可信,提高了自动化测试的安全性。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.一种基于区块链的appium自动化测试方法,其特征在于,包括以下步骤:
步骤1:获取待执行应用程序的初始参数,并生成启动参数文件,将应用程序在appium框架下启动执行;
步骤2:从区块链上获取自动化测试任务发布节点上传的测试任务数据,所述测试任务数据包括环境要求、工具选型以及任务分配;
步骤3:根据所述测试任务数据,确定自动化测试的测试环境数据,将所述测试环境数据存入区块链;根据所述测试任务数据,确定自动化测试的测试脚本,将所述测试脚本上传至区块链,根据所述测试脚本生成模拟操作事件;
步骤4:在appium框架下按照深度遍历依次执行模拟操作事件,输出遍历结果,完成对应用程序的自动化测试。
2.根据权利要求1所述的基于区块链的appium自动化测试方法,其特征在于:所述步骤2中的测试任务数据由区块链上的自动化测试任务发布节点预先通过智能合约上传到区块链。
3.根据权利要求2所述的基于区块链的appium自动化测试方法,其特征在于:所述区块链上的自动化测试任务发布节点预先通过智能合约上传到区块链,具体为自动化测试任务发布节点预先安装智能合约,之后通过智能合约将测试任务数据上至区块链,上传至区块链后区块链以广播的形式同步各节点。
4.根据权利要求1所述的基于区块链的appium自动化测试方法,其特征在于:所述步骤3中确定自动化测试的测试环境数据,具体为:
首先根据测试设备获得***和***版本,然后获取测试应用的包名和启动名,最后根据测试需求自行添加其它参数。
5.根据权利要求1所述的基于区块链的appium自动化测试方法,其特征在于:所述步骤3中确定自动化测试的测试环境数据的节点为一个用户节点或多个用户节点。
6.根据权利要求1所述的基于区块链的appium自动化测试方法,其特征在于:所述步骤3中根据所述测试脚本生成模拟操作事件的触发执行方法为:生成待执行应用的模拟操作事件并进行压栈存储。
7.根据权利要求6所述的基于区块链的appium自动化测试方法,其特征在于:所述生成待执行应用的模拟操作事件并进行压栈存储,具体过程为:对编辑控件生成模拟操作事件压栈存储,然后对列表控件生成模拟操作事件压栈存储,最后对除编辑控件和列表控件外的剩余控件生成模拟操作事件压栈存储。
8.根据权利要求1所述的基于区块链的appium自动化测试方法,其特征在于:所述步骤4中在appium框架下按照深度遍历依次执行模拟操作事件,包括对Android客户端的自动化测试和对iOS客户端的自动化测试。
9.根据权利要求8所述的基于区块链的appium自动化测试方法,其特征在于,所述对Android客户端的自动化测试过程为:
Android客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口,appium服务器端解析请求内容,调用对应的框架响应操作;
appium服务器端把请求内容转发给中间件,中间件安装在Android客户端监听接口并接收来自appium的命令,Android客户端调用UiAutomator命令进行自动化测试并将执行结果返回给appium服务器。
10.根据权利要求8所述的基于区块链的appium自动化测试方法,其特征在于,所述对iOS客户端的自动化测试过程为:
iOS客户端使用webdriver测试脚本,appium基于webDriver协议在服务端建立接口,appium服务器端解析请求内容,调用对应的框架响应操作;
appium服务器端调用instruments.js启动socket server,同时分出一个子进程运行instruments.app进行自动化测试,将bootstrap.js注入到设备和外界进行交互,bootstrap.js将执行的结果返回给appium服务器端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011406643.8A CN112650669A (zh) | 2020-12-04 | 2020-12-04 | 基于区块链的appium自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011406643.8A CN112650669A (zh) | 2020-12-04 | 2020-12-04 | 基于区块链的appium自动化测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112650669A true CN112650669A (zh) | 2021-04-13 |
Family
ID=75350294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011406643.8A Pending CN112650669A (zh) | 2020-12-04 | 2020-12-04 | 基于区块链的appium自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650669A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829389A (zh) * | 2018-03-29 | 2018-11-16 | 中南大学 | 基于Appium的安卓应用自动化触发执行方法 |
CN108984375A (zh) * | 2018-05-31 | 2018-12-11 | 腾讯科技(深圳)有限公司 | 一种内容抓取方法、装置、***以及存储介质 |
CN109753433A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的自动化测试方法、装置及电子设备 |
CN109753434A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的性能测试方法、装置、电子设备及存储介质 |
CN109783372A (zh) * | 2018-12-26 | 2019-05-21 | 中链科技有限公司 | 基于区块链的软件测试方法、装置、电子设备及存储介质 |
CN110928625A (zh) * | 2019-11-21 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 应用程序的运行控制方法、装置、电子设备及存储介质 |
US10671515B1 (en) * | 2018-11-30 | 2020-06-02 | Bank Of America Corporation | Recording and playback of electronic event sequence in a distributed ledger system |
US10716021B1 (en) * | 2018-07-19 | 2020-07-14 | Sprint Communications Company L.P. | Minimization of drive test (MDT) data donor device selection |
-
2020
- 2020-12-04 CN CN202011406643.8A patent/CN112650669A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829389A (zh) * | 2018-03-29 | 2018-11-16 | 中南大学 | 基于Appium的安卓应用自动化触发执行方法 |
CN108984375A (zh) * | 2018-05-31 | 2018-12-11 | 腾讯科技(深圳)有限公司 | 一种内容抓取方法、装置、***以及存储介质 |
US10716021B1 (en) * | 2018-07-19 | 2020-07-14 | Sprint Communications Company L.P. | Minimization of drive test (MDT) data donor device selection |
US10671515B1 (en) * | 2018-11-30 | 2020-06-02 | Bank Of America Corporation | Recording and playback of electronic event sequence in a distributed ledger system |
CN109753433A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的自动化测试方法、装置及电子设备 |
CN109753434A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的性能测试方法、装置、电子设备及存储介质 |
CN109783372A (zh) * | 2018-12-26 | 2019-05-21 | 中链科技有限公司 | 基于区块链的软件测试方法、装置、电子设备及存储介质 |
CN110928625A (zh) * | 2019-11-21 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 应用程序的运行控制方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159049B (zh) | 接口自动化测试方法及*** | |
CN106095677B (zh) | 基于Robot Framework实现的RESTful Webservice接口自动化测试方法 | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
CN110209652A (zh) | 数据表迁移方法、装置、计算机设备和存储介质 | |
US20130179858A1 (en) | Framework for automated testing of mobile apps | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及*** | |
WO2019075994A1 (zh) | 一种iOS端Mock数据的方法、存储介质、设备及*** | |
CN107302476A (zh) | 一种测试异步交互***的自动化测试方法与*** | |
CN101853157A (zh) | 一种应用软件gui对象自动识别方法 | |
CN103631590A (zh) | 自动化测试脚本的编辑方法 | |
CN105204991A (zh) | 一种物联设备测试方法及装置 | |
CN114003451B (zh) | 一种接口测试方法、装置、***及介质 | |
CN111581067B (zh) | 一种数据采集方法和装置 | |
CN110297637A (zh) | 全平台客户端软件适用的资源文件热重载开发工具及方法 | |
CN114238071A (zh) | 基于数字化仿真技术的dcs软件自动验证***和方法 | |
CN105760300A (zh) | 一种stk/utk业务的自动化测试方法及测试*** | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN110750453A (zh) | 基于html5的智能移动端测试方法、***、服务器及存储介质 | |
CN102750143A (zh) | 基于matlab com组件调用的dsp开发方法 | |
CN112650669A (zh) | 基于区块链的appium自动化测试方法 | |
CN113590485B (zh) | 一种多管理***集成方法及计算机可读存储介质 | |
CN111580853A (zh) | 多渠道软件安装包通用生成方法 | |
CN107451435B (zh) | 一种硬件加密机的管控方法、管控机及管控*** | |
CN115190057A (zh) | 自动化测试方法、装置以及电子设备 | |
CN113934552A (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 |