第一章 App自动化测试
自动化测试的思考
自动化测试实际上并没有节省测试人员和管理团队所期望的时间
测试中的某个流程没有自动化,增加的自动化测试的维护成本
什么情况下自动化测试可以帮助测试团队以及什么情况下自动化测试会阻碍他们的工作?
测试人员 : 应该自动化什么,自动化的程度有多少
测试经理: 测试自动化需要的开发成本,运维成本, 测试用例的编码成本如何投入获得最大收益
原则 :在考虑投入成本和维护成本的前提下, 应该百分之百的实现那些能够自动化的测试;不能实现自动化的不可强求
1. Android系统
官网简介 https://developer.android.google.cn/
APP的分类
- 原生应用程序: 系统原生的应用
- 混合应用程序:H5+后台应用
- Web版APP: 浏览器的应用
2.Android SDK
下载地址 : https://www.androiddevtools.cn/
安装SDK
设置环境变量 ANDROID_HOME
3.UIAutomator
系统自带获取界面元素的工具
4.夜神模拟器
5. ADB命令
官网 : https://developer.android.google.cn/studio/command-line/adb?hl=zh_cn
查看设备
adb device
连接模拟器
adb connect 127.0.0.1:62001
安装:
adb install {apk-path}
覆盖安装
adb -r install {apk-path}
制定设备安装
adb -s {device-name} install {apk-path}
卸载
报名需要在
adb shell
cd /data/app/
获得
adb uninstall com.best.android.zsww
查看所有包
adb shell
pm list package
过滤
pm list package | grep “xxx”
传输文件
adb push {本地目录} {模拟器目录}
adb pull {模拟器目录} {本地目录}
截图
adb shell screen {保存路径/名字.jpg}
重启
adb kill-server
adb start-server
6.package和activity
Package
在我们的app中这个Package是唯一的, 做app自动化时,需要知道他的Package,就知道我们需要对哪个app做自动化。 注意和.apk文件包名不同。
Activity
Android中,activity是所有程序的根本,所有程序的流程都运行在activity之中,activity可以算是开发者遇到的最频繁,也是android当中最基本的模块之一。在android的程序中,activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么activity就相当于一个网页。在activity当中可以添加一些Button、Checkbox等控件,可以看到activity概念和网页的概念相当类似。
一般一个android应用是由多个activity组成的,这多个activity之间可以进行相互跳转。例如,按下一个Button按钮后,可能会跳转到其他的activity,与网页跳转稍微有点不一样的是,activity之间的跳转有可能返回值。
Tips:activity的生命周期:即“产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启)。
Activity获取
aapt工具获取
aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件。获取命令如下:
aapt dump badging xxxx.apk | find "launchable-activity"
Activity页面布局元素
FrameLayout
FrameLayout是最简单的布局了。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。
LinearLayout
LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。
RelativeLayout
RelativeLayout相对布局允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。
AbsoluteLayout
AbsoluteLayout是绝对位置布局。在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,
TableLayout
TableLayout 为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。
TextView
通常用于显示文字用的。
ImageView
通常用于显示图片用的。