admin管理员组

文章数量:1532722

2024年5月12日发(作者:)

APP软件自动化测试方案的设计与实现 祝明霞

发布时间:2021-09-22T08:45:03.652Z 来源:《中国科技人才》2021年第18期 作者: 祝明霞

[导读] 每个版本的测试过程中,有很大的一部分是重复性的又不得不测的内容,手动的测试就显得效率比较低。本文主要以安卓APP软件

为对象,使用appium测试框架来搭建一套前端功能的自动化测试环境。

上海泽信软件有限公司

摘要:每个版本的测试过程中,有很大的一部分是重复性的又不得不测的内容,手动的测试就显得效率比较低。本文主要以安卓APP

软件为对象,使用appium测试框架来搭建一套前端功能的自动化测试环境。测试方案主要针对功能测试,测试过程包括环境搭建、测试脚

本编写和脚本运行,最后对结果进行分析。

关键词:软件测试、自动化,appium、app、安卓

1.引言

随着互联网的发展和智能手机的普及,大家对APP的要求也越来越高,在不计其数的APP中,要不被遗忘和淘汰就需要不断的迭代更新

版本,而且在互联网行业中都是快速的迭代,2周一个版本甚至1周一个版本,在如此快速的迭代中,要保证投入到市场的APP体验良好,

这对app的健壮性和完整性提出了更好的要求,软件测试成了通向市场最后也是最重要要的一个环节。

测试技术上主要分为手工测试和自动化测试,在我工作过的企业大多数时候都是采用手工测试,手动的测试各个功能,验证每一条业

务逻辑,再验证整体流程,至此完成了功能测试和全回归测试,一个版本的测试大概的测试流程基本已经完成。这里我们要说的是其中的

回归测试,回归测试的定义是:修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,从所做的测试工

作来看,测试的内容是有重复的,上一版的功能肯定是经过测试,再进行测试可以说很大一部分重复的工作,还有一小部分是兼容新功能

而需要做的测试。

在测试工薪宝APP时候,团队人员较少,我必须独自负责所有的测试工作,还要保证快速的迭代质量,这让我不得不想办法提高测试

效率,于是将重复测试的部分进行自动化测试这样被提上了日程。

本次以登录模块为例,针对安卓平台实施该项目的第一个自动化测试方案,在本地搭建测试环境,编写测试脚本,并在真机上自动运

行,根据运行结果进行分析测试结果。

2.业务流程

工薪宝app的登录模块是相对比较独立的模块,在版本迭代中几乎不会进行修改,但是其功能却是软件与用户进行关联的重要环节,所

以对此模块进行自动化测试在合适不过了。

在启动app后先展示首页新闻资讯,未登录状态点击个人中心进行登录,新用户需进行注册后才可登录,已有账户可直接登录,信息校

验正确登录完成。通过模拟新用户和老用户两种登录情况来验证登录功能,其中需要准备新老用户测试数据,以便脚本自动填写顺利运

行,登录模块的流程如下图1:

通过对比测试框架的优缺点,再加上工薪宝app的应用平台是Android和ios,从提高脚本的使用率减轻工作量的角度出发,使用appium

是最适合的。Appium不仅可以对原生应用native app进行测试还可以对基于浏览器的应用web app和混合应用hybrid app进行自动化测试。

3.2脚本语言和开发工具

(1)语言

Python的语法相对简单,很适合初学者。java语言相对比较复杂,学习周期比较长,再考虑到后期的维护难度还有较高的阅读性,我们

选择了Python作为脚本语言。

(2)开发工具

eclipse是一款很强大的工具,通过pydev插件可以支持开发Python语言的插件,需要的时间比较长过程较复杂,而且使用中对语法智能

提示不够完善,不太适合初学者。Pycharm具有一整套可以帮助使用Python语言开发时提提高效率的工具特别是智能提示,安装即可编写脚

本,更适合Python语言及初学者。

(3)还使用adb命令来确定手机与电脑的链接、查找app相关的版本、启动activity等信息。

4.测试环境搭建

(1)安装Android SDK:安装完成之后配置环境变量,新增系统变量Android_home,值为Android SDK的路径;修改系统变量path,将

tools、platform-tools两个目录加入到path路径里,添加好变量后才可以使用其中的一些命令。配置完成后再cmd中输入Android –h运行后显示

很多注意信息类提示表示配置正确。

(2)安装JDK:官网直接下载,按引导安装即可。新增Java_home变量,值为JDK的目录路径。配置完成之后,在cmd中输入java -

version,运行后能显示JDK版本表示配置正确。

(3)安装:官网下载,按引导安装即可。

