一.启动时间:

1.冷启动:app退出

  a.启动app命令:adb shell start -W -n package/activity

  b.停止app命令:adb shell am force-stop package

注意首先要获取package名和activity名,在终端执行命令:adb logcat | grep START,打开浏览器,在cmp后面的就是相关的package和activity名.

 

2.热启动:app退出到后台.

  a.启动app命令:adb shell start -W -n package/activity

  b.停止app命令:adb shell input keyevent 3

 

自动化脚本的实现:

  1.获取命令执行时间,作为启动时间参考值.

  2.在命令前后加上时间戳,以差值作为参考值.

注意,自动化脚本写完之后,运行后获得的数据一般第一条数据不准确,剔除.

二.cpu

1.获取数据:adb shell dumpsys cpuinfo | grep packagename

 

三.流量

1.获取进程id指令:adb shell ps | grep packagename

2.获取进程id流量: adb shell cat /proc/pid/net/dev

 

四.电量

1.获取电量: adb shell dumpsys battery

2. 切换非充电状态: adb shell dumpsys battery set status 1     (status非2即可,2为充电状态)

 

五.内存

1.获取内存: adb shell top -d  1    (-d就是刷新的频率是1秒钟一次)

  VSS -  Virtual Set Size 虚拟耗用内存

  RSS - Resident Set Size 实际使用物理内存

 

六.fps&过度渲染

1.fps:每秒的帧数

2.过度渲染:描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次

 

 

应用测试框架的意义

1.提高代码的易读性

2.提高嗲吗效率

3.提高代码的易维护性

 

自动化实例

1准备测试的app

2.准备自动化测试环境

  环境1

  01.appium

  02.Android SDk

  03.Appium-python-client

  环境2

  Selenium

  UIAutomatorViewer

  Pycharm

3.自动化用例开发

  1.确认自动化环境

  2.自动化脚本编写

  3.自动化脚本的运行

确认被测手机名称:adb devices  

 

unittest

1.Test Fixture

  结构:

    setup()

    testcase()

    teardown()

2.Test Case

3.Test Suite

4.Test Runner

 

数据驱动

1准备第三方库

  首先安装ddt库,其次在脚本中引入ddt.

  直接在命令行里面运行安装.

数据驱动到的应用

  1,使用元祖存放被测试的数据,一个参数的情况

  @data(1,-3,2,0)

  def testcase(self,value):

  这里的value就是data里面单个的数据

  2使用元祖存放被测试的数据,多个参数的情况

  @data((3,2),(4,3),(5,3))

  @unpack

  def testcase(self,value1,value2):

   这里的value就是data里面的数据,value1对应3,value2对应2  

 

实践

1.数据驱动的应用:

  在登录的过程中,将登陆的数据,使用数据驱动实现

 

 

app api自动化测试

基础概念: 应用编程接口,     http api

 

fiddler

  环境准备:

    fiddler安装

  工作原理:

    客户端---fiddler---服务器

  基本界面: 

  设置断点修改request:

    设置断点的两种方式:

      1.通过工具栏设置断点:rules--->automatic breakpointg--->before requests 设置后,在右侧的webform中修改对应的值

      2.通过命令设置断点:在左下方输入框bpu+www.badun.com      清除直接输入bpu就行了

  设置断点修改response:

    设置断点的三种方式:

      1.通过工具栏设置断点:

      2.通过命令设置断点:bpafter+www.baidu.com

      3.autoresponse设置:

  fiddler小工具

    1.会话的过滤:filter下面进行相关的设置,过滤到我们关心的内容

    2.会话的比较:选中对比的两个会话,右键选择compare      注意下载windiff工具

    3.编码的小工具:tool-->textwirard

  host设置

    1.找到win系统下的host文件,进行修改.tool--->host remapping

    2.安装小工具,帮助修改host

    3.借助fiddler工具,实现host的修改

  构造http请求:

    1.get请求

    2.post请求  

  抓取手机包:

    1.配置fiddler允许监听https:  tool--->fiddler options---https设置---connect中的四个选项,勾选下面三个 

    2.配置fiddler允许远程连接

    3.手机端设置代理服务

    优点:1.无需root权限.  2. android&ios均适用   3.操作简单&界面清晰  

postman

  api接口测试问题:

    1.后端服务提测时间早于客户端

    2.很难用客户端模拟异常请求

    3.fiddler的composer无法实现自动化验证

  适用范围:1.pc  2.wap  3.app

  环境准备:安装应用包--->注册新用户

  发送get或者post请求,设置检查点,检查请求返回值,自动运行请求集合

  节省回归测试人力

 

ddt在api自动化的应用

1.Python request模块的准备

2.http get测试脚本的实现

3.http post测试脚本的实现

4.在api自动化中应用ddt

 

 持续集成实例

使用jenkins自动化测试app:

提交代码-->卡取代码-->编译-->打包-->配置-->测试-->反馈问题-->开发处理-->提交代码

 

 

Android native app自动化

appium:

   android平台的

理念:1.无需重新编译应用,

  2.不局限于语言和框架,

  3.无需重复造轮子,接口统一,

  4.开源

跨架构: native,hybrid,webview

跨设备:android,ios,firefox OS

跨语言:java,Python,ruby,php,js

跨进程:不依赖源码基于(UIAutomator)

 

  APPIUM原理

SELENDROID的架构

 

 

contexts:上下文内容,没有参数

switch_to.context()切换上下文

find_element_by_xpath()定位元素

find_elements_by_xpath()

click()

time.sleep()

assertTrue()

assertEqual()