Appium Desktop使用
Appium Desktop使用Android自动化前提依赖
adb工具
模拟器or真机
模拟器:网易mumu,genimotion,或者sdk自带模拟器
网易mumu操作
12345678910连接模拟器:adb connect 127.0.0.1:7555查看设备:adb devices【win版】adb connect 127.0.0.1:7555adb shell【mac版】adb kill-server && adb server && adb shell
真机需要root权限
Appium Desktop:入门学习工具
Desktop主要功能
UI分析
录制用例
元素查找测试
Attach已有session
云测试
用例录制
打开AppiumDesktop,并启动服务
启动服务后,进入以下页面
点击右上角“放大镜”(Start New Session)按钮,或者直接command+N,就会启动一个新的会话窗口(如下图),在这个窗口我们需要配置一些Desired Capabilities信息
获取设备 ...
Appium之介绍与环境搭建
Appium之介绍与环境搭建目前mobile自动化的方案
iOS
Android
calabash-ios
calabash-android
Frank
MonkeyTalk
UIAutomation
Robotium
ios-driver
UiAutomator
KeepltFuncational
selendroid
appium
appium
自动化工具选择
工具名称
被测系统
测试
脚本语言
支持H5
跨应用
稳定性
SDK自带
MonkeyRunner
Android
功能
Python
支持
否
稳定
是
Instrumentation
Android(<4.1)
功能
Java
支持
可以
稳定
否
Uiautomator2
Android(>=4.1)
功能
Java
支持
可以
稳定
是
Adb-For-Test
Android(<4.1)
功能
Java/Python
支持
可以
稳定
否
Monkey
Android
稳定
Java
否
否
稳定
是
CTS
Android
兼容
J ...
Appium Page Object模式
Appium Page Object模式PO模式封装的主要组成元素
PageObject对象:完成对页面的封装
Driver对象:完成对web、android、ios、接口的驱动
测试用例:调用Page对象实现业务并断言
数据封装:配置文件和数据驱动
Utils:其他功能封装,改进原生框架不足
实战演示
Appium学习
Appium学习Capability设置
app apk 地址
appPackage 包名
appActivity Activity 名字
adb logcat | grep ActivityManager
adb shell dumpsys activity activities | grep mFocusedActivity
aapt dumpsys badging com.android.chrome.apk | grep ‘launchable-activity’
automationName 默认使用uiautomator2(andorid默认使用uiautomator2,ios默认使用XCUTest)
noReset fullReset是否在测试前后重置相关环境(例如首次打开弹窗,或者登录信息)
雪球的首次启动弹框功能,noReset=True,noReset=false情况
1capabilities.setCapability("noReset", "true");
unicodeKeyBoard resetKeyBoard是否需要输入非英文 ...
Selenium之复用浏览器和Cookie获取
Selenium之复用浏览器和Cookie获取复用已有浏览器在执行UI自动化时,每次运行脚本都会弹出一个浏览器来,并且会从头执行,这样会带来的问题是,中间步骤如果出现问题则不好进行调试,使用复用浏览器可以从中间指定的页面进行以后的步骤执行。
配置Chrome浏览器环境变量
打开浏览器的debug模式,调试端口任意设置
123jingdeMacBook-Pro:~ apple$ chrome --remote-debugging-port=9222DevTools listening on ws://127.0.0.1:9222/devtools/browser/4c3364f0-e9fd-4f73-b71d-63a76c08482e
注意:
打开浏览器debug模式,把其他所有浏览器都关掉
已打开的debug模式的浏览器不要关闭
在脚本中加入调试参数
123ChromeOptions options = new ChromeOptions();options.setExperimentalOption("debuggerAddress","127.0.0.1:9222");d ...
Rest Assured Assert
JSON断言环境准备这里以rest-assured官网的示例进行演示学习
12345678910111213{ "lotto": { "lottoId": 5, "winning-numbers": [2, 45, 34, 23, 7, 5, 3], "winners": [{ "winnerId": 23, "numbers": [2, 45, 34, 23, 3, 5] }, { "winnerId": 54, "numbers": [52, 3, 12, 11, 18, 22] }] }}
可以使用WireMock进行响应规则的配置
JsonPath(Groovy’s GPath)在 Groovy 的官网,虽然并未提及它在 json 中的使用,但实际上只要是树形的层级关系,无论是 json、xml 或者其他格式,就可以使用这种简单的语法帮我们去找到其中的值,rest-assured 也已经帮我们实现支持了 GPath 的断言方式。Groovy Gpath官网说明
根节点.子节点
我们可以使用根节点.(点)子节点的方式一层层的找下去,例如我们需要对lott ...
Rest Assured 辅助功能
配置功能Config可以使用RestAssured内建的方法,进行全局的配置,有如下的方法:
12345RestAssured.baseURI = "https://api.github.com";RestAssured.authentication = oauth2("token");RestAssured.authentication = preemptive().basic("xxxx", "xxx");RestAssured.port = 443;RestAssured.basePath = "/user";
除了以上的配置,也可以使用RestAssured提供的配置功能进行实现,以下查看RestAssured提供的丰富的配置功能:
我们已经看到RestAssured提供丰富的配置实现,以下我们看下两个具体配置实体
使用headerConfig重写的方法,对header参数进行覆盖处理
1234567891011121314151617181920212223/** * Header配置实例 */@Testvoid headerConfig() { // 使用head ...
Rest Assured Response
Response结果处理extract().path()extract是我们获取返回值的核心,通过它来指明后面需要获取的内容,path()**中的语法同断言时的JsonPath**一致
extract().asString()有时候我们可能需要获取ResponseBody中的多个值, 利用**extract().asString()**先将响应结果以json字符串的形式保存下来,再一一根据需要获取
extract().getBody().prettyPrint();获取响应体的消息体进行json格式化的输出
extract().toString()获取消息体对象
extract().response()利用extract().response()来讲所有的response信息都保存成一个Response对象,然后在利用各种Response.get方法来获取:
获取所有的Headers:response.getHeaders()
获取某一个header值:response.getHeader(“Content-Type”)
获取status line:response.getSta ...
Rest Assured介绍及基本使用
Rest-Assured介绍
rest-assured官方文档
rest-assured使用文档
rest-assured中文使用参考文档
官方简单介绍
1Testing and validating REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into the Java domain.
在 REST Assured 的官方 GitHub 上有这样一句简短的描述: Java DSL for easy testing of REST services 简约的 REST 服务测试 Java DSL
Rest-Assured是一个测试RESTful Web Services的Java类库。可以使用Rest-Assured编写高度自定义化的HTTP请求用来测试各种各样Restful服务组合的业务实现。
Rest-Assured同样能够验证从服务器返回 ...
Java Api Object接口自动化框架
Github:https://github.com/jinglv/api-object-auto
在使用接口测试工具时,常遇到的问题接口零散不便于管理,测试数据生成难,测试流程不易组成,测试结果单一不直观……很多的痛点,造成我们在手工测试接口的时候,大量的时间在一些繁琐的工作,因此,完善的接口自动化测试框架是我们提高测试效率的非常有效地解决方案。
在我遇到的接口测试工作中遇到的痛点:
有的接口传入参数非常多(遇到最多,有近一百多个字段),人工去做对比就非常耗时耗力(纯属体力活)
接口经常变更,如果拿JMeter、Postman这些接口工具进行管理,不易追溯接口变更哪些
异步接口,有些接口请求后,同步返回了接口结果,但是实际的逻辑处理还未完成,需要等待处理完成后才能进行下一步(如果是人工等的话,那么就会容易遗忘)
接口关联,开发同学更喜欢称为上下文,JMeter、Postman也是可以做到该功能,但是流程不够直观
……
相信我们在做接口测试的时候会遇到各种各样的痛点、问题吧,在这上面会花费非常多的时间,导致我们会测试时间紧张,又在紧急的交付周期内,不好做到充分的测试。因此,对于冒烟测 ...