(4)安装appium:官网下载或者使用npm命令安装,命令安装较慢下载安装包更快一些。安装完成后,进入cmd输入appium-doctor 运

行后显示successful说明安装成功。

(5)安装appium-Python-client:在cmd中通过pip进行安装(pip是一个安装和管理Python包的工具)。

(6)安装pycharm:官网下载对应的版本后按照引导安装到D盘,需要的内存较多,不要放在C盘。

5.测试用例设计

工薪宝app的登录模块触发的节点在进入app首页之后再进入个人中心或者操作其他有关交易的功能时(交易相关的必须查询账户的数

据,必须在登录的情况下才可以进行)。然后就是老用户登录和新用户登录,老用户登录就是输入账户密码及验证即可,新用户需要进行

注册,输入相应的信息进行注册后再进行登录,主要的测试用例如下表2:

6.测试脚本编写

我们需要通过运行脚本,让手机上的app按照脚本中的编写的测试用例去执行,首先要确定手机已经电脑,而且可以进行调试。在cmd

窗口使用adb shell命令来验证手机是否已经正确连接到电脑。

编写的测试脚本中主要有两大块的内容有,一块是启动app,只有能启动app了,才能进行下面的测试;二就是测试用例,这里是要定

位UI上的控件,通过控件来模拟实际操作。详细的实现过程如下:

1、使用aapt工具获取app包名和入口activity名称。打开SDK的builds-tools目录aapt工具的路径,在cmd中进入aapt目录执行

aapt dump badging E:d_8.1.6_(app文件所在的电脑端路径),运行结果中

package:name=‘d’,入口activity:name=‘ ctivity’

启动app的部分,实现如下:

desired_caps = {}//初始化

desired_caps['platformName']= 'Android'//测试平台

desired_caps['platformVersion']= '5.0'//系统版本

desired_caps['deviceName']= 'Android Emulator'//设备名称

desired_caps['appPackage']= 'ator2'//app的绝对路径

desired_caps['appActivity']= 'ctivity'//app的activity名

driver = ('http://localhost:4723/wd/hub',desired_caps)

以上代码编写完成,调试无错后用数据线接入安卓手机,并打开手机的开发者模式后运行脚本唤起工薪宝app。

2、使用工具来进行元素的定位,这个工具在SDK的tools文件夹下面,双击直接运行。手机连接电脑进入开发者模

式后,在手机上打开工薪宝app进入到需要抓取的界面,刷新后抓取到页面元素,从中获取:

id属性对应的是resource_id的值,id有可能重复,可以通过index来获取需要的元素,使用driver=find_element_by_id(resource-id)定

位。

class属性对应的是className,这个值都是会重复,通过index来获取所需要的元素,从0开始查找dom树重大值相同的class属性,使用

driver=find_ame(className)定位

text属性对应的是name,使用driver=find_(name)

获取到对应的控件后,通过事件来操作控件,click()点击操作、send()在输入框输入内容、swipe()滑动屏幕。

6.运行和结果分析

appium在与app交互时要开启一个session,开启之后会返回一个全局唯一的session id,存在于整个测试过程中,在开启session的同事传

入一个desired capabileties 用来保存配置信息,这些信息是以键值对的方式保存的,包括测试平台ios或Android、版本信息、app名称等。

脚本运行时可以在手机端看到每一步的操作执行情况,观察执行的操作过程中是否有bug。脚本执行完毕后,根据pycharm控制台的错

误提示定位到bug所在的代码行,再根据appium的日志分析错误对应的app操作路径,进行复现来定位到问题。

7.总结与展望

7.1总结

此次的app自动化测试方案是基于appium+Python+pycharm的,在实施上基本是可行的,从业务分析到方案设计进行测试环境搭建,再

到测试用例设计,最后测试脚本编写实现了Android App的UI自动化测试的全过程,模拟了登录模块的功能测试,取得较好的效果,解决了

回归测试中重复测试、导致的测试工作量大的等问题。而且此套测试方案还可以在ios平台上进行复用,可以有效的降低软件质量控制的成

本,同时也提高测试人员的技术水平。

7.2展望

在现有方案的基础上还可以覆盖到ios平台,让回归测试变的更加方便。现有的测试环境下对测试结果的展示不够直接,可以增加输出

的的设计生成测试报告,让测试结果更清晰明确。

参考文献:

[1]许奔.深入理解Android自动化测试 第9章 monkeyrunner原理分析

[2]康彩彩.基于Android的自动化测试框架研究

[3]Appium?社区?TesterHome

[4]于勇.移动App测试实战 第二章 功能测试自动化

本文标签: 测试进行登录脚本