Appium是一个开源/跨平台的自动化测试工具,支持 iOS 平台和 AndroID 平台上的原生应用,web应用和混合应用,appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JsON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。
二.testNg测试框架testNg是一个Java的测试框架,主要用来做自动化
1. 利用Parameters注解将test.xml中启动的APP需要参数(udID,测试平台,包名,类名等)传递给Test标注的方法
2 .利用注解实现测试方法的执行顺序,比如:
利用@BeforeTest注解在test.xml中某个测试(test)所有测试方法执行前启动APP
利用@AfterTest注解在test.xml中某个测试(test)所有测试方法执行结束后关闭驱动
利用@AfterMethod注解在@Test注解的方法执行之后返回首页或返回指定页
3.支持数据驱动,DataProvIDer注解的方法是数据提供者,一般返回Object[][] 和 Iterator<Object[]>两种类型,
Test注解的方法是数据接收者,接收DataProvIDer注解的方法传过来的数据进行测试
Iterator<Object[]>:用于把数据存入在一个实体类里,即数据按“对象”存储
Object[][]:一般把数据存放在Excel里
4.利用testNg的IHookable监听器实现失败截图**,并把失败截图附到Allure测试报告中**
4.1.新建一个类实现把截图存放在指定路径中(getScreenshotAs)的方法
4.2.新建一个类实现IHookable接口,有一个方法调用截图方法把方法和截图附到Allure报告中
另一个方法需重写run方法,如果标注为@Test的方法出现异常则调用2中的方法测试方法实现失败截图
5.利用testNg的IAnnotationtransformer,ITestListener监听器实现全局失败重试
5.1.新建一个类实现实现IRetryAnalyzer接口,重写retry方法,有两个变量:运行重试的最大次数和公共静态变量正在运行的次数
5.2.新建一个类实现IAnnotationtransformer接口,重写transform方法,作用是监听所有被Test标注的方法是否有retryAnalyzer属性
如果有次属性,则不会执行我们设定的重跑机制
5.3.新建一个类继承TestListenerAdapter类,重写onTestFailure和onTestSuccess方法,作用是每条案例重跑次数用完后,重置当前正在运行的次数为初始值
以便于下一条案例失败重试
5.4.新建一个类实现ITestListener接口,重写onFinish方法,作用是把重试的方法都记录到skipped里了,会影响测试报告总数,所有记录要从skipped移除
5.5.将2.3.4步的监听器添加到在test.xml中
6.支持并发测试,testng.xml中
parallel:TestNG是否运行不同的线程来运行这个套件,默认为none,其他级别为methods、tests、classes、instances
7.可通过testng.xml管理执行测试用例
Allure是一款轻量级并且非常灵活的开源测试报告框架,它支持绝大多数测试框架, 例如TestNG
四.利用MysqL数据库进行测试案例管理1.主要的表有:
案例表:案例编号,案例名称,案例描述,预期结果,可用标记,客户数据,理财数据,断言,所属模块
案例明细表:案例编号,案例执行步骤,每一步骤对应的执行方法名,方法名中涉及的元素定位编号,所应用的组件ID,断言
组件表:组件ID,组件所属模块,组件方法名,组件方法名中文
组件明细表:组件ID,组件执行步骤,每一步骤对应的执行方法名,方法名中涉及的元素定位编号,断言
元素定位表:存放页面上每个元素的定位
模块菜单表:一级菜单名,一级菜单名中文,模块名,模块中文
客户数据表:存放登陆信息
产品表:存放理财产品数据
数据表:存放页面上需要输入的数据和需要查找的数据
断言表:预期结果与实际结果相比较
定位元素 *** 作字典表:元素方面,中文名
2.数据库信息和生成案例和组件的参数以键值对的形式进行参数配置,都放在.propertIEs配置文件里然后利用PropertIEs类读取配置文件
数据库信息:账号 密码 driver url
生成案例参数:组件所属模块,一级菜单名,案例编号
3.MysqL中涉及的表字段全部写在一个实体类里
4.MysqL连接与查询数据,查询数据的方法返回类型是ResultSet,把查询出的数据按“对象”存储,
数据提供方法返回类型是Iterator<Object[]>
**不变参数:**测试平台,包名,类名,noreset,自动化引擎(uiautomator2)
1. 创建实体类:不变参数字段
2.创建XML:不变参数对应的具体值,
实体类与xml关系:把利用DOM4j的方式初始化SaxReader对象读取xml中解析到的配置信息存放在实体类中的构造函数中
可变参数:
udID:利用adb devices命令查询连接的手机
appium端口:默认4723,++2。。
uiautomator2Port:端口服务端和手机上的uiautomator2服务通信的端口,该端口目前在启动appium时无法确定需要在脚本中指定,默认8200,++2。。
1.根据组件所属模块生成组件,自动生成组件类放在指定的路径下
2.根据案例编号(可为空)和菜单名查询案例条数,自动生成案例类放在指定的路径下
3.把生成的案例存放在集合中,加上APP启动参数和监听器用于生成testng.xml
4.在main方法中执行案例
案例的执行
4.1.启动多个Appium服务
4.2.动态生成testng.xml文件
4.3.执行testng.xml
4.4.杀死Appium服务
1.创建一个执行dos环境下的命令工具方法
2.利用adb devices命令查询连接的手机udID
3.获取端口列表,appium端口默认4723和uiautomator2Port端口默认8200
首先查看端口是否被占用,如果被占用,就根据该端口用命令查看进程并杀死该进程,这样端口就被释放了
4.利用命令行模式启动所有Appium服务
启动Appium服务:
由设备的数量去决定启动Appium服务的命令参数有多少条,
利用Java自带的多线程(Thread)去启动Appium服务,解决单进程阻塞问题
5.杀死所有的Appium Server
获取所有的appium的端口,根据端口查看进程并杀死该进程
以上是内存溢出为你收集整理的Android手机App自动化涉及的技术及框架介绍全部内容,希望文章能够帮你解决Android手机App自动化涉及的技术及框架介绍所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)