版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容摘要本文先介绍微信小程序和它在新型冠状病毒疫情防控期间的一些增长数据。然后在对微信小程序的页面元素定位的几种工具和方法进行比较,选择页面元素定位简单、快速、便捷的测试脚本开发工具Airtest,对“58到家保洁”微信小程序进行自动化测试脚本的开发实践。通过实践肯定了Airtest在快速定位小程序页面元素方面的优势,同时也发现了Airtest存在的一些不足。关键词:微信小程序Airtest58到家保洁AbstractThispaperfirstintroducesnovelcoronavirusanditsgrowthdataduringtheWeChatcoronavirusoutbreak.Then,inthecomparisonofseveraltoolsandmethodsofWechatMiniProgrampageelementpositioning,wechooseAirtest,whichisasimple,fastandconvenienttestscriptdevelopmenttool,todevelopthe"58homecleaning"WechatMiniProgramautomatictestscript.Throughpractice,theadvantagesofAirtestinquicklylocatingthepageelementsofWechatMiniProgramareconfirmed,andsomeshortcomingsofAirtestarealsofound.Keywords:WechatMiniProgramAirtest"58homecleaning"目录第一章绪论 11.1研究背景、目的及意义 11.1.1研究背景 11.1.2研究目的及意义 11.2国内外发展现状 21.2.1国外研究现状 21.2.2国内研究现状 21.3本文主要内容 3第二章相关工具和概念介绍 42.1工具介绍 42.2微信小程序的架构 43.3自动化测试 5第三章需求分析 63.1需求背景 63.2测试设备信息 63.3功能需求 7第四章小程序测试自动实现 84.1测试计划 84.2测试用例 84.2.1第一个大功能点——微信小程序不同入口 84.2.2第二个大功能点——定位 104.2.3第三个大功能点——“我的” 114.2.4第四个大功能点——“订单” 144.2.5第五个大功能点——“首页” 154.2.6初始化 204.3测试详细过程 204.3.1测试环境搭建 204.4.2编写自动化测试脚本 304.3.3自动化脚本调试 314.3.4增加断言语句 314.4测试结果报告和总结 31第五章总结与展望 35参考文献 37致谢 38第一章绪论本章主要介绍了本课题的研究背景、目的及意义以及国内外发展现状等内容。1.1研究背景、目的及意义1.1.1研究背景2019年12月8日,官方通报的首例不明原因肺炎患者发病;[1]截至4月6号22:00,中国累计确诊人数83039,现存确诊2345,海外累计确诊12006649,现存确诊946467。目前新冠肺炎在全球的人数陡增,中国人用宅在家中、减少外出、停工停产和不聚会的方式取得了阶段性的成功。这其中,不能上班,如何解决工作上沟通协作的问题;不能上课,初三高三的学生们的中、考高考怎么办,学习不能耽误;减少外出,如何买到口罩,如何买到食物,如何获取官方的信息等等一系列的问题亟须解决。这时不用安装的微信小程序开始发力。2020年2月17日微信发布《微信战“疫”数据报告》小程序到家业务增长迅猛,安全和无菌成为用户首选。[2]生活必需品通过微信小程序购买的方式成为很多人的新选择。到家服务的小程序获得迅猛增长,客户在到家小程序上购买最多的商品有速食、粮油、肉蛋、水果和水果等。本次春节假期也比以往更长,截至2月14日,小程序超市业态访问量同比增长115%,生鲜果蔬业态访问量同比增长168%,社区电商业态同比增长83%。复工后,物流行业小程序访问量环比上涨68%。[3]1.1.2研究目的及意义新型冠状肺炎病毒来势汹汹,为了遏制新型冠状病毒的传播,全国都停工停课延长假期让人民减少外出,严禁聚会等群体性活动。医护人民在前线抗疫,人们待在家中,为了让待在家中的人们能买到生活必需品等满足人们的日常生活需求,各类微信小程序腾空出世,从“穗康”的预约口罩,“鲜达送”,再到现在疫情得到控制,湖北省开始解封,各行各业都开始全面复工,其中到家家政服务类型的微信小程序访问量出现陡增,腾空出世的很多小程序如果按照以往的使用UIAutomatorViewer定位页面元素的方法来编写自动化测试脚本,费事费力,而且微信小程序在这个特殊时期更新迭代很快,如何让自动化脚本的更新速度跟上开发速度呢?这篇论文用微信小程序“58到家保洁”作为例子,使用Airtest自动化脚本编写工具,去跟上微信小程序快速迭代的步伐。1.2国内外发展现状1.2.1国外研究现状HierarchyViewer定位页面元素的方法,通过socket链接手机端的viewserver获取数据,获取数据后,遍历每一行数据,处理每一行数据,然后存放在viewNode对象中,每个view的数据都保存在内存中。优点:无版本限制;可获得动态数据。缺点:无法获得package和activity名;设备需要root;[4]页面元素属性多而无用;对话框坐标有缺陷。效率:根据软件的实际测试,获得一个界面的所有节点和图片所有的时间和为10s左右。[5]UIAutomatorViewer定位页面元素的方法,通过adb执行shell命令,存放在手机的/system/bin/uiautomator脚本会被执行,在/data/local/tmp/下生产uidump.xml文件,然后adbpull将xml文件负债到本地,然后出现读取xml生成树形结构。[5]优点:数据的分析过程交给手机端,减少了PC端的处理过程,客户端直接读取xml文件所提供的信息短小精悍;测试设备无须root;可获得package包;可直接判断控件是否可点击;对回款的坐标获得正确。[5]缺点:api限制,只支持api16以上的版本,android4.2以上版本;无法获得activity名;无法活动动态界面的数据。效率:由于读取xml的数据快,所以略有优势,获得的图片和控件信息需要4s左右的时间。[6]1.2.2国内研究现状TBSStudio是面向基于TBS的Web开发者和移动应用开发商(包括微信、手Q,三方App等)打造的开发服务整体解决方案,以提升广大开发者在真机环境下的开发效率,并帮助开发者分析和优化网页的设计,主要功能有网页Inspector调试,网页性能分析等。TBSStudio的前身是TBS下的WebViewInspector网页调试工具。[7]Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。[8]Airtest的框架是网易团队自己开发的一个图像识别框架。[8]另外,Airtest也基于poco这个U控件搜索框架,这个框架也是网易自家的跨平台UI测试框架,原理类似于appium,通过控件的名称,id之类的来定位目标控件,然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作。[9]1.3本文主要内容第一章绪论,主要介绍了本课题的研究背景、目的及意义,国内外发展现状等内容。第二章,主要介绍了Airtest工具、微信小程序架构、UI测试、自动化测试的概念。第三章,主要内容为小程序“58到家保洁”的需求背景、产品介绍、测试设备的信息和本次自动化测试的关键点。第四章,主要内容是测试计划、测试原理的介绍,然后是具体的测试用例和测试详细过程,最后是测试结果报告和总结。第五章,总结并展望Airtest未来。第二章相关工具和概念介绍本章主要介绍Airtest工具、微信小程序架构、自动化测试的概念。2.1工具介绍Airtest是网易团队开发的图像识别框架。Airtest通过屏幕截图的方式来获取想要操作的区域。例如对一些按钮进行测试时,可以不再写复杂的代码去获取按钮的信息,而是直接对按钮进行截图,把截图放在程序中,程序就会自动识别到截图中的位置并访问该按钮。[10]2.2微信小程序的架构小程序主要分为两个主要部分:view模块和service模块。View模块负责UI展示,它由wxml和wxss转换后的代码以及微信提供的辅助模块组成。一个view模块对应一个webview组件,小程序支持多个view模块存在,view模块通过微信jsbridge对象来跟后台通信。微信小程序的架构如图2.5所示:[11]图2-1微信小程序的架构图3.3自动化测试自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。[12]第三章需求分析本章的主要内容为小程序“58到家保洁”的需求背景、产品介绍、测试设备的信息和本次自动化测试的关键点。3.1需求背景现在中国国内新冠肺炎疫情已经得到控制,各行各也全部都在全面复工复产,到家家政的服务行业也不例外。2020年2月17日微信发布《微信战“疫”数据报告》小程序到家业务增长迅猛,安全和无菌成为用户首选。这次自动化测试实战索性就把“58到家保洁”微信小程序作为自动化测试的对象。为什么选择“58到家保洁”作为微信小程序自动化测试的对象呢?“58到家保洁”是58同城投资打造的互联网生活服务品牌,为用户提供专业、便捷、安心的标准化到家服务。服务包括了--日常保洁、全屋大扫除、油烟机清洗、擦玻璃、冰箱清洗、洗衣机清洗、空调清洗、新屋开荒、除螨清洁、皮沙发保养、地板打蜡等。[12]3.2测试设备信息(1)电脑端测试设备基本信息:操作系统:Win10支持环境:Python3.6测试工具:AirtestIDE(2)手机端测试设备基本信息:手机型号:redmiK20PRO;MIUI版本:MIUI11.0.5稳定版;Android版本:Android10;微信版本:Version7.0.12测试版。3.3功能需求微信小程序“58到家保洁”的功能可以分为5个一级功能点:微信小程序不同入口、定位、我的、订单、首页。接着将一级功能点细分为10个二级功能点包括:位置申请、立即登录、我的优惠、我的套餐、我的秒杀、我的地址、联系客服、用户协议、退出登录、热门服务--日常保洁。最后再具体到67个具体的场景,共计314条测试用例。第四章小程序测试自动实现本章先介绍本次的测试计划、测试原理,然后是具体的测试用例和测试详细过程(包括电脑端和手机端测试环境搭建、编写自动化测试脚本、自动化测试脚本调试、增加断言语句),最后是测试结果报告和总结。4.1测试计划本文的测试计划是模拟用户操作,对微信小程序“58到家保洁”小程序设计自动化UI巡检:第一步就是电脑安装Airtest,Python3;第二步手机开启开发者权限,USB允许安装程序、允许点击、切换输入法、关闭安全输入法;第三步设计测试场景、编写测试用例;第四步编写测试脚本;第五步调通测试脚本;第六步在脚本可以全程跑通的情况下,增加assert_exists等断言语句。4.2测试用例测试用例从5个一级大功能点入手,在5个一级大功能点的基础上进行细分,5个一级大功能点包括:微信小程序不同入口、定位、我的、订单、首页。4.2.1第一个大功能点——微信小程序不同入口微信小程序不同入口可以划分为10个具体场景:(1)、微信聊天主界面下拉,然后点击搜索框文字输入“58到家保洁”搜索小程序;(2)、微信聊天主界面下拉,然后点击搜索框,点击搜索历史记录“58到家保洁”(3)、微信聊天主界面下拉,在“最近使用”一栏中有最近使用过的小程序“58到家保洁”(4)、微信聊天主界面下拉,在“我的小程序”一栏中有最近使用过的小程序“58到家保洁”(5)、微信-发现-小程序-右上角搜索图标,点击进入小程序搜索界面,文字输入“58到家保洁”(6)、微信-发现-小程序-右上角搜索图标,点击搜索历史记录中的“58到家保洁”(7)、微信-发现-小程序-我的小程序(8)、发现-小程序-最近使用(9)、聊天记录-发送给好友的小程序(10)、聊天记录-好友给你发送小程序这10个具体场景的前置条件、测试步骤和预期结果如下表所示:表4-1微信小程序不同入口的10个具体场景测试用例步骤及预期结果编号具体场景前置条件测试步骤预期结果1微信聊天主界面下拉-搜索框搜索小程序已经登录微信1、点击微信图标2、下拉聊天列表3、点击“搜索小程序”搜索框4、输入“58到家保洁”,回车搜索5、搜索结果,点击“58到家保洁”,6、获取你的位置申请,点击“允许”,7、选择定位城市,进入58到家保洁首页1、搜索结果有“58到家保洁”,2、有弹框:获取你的位置申请,可以点击“允许”,3、选择定位城市,可以进入58到家保洁首页2微信聊天主界面下拉-搜索框-搜索历史记录已经搜索过“58到家保洁”,搜索历史记录中有“58到家保洁”搜索历史记录1、点击微信图标2、下拉聊天列表3、点击“搜索小程序”搜索框4、点击搜索历史记录中的“58到家保洁”5、进入搜索结果页面,6、点击“58到家保洁”小程序,进入首页1、搜索历史记录中有“58到家保洁”2、可以进入搜索结果页面,3、点击“58到家保洁”小程序,可以进入首页3微信聊天主界面下拉-最近使用已经使用过小程序,最近使用入口1、点击微信图标2、下拉聊天列表3、点击“最近使用”类别中,“58到家保洁”小程序,进入首页可以进入“58到家保洁”小程序首页4微信聊天主界面下拉-我的小程序已经使用过,并且已经添加到“我的小程序”(小程序右上角…,“添加到我的小程序”)1、点击微信图标2、下拉聊天列表3、点击“我的小程序”类别中,“58到家保洁”小程序,进入首页可以进入“58到家保洁”小程序首页5发现-小程序-右上角搜索图标1、微信--》发现--》小程序,右上角搜索图标2、输入“58到家保洁”,回车3、搜索结果,点击“58到家保洁”,进入58到家保洁首页可以进入“58到家保洁”小程序首页6发现-小程序-右上角搜索图标,搜索历史记录已经搜索过,有搜索历史记录1、微信--》发现--》小程序,右上角搜索图标2、点击搜索历史记录中的“58到家保洁”,3、搜索结果,点击“58到家保洁”小程序,进入首页可以进入“58到家保洁”小程序首页7发现-小程序-我的小程序已经添加到我的小程序中1、微信--》发现--》小程序--》我的小程序2、点击“58到家保洁”小程序,进入首页可以进入“58到家保洁”小程序首页8发现-小程序-最近使用最近有使用过1、微信--》发现--》小程序,最近使用,2、点击“58到家保洁”小程序,进入首页可以进入“58到家保洁”小程序首页9聊天记录-发送给好友的小程序已经给好友发送小程序1、微信--》xxxuuu--》聊天记录中,2、点击发送给朋友的“58到家保洁”小程序可以进入“58到家保洁”小程序首页10聊天记录-好友给你发送小程序好友给你发送小程序1、微信--》xxxuuu--》聊天记录中2、点击朋友发送来的“58到家保洁”小程序可以进入“58到家保洁”小程序首页4.2.2第二个大功能点——定位定位可以划分为3个具体场景:拒绝位置申请、开启位置信息和重新定位。这3个具体场景的前置条件、测试步骤和预期结果如下表所示:表4-2一级大功能点“定位”的3个具体场景的测试用例步骤及预期结果具体场景测试步骤预期结果拒绝位置申请获取你的位置申请,点击拒绝关闭“获取你的位置申请”弹框检查是否关闭“获取你的位置申请”弹框是开启位置信息点击【重新点位】按钮弹框提示:“请允许小程序获取你的地理位置,方便为您推荐附近的服务,前去设置”检查是否有弹框是点击弹框中的【去开启】按钮关闭弹框检查是否关闭弹框是点击右上角【…】按钮弹框检查是否有设置界面的弹框是点击【设置】按钮进入设置界面检查是否有进入设置界面是点击【位置信息】进入位置信息设置页面检查是否进入位置信息设置页面是选择【仅在使用小程序期间】【仅在使用小程序期间】选项被选中检查【仅在使用小程序期间】选项是否被选中是返回可以返回设置页面检查是否返回设置页面是返回返回小程序切换城市的页面检查是否返回小程序切换城市的页面是重新定位点击重新定位定位城市刷新检查定位城市是否刷新是点击定位城市--佛山,进入首页进入首页检查是否进入首页是4.2.3第三个大功能点——“我的”“我的”可以划分为8个二级功能点,19个具体场景:8个二级功能点有:立即登录、我的优惠、我的套餐、我的秒杀、我的地址、联系客服、用户协议和退出登录。19个具体场景为:进入我的页面、进入登录页面、拒绝手机号码的申请、允许手机号码的申请、我的优惠、我的套餐、我的秒杀、添加服务地址、修改联系人、修改手机号码、修改服务地址、修改详细地址、【+添加新地址】、返回“我的”页面、取消联系客服、跳转到电话页面、"58家政服务协议“浏览阅读、退出登录、重新登录。这18个具体场景的前置条件、测试步骤和预期结果如下表所示:表4-3一级大功能点“我的”的19个具体场景的测试用例步骤及预期结果二级功能具体场景测试步骤预期结果进入我的页面点击【我的】进入【我的】页面检查是否进入【我的】页面是立即登录进入登录页面点击【立即登录】进入【登录】页面检查是否进入【登录】页面是拒绝手机号码的申请点击【使用第三方登录微信登录】弹框申请使用你的手机号码检查是否有弹框申请使用你的手机号码有你的手机号码申请使用界面,点击【拒绝】toast提示:登录失败检查是否有toast提示:登录失败有,但是无法截图到允许手机号码的申请再次点击使用第三方登录微信登录弹框申请使用你的手机号码你的手机号码申请使用界面,点击允许返回【我的】页面检查是否已经登录已经登录我的优惠点击【我的优惠】进入【我的优惠】检查是否进入【我的优惠】是返回返回【我的】页面我的套餐点击【我的套餐】进入【我的套餐】检查是否进入【我的套餐】是返回返回【我的】页面我的秒杀点击【我的秒杀】进入【我的秒杀】检查是否进入【我的秒杀】是返回返回【我的】页面我的地址添加服务地址点击【我的地址】进入【我的地址】检查是否进入【我的地址】是点击【添加服务地址】进入新增地址页面检查是否进入【新增地址】页面是输入联系人:许权联系人一栏可以输入:许权输入手机号码:11111111111手机号码一栏可以输入:11111111111点击服务地址进入搜索地址页面检查是否进入搜索地址页面是点击重新定位定位城市刷新检查定位城市是否刷新是点击【松岗中心幼儿园(文明西路)】返回新增地址页面检查是否返回新增地址页面是输入详细地址:1楼2单元666室可以输入详细地址:1楼2单元666室检查是否可以输入详细地址:1楼2单元666室是按X键,清空输入的详细地址按X键可以清空输入的详细地址检查是否清空是再次输入详细地址:1楼2单元666室可以输入详细地址:1楼2单元666室点击【保存】toast提示:请输入正确的手机号点击【手机号】一栏,清空可以清空检查是否清空是重新输入正确的电话号码机号码一栏可以输入击【保存】保存并返回到我的地址页面检查是否返回到我的地址页面是检查刚刚添加的地址是否添加是修改联系人点击【编辑】按钮进入编辑地址页面修改联系人可以修改联系人点击【保存】保存并返回到我的地址页面检查联系人是否变更是修改手机号码点击【编辑】按钮进入编辑地址页面修改手机号码可以修改手机号码点击【保存】保存并返回到我的地址页面检查手机号码是否变更是修改服务地址点击【编辑】按钮进入编辑地址页面点击服务地址进入搜索地址页面点击重新定位定位城市刷新检查定位城市是否刷新是选择【松岗中心幼儿园(文明西路)】保存并返回到新增地址页面检查是否返回新增地址页面是检查服务地址是否变更是修改详细地址点击【详细地址】一栏出现X按钮检查是否出现X按钮是点击X按钮,清空详细地址清空详细地址输入详细地址:1楼2单元666室1可以输入详细地址:1楼2单元666室1点击【保存】保存并返回到我的地址页面检查是否返回到我的地址页面是检查详细地址是否变更是【+添加新地址】点击底部【+添加新地址】按钮进入新增地址页面检查是否进入新增地址页面是返回返回我的地址页面检查是否返回我的地址页面是返回“我的”页面返回返回“我的”页面检查是否返回“我的”页面是联系客服取消联系客服点击【联系客服】弹框提示:确定拨打电话:4008196058吗?检查是否弹框提示:确定拨打电话:4008196058吗?是点击【取消】关闭弹框跳转到电话页面再次点击【联系客服】弹框提示:确定拨打电话:4008196058吗?点击【确定】跳转到电话页面检查是否跳转到电话页面是返回返回“我的”页面用户协议"58家政服务协议“浏览阅读点击【用户协议】进入"58家政服务协议“页面检查是否进入"58家政服务协议“页面是下滑到底部能下滑到底部返回返回“我的”页面退出登录退出登录点击【退出登录】弹框提示:您真的要退出登录吗?检查是否有弹框提示:您真的要退出登录吗?是点击【取消】关闭弹窗点击【退出登录】弹框提示:您真的要退出登录吗?点击【确认】退出登录检查是否退出登录是重新登录点击【立即登录】进入登录页面点击使用第三方登录【微信登录】弹框申请使用你的手机号码检查是否弹框申请使用你的手机号码是你的手机号码申请使用界面,点击【允许】登录并进入“我的”页面检查是否登录是4.2.4第四个大功能点——“订单”“订单”可以划分为7个具体场景:进入订单页面、切换到周期服务页面、切换到全部订单页面、订单详情页面、查看我的会员权益、返回订单详情页面、返回我的订单页面。这7个具体场景的前置条件、测试步骤和预期结果如下表所示:表4-4一级大功能点“订单”的7个具体场景的测试用例步骤及预期结果具体场景前置条件测试步骤预期结果进入订单页面点击【订单】跳转到订单页面检查是否跳转到订单页面是切换到周期服务页面点击【周期服务】跳到【周期服务】页面检查是否跳到【周期服务】页面是切换到全部订单页面点击【全部订单】跳到【全部订单】页面检查是否跳到【全部订单】页面是订单详情页面已有订单点击全部订单的任意一个订单进入订单详情页面检查是否进入订单详情页面是点击【订单状态】进入【订单状态】页面检查是否进入【订单状态】页面是返回返回订单详情页点击订单信息中的【?隐私保护”】有“隐私保护”弹框检查是否有“隐私保护”弹框有点击【我知道了】关闭“隐私保护”弹框点击订单明细中的【取消扣款说明】有“取消扣款说明”弹框检查是否有“取消扣款说明”弹框是查看我的会员权益点击弹框中的【查看我的会员权益】跳转到会员中心页面检查是否跳转到会员中心页面是返回订单详情页面返回返回订单详情页面检查是否返回订单详情页面是返回我的订单页面返回返回我的订单页面检查是否返回我的订单页面是4.2.5第五个大功能点——“首页”“首页”可以划分为29个具体场景:29个具体场景为:进入首页、切换城市--广州、向左滑动轮播图、日常保洁页面、选择城市页面、浏览服务内容、进入购买流程、选择服务地址、选择服务频次、选择服务时间、阅读并同意新版《58到家用户协议》(注:新用户才有这个步骤)、是否使用清洁剂、使用优惠券、购买会员卡、订单支付、订单取消、全屋大扫除、油烟机清洗、擦玻璃、冰箱清洗、洗衣机清洗、空调清洗、新屋开荒、除螨清洁、皮沙发保养、向左滑动、地板打蜡、全屋大扫除、浏览首页。这29个具体场景的前置条件、测试步骤和预期结果如下表所示:表4-5一级大功能点“首页”的29个具体场景的测试用例步骤及预期结果二级页面具体场景测试步骤预期结果进入首页点击【首页】进入首页页面检查是否进入首页页面是切换城市--广州点击【佛山】,进入切换城市界面进入切换城市界面检查是否进入切换城市界面是点击【重新定位】重新定位检查是否已经重新定位是点击右侧【Z】字母跳转到Z字母开头的城市检查是否跳转到Z开头的城市是点击右侧L字母跳转到L字母开头的城市检查是否跳转到【L】开头的城市是往下滑下滑点击【#】回到顶部点击热门城市--【广州】跳转到首页检查是否跳转到首页是向左滑动轮播图向左滑动轮播图切换轮播图热门服务--
【日常保洁】日常保洁页面点击热门服务--【日常保洁】进入日常保洁页面检查是否进入日常保洁页面是选择城市页面点击【广州】进入选择城市页面检查是否进入选择城市页面是点击【重新定位】重新定位检查当前定位城市是否为佛山是点击右侧【Z】字母跳转到Z字母开头的城市检查是否跳转到Z开头的城市是点击【L】字母跳转到L字母开头的城市检查是否跳转到L字母开头的城市是点击#跳转到顶部检查是否跳转到顶部是返回返回日常保洁页面浏览服务内容下滑到底部可以下滑到底部检查是否下滑到底部是进入购买流程点击【立即购买】进入填写服务地址、频次、时长和开始时间页面检查是否进入填写服务地址、频次、时长和开始时间页面是选择服务地址点击【请选择服务地址】进入选择服务地址页面检查是否进入选择服务地址页面是选择第一个服务地址返回填写服务地址、频次、时长和开始时间页面检查是否返回填写服务地址、频次、时长和开始时间页面是选择服务频次选择服务频次--【单次预约】单次预约按钮被选中状态检查【单次预约】按钮是否为被选中状态是选择服务频次--【两周一次】两周一次按钮被选中状态检查【两周一次】按钮是否为被选中状态是选择服务频次--【一周一次】一周一次按钮被选中状态检查【一周一次】按钮是否为被选中状态是选择服务频次--【一周多次】一周多次按钮被选中状态检查【一周多次】按钮是否为被选中状态是选择服务频次--【单次预约】单次预约按钮被选中状态选择服务时间点击【选择服务时间】进入预约服务时间界面检查是否进入预约服务时间界面是点击保洁时长的【-】按钮时间减少为【2小时】检查时间是否减少为【2小时】是点击保洁时长的【+】按钮时间增加为【3小时】检查时间是否增加为【3小时】是点击【确认】按钮跳回日常保洁购买界面检查是否跳回日常保洁购买界面是阅读并同意新版《58到家用户协议》
(注:新用户才有这个步骤)点击【下一步】弹框显示【请阅读并同意新版《58到家用户协议》,才能提交订单】检查是否会有【请阅读并同意新版《58到家用户协议》,才能提交订单】弹框是点击【我知道了】按钮关闭弹框点击【《58到家用户协议》】按钮进入【《58到家用户协议》】页面检查是否进入【《58到家用户协议》】页面是返回返回勾选【已阅读并同意新版《58到家用户协议》】已勾选点击【下一步】按钮进入【预约订单】界面检查是否进入【预约订单】界面是是否使用清洁剂取消勾选【是否使用清洁剂】选项【是否使用清洁剂】选项没有勾选检查是否取消勾选是勾选【是否使用清洁剂】选项【是否使用清洁剂】选项勾选上了检查是否勾选是使用优惠券点击【优惠券】进入【我的优惠券】页面检查是否进入【我的优惠券】页面是点击【不可用优惠券】跳转到【不可用优惠券】检查是否跳转到【不可用优惠券】是点击【可用优惠券】跳转到【可用优惠券】检查是否跳转到【可用优惠券】是点击底部【不使用优惠券】跳转回【预约订单】页面购买会员卡点击【会员卡】进入【会员卡】页面检查是否进入【会员卡】页面是点击贵宾卡进入【购买会员卡】页面检查是否进入【购买会员卡】页面是往下滑,到达底部到达底部点击【立即购买】,进入【支付收银台】界面进入【支付收银台】界面检查是否进入【支付收银台】界面是点击【立即支付1000】按钮,跳转到收银台界面跳转到收银台界面检查是否跳转到收银台界面是点击【确认支付】按钮,进入验证指纹界面进入验证指纹界面检查是否进入验证指纹界面是返回返回收银台页面点击弹框右上角【使用密码】按钮底部有键盘弹出检查底部是否有键盘弹出是输入错误密码123456可以输入,输入完最后一个数字时,有【支付密码错误,请重试】弹框检查是否有【支付密码错误,请重试】弹框是点击【重试】进入【输入支付密码】页面检查是否进入【输入支付密码】页面是返回返回【会员卡】界面检查是否返回【会员卡】界面是返回返回【支付收银台】界面检查是否返回【支付收银台】界面是返回返回【购买会员卡】界面检查是否返回【购买会员卡】界面是返回返回【会员卡】界面检查是否返回【会员卡】界面是返回返回【预约订单】界面检查是否返回【预约订单】界面是订单支付点击底部【还需支付:135元】进入【订单明细】检查是否进入【订单明细】是再次点击底部【还需支付:135元】收起【订单明细】界面检查是否收起【订单明细】界面是点击底部右侧【去支付】按钮有【温馨提示】弹框出现检查是否有【温馨提示】弹框出现是点击【我知道了】按钮,关闭弹框,进入【支付收银台】界面关闭弹框,进入【支付收银台】界面点击底部【立即支付135】进入【支付收银台】界面返回返回到【订单】界面检查是否返回到【订单】界面是订单取消点击【支付】按钮跳转到【订单详情】页面检查是否跳转到【订单详情】页面是返回返回全部订单页点击【取消订单】按钮跳转到【订单详情】页面检查是否跳转到【订单详情】页面是点击底部【取消订单】按钮有弹框提示:确认要取消订单吗?检查是否有弹框提示:确认要取消订单吗?是点击【不取消了】弹框消失再次点击底部【取消订单】按钮有弹框提示:确认要取消订单吗?检查是否有弹框提示:确认要取消订单吗?是点击【确认】按钮进入【取消服务】界面检查是否进入【取消服务】界面是选择【需更改信息,重新下单】【需更改信息,重新下单】选项被选中点击底部【取消订单】按钮有弹框提示:确认要取消订单吗?检查是否有弹框提示:确认要取消订单吗?是点击【确认】按钮返回【订单详情】页面检查是否返回【订单详情】页面是全屋大扫除点击【首页】跳转到首页点击热门服务--全屋大扫除进入全屋大扫除页面返回返回首页油烟机清洗点击家居家电清洗【油烟机清洗】进入【油烟机清洗】返回返回首页擦玻璃点击家居家电清洗【擦玻璃】进入【擦玻璃】返回返回首页冰箱清洗点击家居家电清洗【冰箱清洗】进入【冰箱清洗】返回返回首页洗衣机清洗点击家居家电清洗【洗衣机清洗】进入【洗衣机清洗】返回返回首页空调清洗点击家居家电清洗【空调清洗】进入【空调清洗】返回返回首页新屋开荒点击家居家电清洗【新屋开荒】进入【新屋开荒】返回返回首页除螨清洁点击家居家电清洗【除螨清洁】进入【除螨清洁】返回返回首页皮沙发保养点击家居家电清洗【皮沙发保养】进入【皮沙发保养】返回返回首页向左滑动向左滑动有【地板打蜡】和【全屋大扫除】图标检查是否有【地板打蜡】和【全屋大扫除】图标是地板打蜡点击家居家电清洗【地板打蜡】进入【地板打蜡】返回返回首页全屋大扫除点击家居家电清洗【全屋大扫除】进入【全屋大扫除】返回返回首页浏览首页下滑到底部有【推荐服务】出现检查是否有【推荐服务】是4.2.6初始化为了使脚本可以的循环使用,我们必须对自动化脚本改变的一些东西进行复位操作,这个复位操作我们也尝试使用自动化脚本的方式来实现。以下是3个复位操作的具体场景:小程序移除、删除服务地址、退出小程序。具体的测试步骤和预期结果如下表所示:表4-63个复位操作具体场景的测试用例步骤及预期结果具体场景测试步骤预期结果小程序移除点击右上角…底部弹框点击【从我的小程序中移除】toast提示:已移除删除服务地址点击【我的】进入我的页面点击【我的地址】进入我的地址页面进入【我的地址】界面,选第一个地址,点击右侧的【编辑】图标按钮进入编辑地址页面点击【删除】按钮弹框提示:确认删除此地址吗?检查是否弹框提示:确认删除此地址吗?是点击【确定】按钮返回我的地址页面检查我的地址页面是否为缺省图界面:您还没有服务地址哦,添加服务地址是返回返回我的页面退出小程序点击右上角的退出按钮退出小程序4.3测试详细过程4.3.1测试环境搭建微信小程序的电脑端测试环境搭建工作如下:(1)、浏览器打开Airtest官网,下载AirtestIDE,官网界面如下图所示:图4-1Airtest官网(2)、点击“AGREEANDDOWNLOAD”,同意TERMOFSERVICE协议并下载,如下图所示:图4-2TERMOFSERVICE协议(3)、下载IDE,将文件另存到桌面的Airtest文件夹下,操作步骤如下图所示:图4-3另存到桌面的Airtest文件夹下(4)、下载完,打开Airtest文件夹,解压AirtestIDE_2020-01-21_py3_win64.zip,到当前文件夹下,解压选项和解压过程如下图所示:图4-4解压到当前文件夹图4-5解压中(5)、解压后,多出两个文件:AirtestIDE_2020-01-21_py3_win64和ReadMe.txt,如下图所示:图4-6解压后(6)、先打开ReadMe.txt文件,里面是Windows用户启动AirtestIDE的方式的帮助文档,有中文和英文两种。中文帮助文档如下图所示:图4-7ReadMe.txt文件中文帮助文档、进入到AirtestIDE_2020-01-21_py3_win64文件夹下,找到并双击AirtestIDE/AirtestIDE.exe启动AirtestIDE,如下图的箭头所指:图4-8AirtestIDE.exe(8)、点击后,它先打开一个cmd命令行窗口,不要关闭,接着就出现Login窗口,如果不想登录,可以点击右下角的Skip按钮,跳过就可以了,cmd命令行窗口和Login窗口如下图所示:图4-9cmd命令行窗口图4-10Login界面(9)、点击Skip后,cmd命令行窗口的变化如下图所示:图4-11cmd命令行窗口(10)、接着出现AirtestIDE界面,界面如下图所示图4-12AirtestIDE界面到此,AietestIDE安装完成。接下来是安卓手机上的设置。微信小程序的手机端准备工作如下,微信的版本号是7.0.12测试版,如下图所示:图4-13微信版本(1)将手机用数据线插入到电脑中,在手机的弹框中选择USB文件传输模式—“传输文件(MTP)”,如下图所示:图4-14“传输文件(MTP)”(2)开启开发者模式,路径:设置-我的设备-全部参数,连续点击“MIUI版本”,直到弹框提示“您已处于开发者模式,无须进行此操作”,操作步骤如下图所示:图4-15“我的设备-全部参数”图4-16开启开发者模式步骤截图(3)打开USB调试功能,设置-更多设置-开发者选项-调试,打开“USB调试”开关,并把“USB安装”和“USB调试(安全设置)”开关打开。操作步骤如下图所示:图4-17“更多设置-开发者选项”图4-18打开“USB调试”开关图4-19“USB安装”和“USB调试(安全设置)”图4-20重要警告手机设置已经完成。在AirtestIDE界面的右侧,可以看到手机的设备号【SerialNO.】点击【connect】连接设备,如下图所示:图4-21设备窗点击后,Log查看窗的变化如下图所示:图4-22Log查看窗变化这时手机会有弹框,点击【继续安装】,操作界面如下图所示:图4-23USB安装提示弹框这时,手机新增一个“Yosemite”App的图标,如下图所示:图4-24YosemiteApp图标在AirtestIDE界面的左下角,有一个Poco辅助窗,点击下拉按钮,选择Android,脚本编辑窗会有一段英文出现点击“Yes”,操作步骤如下图所示:图4-25Poco辅助窗图4-26英文弹框脚本编辑窗新增下列方框内的两端代码,见下图方框:图4-27两端代码手机端会有弹框出现,点击【继续安装】,操作步骤如下图所示:图4-28USB安装提示弹框安装后,手机桌面会新增一个“PocoService”的App图标,如下图所示:图4-29“PocoService”的App图标安装完,有弹框提示,如下图所示:图4-30弹框提示设置输入法,路径:设置-更多设置-语言与输入法,当前输入法选择:Yosemite输入法,同时取消勾选【安卓键盘】。操作步骤如下图所示:图4-31更多设置-语言与输入法图4-32当前输入法选择:Yosemite输入法,同时取消勾选【安卓键盘】Airtest辅助窗的操作介绍,如下图所示:图4-33Airtest辅助窗一些按钮的介绍到这里,AirtestIDE环境和手机端的测试环境已经安装完毕。4.4.2编写自动化测试脚本根据测试用例编写自动化测试脚本。自动化测试脚本如下图所示:图4-34测试脚本的截图4.3.3自动化脚本调试通过十几次的脚本运行,一步步地对测试脚本进行优化,使整一个脚本能够完整得跑下来。一开始没有添加sleep语句时,脚本运行没几步就报错停下来了,如果在每一个步骤后,都添加上一个sleep语句,并且采用默认的参数1.0的话,虽然比没有加之前,跑得更远了,执行的步骤多了,可是还是避免不了中途找不到元素报错停下的问题,所以,要根据当前的网络情况还有页面加载的情况来适当增加sleep休眠时间参数的值,尽可能达到完整跑完整个脚本的目的。4.3.4增加断言语句在整个脚本可以全程跑通的情况下,增加断言assert_exists等语句,来判断对应的页面是否正常显示以及元素是否存在。4.4测试结果报告和总结跑通过的结果页面有运行时间,步骤数,也有提供Log报告下载查看。测试结果报告如下图所示:图4-35Airtest报告图4-36Airtest报告2图4-37Airtest报告3在整个脚本调优的过程中,发现Airtest整个设计实现元素查找的思路,与其他自动化测试框架查找元素的方式有所不同,Airtest设计之初是为了游戏测试做的一个UI自动化测试工具,在游戏中很多元素都是没法用网页或者一般用具性应用App的控件元素方法去定位的,比如:ID定位、name定位、Classname定位、Xpath定位、AccessibilityID定位、androiduiautomator定位等,这时候,最大胆的想法出现了,利用图像识别来确定元素图标的位置。局限点:(1)、没有搜索按钮时,搜索框的自动化测试用例无法覆盖。举个例子,就拿微信的搜索框来说,如果是手动进行搜索的话,你点击搜索图标,进入搜索界面,输入光标闪动,这时候,键盘也随即弹出来,你只要手动点击键盘上的按钮进行输入即可;再来看一下如果使用adb命令进行输入的话,只能输入英文和数字等,无法进行中文的输入,这个局限性很鸡肋。可是使用Airtest进行测试的时候,就是限制了手机自带的输入法进行输入,也不允许其他输入法进行输入,前面我们有一个步骤就是设置“语言与输入法”,这个步骤就是限制了系统自带的输入法,使Airtest安装到手机中的YosemiteAPP进行文字的输入,这个输入法输入文字后,要进行搜索,这时候最难受的地方来了,平时我们使用键盘进行输入时,如果没有【搜索】按钮的,我们只需要在键盘按一下回车,就可以进行搜索了。可是当我们使用Airtest辅助窗提供的Keyevent函数时,输入参数“ENTER”,运行脚本,企图使用text(“58到家保洁”)进行文本输入后面,添加一个脚本keyevent(“ENTER”)来模拟键盘的回车enter键,触发搜索动作,这时候你会发现,语句keyevent(“ENTER”)带来的效果并不是触发了“回车搜索”这个动作,实际的效果是返回了,这时候会怀疑是不是参数不对,查了一个安卓模拟按钮的键值,回车键对应的就是数字66,这时候尝试使用语句keyevent(“66”),不行,还是和语句keyevent(“ENTER”)一样的效果,只是起到一个返回的作用。并没有触发回车进行搜索这个动作。又尝试使用命令keyevent("KEYCODE_ENTER")看能不能触发回车时间。还是没有用,还是和前面两个语句。没办法放弃了。(2)、轮播图无法准确定位到。如果是使用DOM树结构,利用ID定位、name定位、Classname定位、Xpath定位、AccessibilityID定位、androiduiautomator定位等方法进行定位的时候,只要有加载的话,就能在DOM的树结构中找到对应轮播图的关键定位元素,使用这些定位元素,就可以对轮播图进行点击事件了,而Airtest的原理是,每跳转一个页面,就截一个图,然后把你点击的点的周围的图像在这个截图进行图像识别,定位到所在的位置,然后给出对应的操作,点击、滑动等之类的动作。这个步骤看起来没什么毛病没什么问题,可是最关键的一点就是,它是截图,然后再把你的点击位置周围的图像在这个截图上进行识别的。因为是轮播图,轮播图是每2秒钟或其他间隔时间,就会跳转到其他轮播图,如果你点击的时候是第一个轮播图,而当Airtest截图时,截到的是第2个甚至第3个第4个等等之类的,这时候,这个脚本就会在这里停下来,因为找不到定位元素的图片,没法进行下一步。在这里,我们可以提供一个解决轮播图元素找不到的解决方法的思路,就是每个页面每次截图多截两三个,每次截图进行匹配的时间间隔是可以使用参数进行设置的,这时候,我们在进行自动化UI测试之前,就可以询问开发或者自己先估算一下,每个轮播停留的时间和切换的间隔时间;另外还有就是能提供另一个参数的控制,针对的是轮播的多少来控制一个步骤的截图次数,通过遍历轮播图,来匹配到对应的点击事件是作用在哪个轮播上的,这时候,我们就可以等轮播图进行第二遍轮播时,找到对应的点击事件的轮播图,进行点击,从而来解决轮播图无法进行精确点击进行UI测试的痛点。(3)、时间滚轮选择的,Airtest也是无法进行模拟操作的。举个例子,现在要将下面的图片的【10分】,向下滑动,调整为【08】,无法直接点击【08】,必须是滑动的。时间滚轮如下图所示:图4-38时间滚轮第五章总结与展望毕业论文的题目定为《微信小程序测试》,给人的感觉是大而泛的。什么都能写,但是怎么写好是一个问题。为了这个小程序测试,曾经试着想将“58到家保洁”小程序源码从手机里拿出来然后使用反编译工具去反编译,试图从安全的角度去测试小程序。后面又想着不能太单一了,想每个方面都讲述一遍,从小程序的架构,小程序环境的安装到部署测试环境,再讲述与Web测试和App测试不同的点,但是实际查阅资料整理下来后,感觉又不是自己的东西。这时想起了自动化测试,试图使用Appium测试框架,使得微信小程序的UI测试更易于实施。但是实际操作下来,发现没有传闻中的那么快速便捷。试图去找到一种快捷自动化驱动微信小程序(小程序界面元素的定位及驱动)。这时发现了有这么一个自动化测试工具Airtest,实战下来,Airtest脚本开发速度简直碾压BDD技术方案(Appium+Python3+Behave)。AirtestIDE比起Appium+UIAutomatorViewer定位页面元素的办法方便很多,只要控件外观两种系统都一样的话,一个脚本便可以在两个系统上运行,是无敌的方便。不用辛辛苦苦地去分iOS系统和Android系统写脚本。不过,目前AirtestIDE不是很成熟,功能还不是很完善,目前只能做日常巡检的工作,算是半自动化吧,必须有人看着,有些动作Airtest是无法模拟的,比如图案解锁,它是无法进行模拟操作的,不过最笨的解决办法是,写个sleep语句,让它在这一步停留一下,这时候人工介入,进行滑动。Airtest框架基于图像识别和UI控件识别,操作简单,功能简洁明了,对代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 皮肤科银屑病复发预防护肤方案
- 肿瘤放疗并发症预防管理措施
- 2025-2026学年壁纸桌球教学设计
- 老年人康复服务体系
- 养老护理员道德规范培训
- 二甲醚装置操作工岗前工作考核试卷含答案
- 塑石工达标水平考核试卷含答案
- 2025-2026学年奥尔夫音乐教案雨水
- 煤层气排采集输工达标评优考核试卷含答案
- 口腔科牙周炎护理管理方案
- 营业厅业务受理(情景演练)课件
- 徐悲鸿介绍及作品课件
- LY/T 1575-2023汽车车厢底板用竹胶合板
- 计算机导论第2版微课视频版吕云翔课后参考答案
- 2024年陕西榆能化学材料公司招聘笔试参考题库含答案解析
- 妇科诊疗常规
- 警惕病从口入-课件
- 脑疝、重症患者脑保护及颅内压监测
- 踝足部解剖和功能培训课件
- 小学科学精品课件【1.4《设计塔台模型》课件】
- GB/T 23901.2-2019无损检测射线照相检测图像质量第2部分:阶梯孔型像质计像质值的测定
评论
0/150
提交评论