优测网的手机测试环境搭建

U测环境搭建前,需要保证本地的开发adb环境是搭建好的,即在命令窗口输入adb可以显示以下信息。(adb环境搭建第一篇博客已经介绍过)地址:
http://tech.dev.aixuexi.com/?p=740 有介绍过,成功的标志如下。
图片1
1.进入优测网:
2.登录优测网账号,点击进入云真机-设备分享,点击页面上的使用指南按钮,如图:
图片2
3.进入使用指南页面,如下,按照页面上的操作一步步操作
图片3
4.下载客户端,点击页面上的下载按钮;安装客户端。
图片4
5.安装完成之后,启动UTestClient客户端,输入登录UTest官网的账号。手机连接PC后,打开手机的USB调试模式。客户端命令行提示“手机上报成功”并显示手机基本信息时,连接设备成功。
图片5
6.分享设备在云真机 > 设备分享 > 我的设备中找到正在连接的设备,分享给指定的人或指定的组。
   以上是我们做U测手机测试的环境搭建的步骤,有兴趣的可以按照上面的步骤进行操作。

有赞测试分享读后感

       看完有赞的测试团队建设与测试日常工作,让我对测试有了一个新的认识。
       之前也经历过几家公司,相对来说,对测试的重视程度都不高,都只是开发完成之后,将代码提到测试环境,然后测试人员根据需求文档,主要对功能进行测试。如果有必要会做简单的性能测试与自动化测试。
但是有赞对测试团队却很重视,他们的测试团队负责相关项目具体测试工作、自动化建设、合并发布流程管控、设计开发线上业务级别可用性监控、同时在研发提升测试效率的工具。 相对的,他们对测试技能要求也很严格,需要具备白盒测试能力、CodeReview能力、业务功能测试。另外,测试的规范性也很重要,有赞的根据项目来划分测试资源很有借鉴意义。我们也可以效仿他们,对每个项目进行评估,需要投入几个测试,测试负责的业务线,哪些项目测试只负责写完测试用例,后续执行由开发自己执行即可。测试只需要在上线前走一下checklist即可。对于一些小型项目,开发自行搞定即可。再次,有赞的测试方案很规范。可以让大部分公司直接拿来使用。 除此之外,有赞在性能测试平台,接口测试平台,QA测试平台等方面都很成熟。
        相对于有赞,首先,我们在白盒测试能力、CodeReview能力这两方面都比较欠缺。其次,我们测试的规范性也不健全,每次提测代码质量不高,这个其实可以通过项目规范解决问题。比如,开发先自己执行测试用例,没有问题了再提测,测试只需要走一下checklist即可。我们测试现在花费了过多的时间在跟开发一起走主流程,往往主流程需要走2天,然后正式再开始测试。这样导致接口测试,性能测试,复杂业务流程测试都没有时间进行。再次,有赞的测试方案我们可以直接使用。如下:
33
       面对如此大的差距,我们只有一步步慢慢来。现在我们的自动化测试平台robotframework已经成功使用起来,同时doclever接口平台也正在渐渐使用起来。其实再大的骨头我们只要有了目标都可以慢慢啃下来。后续如性能测试,接口测试,兼容性测试等方面的建设,也需要找准方向,慢慢开始进行。我相信我们QA部门可以顶住压力,创造一个不一样的明天。

monkeyrunner之环境搭建及实例

一、Monkeyrunner简介
1.MOnkeyrunner相对Monkey区别
1)Monkeyrunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控)
2)精确控制事件之间的事件
3)可以进行:点触屏、拖拽、长按、键盘事件
4)可以智能截图对比和判断
5)回溯出详细具体的BUG路径
2.Monkeyrunner优缺点
1) 能完全模拟人工所有操作
2) 有详细的API文档参考
3) 可以写出智能图像对比脚本
4) 支持java和Python两种语言脚本
5) 脚本移植性差
3.Monkeyrunner脚本编写
1) 终端USB调成开发者模式
2)电脑安装手机驱动
二、Monkeyrunner环境搭建
    Monkeyrunner的环境搭建,需要安装以下工具:jdk、android sdk、python编译器。
1.jdk的安装与配置
1)jdk下载地址
    下载完成后,默认安装即可。
2)jdk环境配置
    jdk安装成功后,计算机→属性→高级系统设置→高级→环境变量,在系统变量中,新建JAVA_HOME变量,变量值填写jdk的安装目录。

100

    在系统变量中,编辑Path变量,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
101
在系统变量中,新建CLASSPATH变量,变量值填写为:
  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)
102
    到此,系统变量配置完毕。
3)jdk环境检查
    检验jdk环境是否配置成功,则运行cmd,在cmd窗口中,输入 java -version (java 和 -version 之间有空格)。若如图所示,显示版本信息,则说明安装和配置成功。
103
2.android sdk安装与配置
android sdk就是指Android专属的软件开发工具包。android sdk中我们最常用的就是tools和platform-tools文件夹中的工具。
1)sdk下载地址
下载地址1:http://developer.android.com/sdk/index.html
下载地址2:http://rj.baidu.com/soft/detail/23485.html?ald
Sdk下载完成后,解压缩到自己的目录,不需要安装。
2)sdk环境配置
    sdk安装成功后,计算机→属性→高级系统设置→高级→环境变量,在系统变量中,新建ANDROID_HOME变量,变量值填写sdk中tools和platform-tools的安装目录。
104
    在系统变量中,编辑Path变量,在变量值最后输入%ANDROID_HOME%;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
105
3)sdk环境检查
    检验sdk环境是否配置成功,则运行cmd,在cmd窗口中,输入adb。若如图所示,则说明安装和配置成功。
106
3.Python编辑器安装与配置
    python用于支持Monkeyrunner运行,使用python脚本编写用例会大大简化Monkeyrunner用例的编写,且会帮助扩展monkeyrunner的自动化功能。
1)Python下载地址
下载后,按照提示信息,下一步安装即可。
2)Python环境配置
    Python安装成功后,计算机→属性→高级系统设置→高级→环境变量,在系统变量中,编辑Path变量,在变量值最后输入Python的安装路径;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
107
3)Python环境检查
    检验Python环境是否配置成功,则运行cmd,在cmd窗口中,输入python。若如图所示,显示版本信息,则说明安装和配置成功。
108
4.Monkeyrunner环境检查
    若以上步骤均完成,且各环境变量也配置正确,至此,Monkeyrunner环境已经搭建完成。检验Monkeyrunner环境是否搭建成功,则同样运行cmd,在cmd窗口中,输入monkeyrunner。如下图所示,则说明Monkeyrunner环境搭建成功。
109
    下面就可以用Monkeyrunner连接模拟器来进行自动化的测试了。
三、Monkeyrunner使用方法
    Moneyrunner在使用前,必须先打开模拟器或连接上手机设备。下面是Monkeyrunner的实例操作。
1.模拟器启动
    我们这里选择命令打开模拟器。运行cmd,在cmd窗口,输入命令:emulator -avd AVD_test,其中AVD_test是模拟器的名称,填写自己创建的模拟器名称。
110
    模拟器启动成功后,我们仍在cmd环境中操作。现在进入Monkeyrunner的shell命令交互模式。
输入命令:monkeyrunner
进入shell命令交互模式后,首要一件事就是导入monkeyrunner所要使用的模块。直接在shell命令下输入命令:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
再回车,这步完成我们就可以利用monkeyrunner进行测试工作了。
111
2.模拟器连接
    下面我们就要Monkeyrunner连接上模拟器,进行一系列操作了。输入命令:
device=MonkeyRunner.waitForConnection()
其中,device=MonkeyRunner.waitForConnection(6,’emulator-5554′)
参数1:超时时间,单位秒,浮点数,默认是无限期地等待。
参数2:指定的设备名称device_id,默认为当前设备(手机优先,其次为模拟器)
112
    输入命令后,页面上没有错误信息返回,即成功连接设备。
3.app安装并启动
1)app安装
    模拟器启动成功后,我们安装自己想要的apk,这里我们选择qq音乐安装。
输入命令:device.installPackage(‘F:\\QQyinle_439.apk’),其中,参数是APK的相对路径。
    安装成功返回true,此时查看模拟器我们可以在IDLE界面上看到安装的APK的图标了。
113
2)app启动
    app安装成功后,现在启动该app,命令为:
device.startActivity(component=”package名/.activity”)
首先,我们有必要说一下,如何获取一个app的package名和activity。这里,我们只描述一种获取方式。
使用aapt,其中aapt是sdk自带的一个工具,在sdk\builds-tools\目录下:
114
    以存储在F盘的qq音乐为例,运行cmd,命令行中切换到aapt.exe目录,
方法一:
执行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路径中一定不能有空格。
120
120
121
由上图可知:package name:com.tencent.qqmusic
activity:.activity.AppStarterActivity
方法一由于日志较多,寻找起来比较费劲,所以我们引出方法二。
方法二(推荐):
把日志存储在特定的文件中,在文件中通过搜索关键字,得到包名及活动名,这里我把结果输出到F盘的log.txt中:
aapt dump badging F:\QQyinle_439.apk > F:\log.txt
    到此,已经获取了app的package名和activity。下面,我们真正的启动app。在原有cmd运行窗口,输入命令:
device.startActivity(component=” com.tencent.qqmusic/.activity.AppStarterActivity “)
    命令执行后,模拟器上的app被启动。这表示命令启动app成功。这里的关键是app的package name和activity对应获取正确,否则启动不了特定app。
115
    此时可以向模拟器发送如按键、滚动、截图、存储等操作了。
四、Monkeyrunner运行python脚本
    同样,Monkeyrunner可以直接调用指定python脚本,将命令写到python文件里,命名例如***.py,然后我们再从命令行直接通过monkeyrunner运行它即可。比如,我们还是用上面的例子,语法如下:monkeyrunner ***.py。接下来monkeyrunner会自动调用***.py,并执行其中的语句,相当方便。
    我们这里将上述例子,所有命令放在python文件里,并命名test.py,然后存储到本地F盘,即路径为:F:\test.py。
复制代码
#coding:utf-8 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice device=MonkeyRunner.waitForConnection() device.installPackage(‘F:\\QQ_374.apk’) MonkeyRunner.sleep(3.0) runComponent = “com.tencent.qqmusic/.activity.AppStarterActivity” device.startActivity(component=runComponent)
复制代码
    在cmd中运行monkeyrunner F:\test.py,这里的python脚本路径为相对路径。结果报错:SyntaxError:mismatched input ‘test’ expecting NEWLINE,如下:
116
    这是因为python脚本应在dos模式下执行,不要进入monkeyrunner的shell命令交互模式。正确的方式如下,输入命令monkeyrunner F:\test.py:
117
    运行成功后,则可以在模拟器上看到启动的qq音乐app。

Android学习第一天-adb常用命令

1.Android Debug Bridge

1.1简介

Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。同时这是一个包含了以下三部分的cs模式的程序:

1) adb client

从图中,我们知道client是运行在PC端的,每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。

当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。

所有的client都是通过5037端口与adb-server进行通信的。

2)adb daemon(adbd)

从图中,我们知道daemon是作为一个后台进程运行在模拟器/真实Android设备中的。

daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:

Emulator 1, console: 5554

Emulator 1, adb: 5555

也正因为每个设备都分一组两个端口,也已adb连接手机的最大数量为16。

说回端口的作用,在这两个端口中,其中偶数端口是用于server 与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。

2) adb server

从图中,我们同样可以知道,server也是作为一个后台的程序运行在PC端的,他负责管理client进程以及adb daemon之间的通信。

当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

 1.2 常用的adb命令

首先我们先来介绍一下,adb命令的使用格式吧:

adb [-d|-e|-s <serialNumber>] <command>

adb是必须的,接下来方括号[]里面的内容不是必须的,最后才是我们需要执行的命令操作,例如 adb -s emulator-5554 install UCBrowser.apk (这是安装UC浏览器的意思)

下面先介绍下,前面几个参数的含义吧:

-d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错

-e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错

-s:通过设备的序列号进行指定设备执行命令

如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。

ok,下面开始讲解常用的命令吧:

1) 查看当前PC端连接有多少设备:

adb devices

终端中的执行结果为:

从上图中,我们看到了设备有的两种状态,其实执行该命令,可能返回的状态有三种:

I. device 设备已经成功连接到了adb-server

II. offline 设备并没有连接到adb或者没有响应

III. no device 并没有设备/模拟器连接

 2) 查看adb的版本

adb version

终端中的执行结果为:

3) 给设备进行软件的安装

adb -s <serialNumber> install <path-to-apk>
eg:
adb -s 99eb07a9 install D://Test.apk

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

adb -s <serialNumber> shell pm install [options] <PATH>

其中[options]中最常用的选项是-r,代表着本次安装是重新安装,会保留用户数据。

4) 卸载设备中已经安装的软件

adb -s <serialNumber> uninstall <pkg_name>
eg:
adb -s 99eb07a9 uninstall cn.uc.test

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

adb -s <serialNumber> uninstall [options] <PACKAGE>

这里的options是-k,加上该参数表明卸载软件后依旧保留用户数据

5) 将数据从设备复制到PC中

adb -s <serialNumber>pull <remote> <local>
eg:
adb -s 99eb07a9 pull /sdcard/stericson-ls D://

终端的执行结果:

在D://盘中我们也可以发现stericson-ls文件

6) 讲数据从PC端复制到设备中

adb -s <serialNumber>push <local> <remote>
eg:
adb -s 99eb07a9 push d://stericson-ls /sdcard/

终端的执行结果:

7) 获取连接到的手机的序列号

adb get-serialno

终端的执行结果:

8)获取设备的连接状态

adb -s <serialNumber> get-state
eg:
adb -s 99eb07a9 get-stat

终端的执行结果:

9) 等待设备连接成功

adb wait-for-device

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

10) adb-server 的开启与关闭

adb kill-server
adb start-server

终端的执行结果:

有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。主要关掉那些软件并且杀掉那些软件自带的adb进程重来即可。

1.2 手机执行Shell命令

众所周知,Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行

填补。

下面我们讲解下如何在手机中执行Shell命令:

1) 每次都加上adb shell来进行命令的发送与执行

adb shell <command>

2) 先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令,如图:

1.3 Activity Manager 常用命令与参数说明

一般情况下,我们最常用它来进行app的开启,并且传递一定的参数过去,比如:

adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d http://www.baidu.com

在这里就不做太过详细和重复的说明了

1.4 Package Manager 常用命令与参数说明

1) 使一个apk处于禁用状态,相当于卸载了:

disable <PACKAGE_OR_COMPONENT>
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su disable com.UCMobile/.main.UCMobile

终端执行结果:

同时我们在手机上发现,UC浏览器的图标不见了

2) 让一个apk从禁用状态恢复过来

enable <PACKAGE_OR_COMPONENT>
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su enable com.UCMobile/.main.UCMobile

终端执行结果:

同时我们从手机上发现,UC浏览器的图标又回来啦。

3) 查看一个apk所在的路径

pm path <Package>
eg:
adb shell pm path com.UCMobile

终端执行结果:

4) 查看手机中装的所有的包

pm list packages

 

1.5其他常用的adb命令

1) 屏幕录像

例如,屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

adb shell screenrecord /sdcard/demo.mp4

2) 关闭设备请求,开启设备

adb shell stop
adb shell start

3)设备关机以及重启

adb reboot
adb shutdown

 

Monkey测试环境搭建

如果想要搭建好Monkey的测试环境,首先几个必要的步骤和环境不能少,分别是java相关环境、Android SDK环境,启动android虚拟机或连接真机与执行monkey测试。现在我分步总结如下:

一、JAVA环境的搭建
1、首先要安装java的JDK;
2、安装好JDK之后需要配置环境变量,
在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”; 
JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径,如:D:\java\jdk1.5.0_08,
此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
 
  Path使得系统可以在任何路径下识别java命令,设为: 
 
  %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 
 
  CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为: 
 
  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) 
 
  %JAVA_HOME%就是引用前面指定的JAVA_HOME;
3、“开始”->;“运行”,键入“cmd”;输入命令“java -version”,“java”,“javac”几个命令,出现了JAVA的版本信息,说明环境变量设置成功.
上传1
二、Android SDK工具安装

1.下载基于windows 的 androidSDK

下安装的官网地址请参照:http://developer.android.com/intl/zh-cn/sdk/index.html#Other,截图如下:

Monkey测试教程-Monkey介绍及测试环境搭建1上传2

2. 设置sdk下面tools的环境变量

下载安装完成后,鼠标右击“计算机”-》属性-》高级系统设置-》环境变量-》先设置Android的环境变量,与JAVA一样,先新建ANDROID_HOME环境变量

上传3

 再在Path编辑加入%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

上传4

3.安装完成之后,打开android SDK显示如下:

上传5
三、Android Monkey 测试准备[注意:保证手机内存充足,否则无法测试]

  上面的步骤如果都完成之后,如果想要启动Monkey测试环境,必须先启动android虚拟机或者连接上真机。这里以真机来说:

   [注意:保证手机内存充足,否则无法测试]

 1.  启动命令行,输入cmd,打开命令窗口;
 

 2. 进入路径为SDK的platform-tools的安装路径,如下:

F:\Program Files (x86)\Android\android-sdk\platform-tools】

上传6

输入adb空格shell:

上传7

出现error:device not found,说明安卓设备没有被找到,此时可以使用手机连接电脑,手机的USB模式必须打开,电脑上必须安装有手机的驱动,连上设备之后,我们在输入adb shell命令,如下:

上传8

上图就是能执行操作的命令,此时就可以执行Monkey Test命令了。

此时我们可以执行monkey命令:

Monkey –p com.qq –v 1000

此命令意思为执行1000次随机用户模拟操作,com.jianke.doctor为安装包的名字,例如Monkey –p com.jianke.doctor –v 100

上传9上传10

以上是我使用Monkey测试的基础环境搭建,欢迎大家一起学习。

 

APP与web测试的区别

测试流程

1.用一个手机先做冒烟测试;冒烟通过之后,先用一个android或者IOS做详细测试。
2.有时间测试之前应该写好测试用例,按照用例执行功能;没有时间写用例,也要一边测试,一边记录:你每走一个测试流程测试的是那个模块的什么功能。这样记录下已经测试的点,如果测试点没有通过的,要记录下,以便做回归测试重点关注。
3.详细测试:所有的功能都要走一遍(不管所有功能通没通过),第一轮就算测试完。并做好相应记录。这样可以直观看到,第一轮测试完成之后,剩余的bug情况。
4.第二轮测试,除了验证第一轮遗留的bug做回归测试之外,需要换一个手机测试,如果之前用的是IOS,这次改成android。所有功能再跑一遍。
5.测试完2轮,基本上bug就解决了有80%。然后再使用其他的手机做兼容性测试。如果时间不充分,也一定保证android与IOS一个必须每个测试一部手机。
6.如果时间充分,再使用其他的手机做一下主流程测试,保证兼容性没有大问题。
7.熟练使用抓包工具,看日志,查数据库,协助开发定位问题。
8.对爱学习系统整个流程熟悉,数据源知道怎么来,各个跟APP有关的功能,流程都要特别熟悉。
APP测试
1.功能
a.基本功能,主要指app是否完成了设计的所有功能。分清模块,写一份checklist,避免漏测。考虑横竖屏切换,不过很多app现在只支持竖屏。
b.UI测试
c.系统交互:电话短信干扰,低电量提醒,push提醒,usb数据线插拔提醒,充电提醒等,

2.App在经过功能测试后,也需对其进行适配兼容测试需要检查的项主要有以下几点:(a) 在不同平牌的机型上的安装、拉起、点击和卸载是否正常;

(b) 在不同的操作系统上的安装、拉起、点击和卸载是否正常;

我们在实际测试中,常常会遇到下列问题:

(a) 在某个平牌某个系统上,app安装不上;

(b) 在某个平牌某个系统上,app无法拉起;

(c) 在某个平牌某个系统上,app拉起后无响应或拉起后黑屏、花屏;

(d) 在某个平牌某个系统上,app无法顺利卸载;

3.性能:稳定性,兼用型(android碎片化是个难题,bug也多,ios相对bug少),app运行的内存消耗和cpu消耗,app后台长时间运行的耗流量,耗电量。
4.易用性:面是否吸引人、容易理解。界面整洁、简单。无错别字。点击范围确定等。这部分测试中,如果测试认为有不合理的地方通常会提交需求bug。
4.外场:网络切换,网络信号强,弱下的app运行情况。

APP与web的区别:

根据两者载体不一样,则区别如下:

  系统结构方面
  web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新。
  app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
(1)web项目:
  1. 浏览器(火狐、谷歌、IE等)
  2. 操作系统(Windows7、Windows10、Linux等)
(2)app项目:
  1. 设备系统:iOS(ipad、iphone)、Android三星华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
  2. app考虑的是不同手机型号、厂家、分辨率和屏幕大小,系统等。
相对于 Wed 项目,APP有专项测试
  1. 干扰测试:中断,来电,短信,关机,重启等
  2. 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
  3. 安装、更新、卸载
  安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
  卸载:需考虑 卸载后是否删除app相关的文件
  更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
  4. 界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
  5. 安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
  6. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
  7. 权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
闪退,卡死。

网络种类多

移动端有多种网络:无线网络、2G、3G、4G等,断网、网速较差及网络之间的切换时页面的显示等,这些对于移动端来说很重要。此外,在非wifi下,还需要注意网络使用量问题。

中断测试

移动端有一个很重要的问题,一般情况下在使用软件的过程并不是长久的,这中间可能发生很多中断,如电话、短信、通知、断电等等,软件

需要特殊处理这些特殊情况。
打开一个页面,或在操作的过程中(点击一个按钮后),将手机屏幕锁住,再打开时,应用能否正常处理。

1. 来电中断: 呼叫中断, 被呼叫挂断,通话挂断,通话被挂断

2. 短信与消息中断: 接受短信, 查看短信使用app过程中,有短信或者扣扣微信等消息

3. 其他中断: 蓝牙,闹钟,插拔数据线, 手机锁定, 手机断电, 手机问题(系统死机, 重启)

4.异常测试:

4.1对app断网测试,断电测试

4.2服务器异常测试

5.内存泄漏测试

5.1使用内存比较少的手机进行测试,看是否出现内存泄漏(导致闪退等)

9.2打开app挂在后台,去进行他操作,再次回来,看是否资源被回收(导致闪退等)

屏幕的限制

图片及文字的显示;上传不同的图片尺寸显示是否正常;图片和文字一起显示时,效果如何。
操作区域;web端的应用,一般不会受 到屏幕的限制,而且通过鼠标操作更加准确。但是移动端由于屏幕较小,页面及按钮会受到屏幕大小的限制,再加上用户都是通过手指进行操作,一些按钮、选择框 等是否容易点击,多个可点区域位置较近时,点击部位稍微偏移,也许就会造成不同的结果,这种情况下是否可以达到预先的效果。

 

软件启动运行

移动端启动、卸载、升级几个特性,这是比较常见、也很重要的,比如升级时用户的数据怎么办,卸载后用户的数据怎么处理,卸载再安装用户登录数据的显示等。

升级测试

从上一个版本/上两个版本直接升级到最新版。

全新安装最新版

新版本覆盖旧版本安装

卸载旧版本, 安装新版本

卸载新版本, 安装新版本

增量更新

强制更新

 

测试点在于:  升级之后, 已经登录的用户,是否仍处于登录的姿态,  用户的缓冲文件, 配置文件是否还在。

安装和卸载测试:

1.1从开发给的地方获取包进行安装,看是否可以正常安装

1.2通过第三方软件转发安装包,进行安装看是否可以正常安装

1.3上线后,在应用商店下载,看是否可以安装

1.4安装后,直接卸载,看是否可以正常卸载

1.5安装后,利用第三方工具,看是否可以卸载

软件启动运行

移动端启动、卸载、升级几个特性,这是比较常见、也很重要的,比如升级时用户的数据怎么办,卸载后用户的数据怎么处理,卸载再安装用户登录数据的显示等。

手势

移动端还有一大特性,就是移动端有自己比较简单的手势,用户可以通过手势进行一个操作,比如左滑删除、右滑返回上一个页面、左右滑动图片等,软件需要对这个手势进行适配。

多点触控,

事件触发区域

测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。

以上是我个人观点,如有差别,欢迎指正.

浅谈接口测试get与post

 接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。从形式上来看各种应用程序的API(最著名的Windows 系统的API),硬件的驱动程序,数据库系统的访问接口,再到后来的Webservice接口,http rest接口。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。
  我们常说的api就是接口的意思,现在常用的web项目,app项目的接口都是基于http请求的,有些系统内部之间调用的接口一般不需要我们测试,这些很多是基于jar包那种类型的接口,只了解到这就差不多了。
  接口类型常见的有get,post,put…类型。get类型的接口一般是指获取信息的接口,比如列表查询的功能,点击查询按钮就调用一个get接口,然后把信息返回出来。就是指把内容从服务器拉下来。
  post类型一般是提交表单的功能,比如注册、上传、发布帖子之类的就是post接口。就是指把内容推到服务器上去。
  接口测试的策略:接口测试属于功能测试,也可以看做是需要了解部分代码的灰盒测试。测试流程是:1测试接口文档。2.根据接口文档编写测试用例(用例编写方法完全可以按照黑盒测试的用例编写规则来编写,如:边界值、正交表等等设计方法)。3.执行测试,查看接口返回的接口数据是否正确,主要检查返回的接口是否和接口文档中定义的一样,还有要检查返回的数据是否和数据库中的保持一致。
  eg1.https://api.douban.com/v2/book/search?q=”, 这是一个豆瓣的查询书籍信息的开放的api,是一个get型接口。q=”,单引号里就是查询的参数,这里给参数为《百年孤独》,然后在浏览器中访问下面地址:https://api.douban.com/v2/book/search?q=’百年孤独’, 返回的就是接口信息。返回信息如下:
1
  内容很多,是一个json字符串。可以把所有东西复制下来,用在线解析的站点:json.cn这个网站中解析出来就很好看了。如图:
2
  右边就是解析出来的格式,就是一个json字符串中嵌套了一个名叫books的数组。我们测试的时候就是根据接口文档,查看返回的这些数据是否是我们预期,判断这些数据是否是预期一般还需要了解项目的数据库,然后根据条件查询数据库,看接口返回的数据和数据库中查出来的是否一致。
  eg2.get型的接口可以直接通过浏览器访问,参数就带在地址的后面以‘?’连接。但是post的就不行了,要用专门的工具来测试,常用的推荐jmeter和soapUI。
下面介绍简单的首页Jmeter进行简单的post接口测试方法。
  1. 进行打开jmeter工具的,然后右键测试计划-threah-线程组进行添加线程组。
3
  1. 然后进行右键线程组-》逻辑控制器-》http请求的选项,添加http请求。
4
  1. 然后使用抓包的工具进行对http协议post协议上抓包,可以抓到的IP的地址和端口号
5
  1. 然后在jmeter中的服务器名称中添加ip地址,在端口号中进行添加端口号。
6
  1. 然后进入抓包工具overview中可以看到的接口的连接路径位置,
7
  1. 把链接路径填写到jmeter中的路径位置当中。
8
  1. 现在就是获取到的body的内容,在stream中进行可以获取到时body内容,把这个内容复制。
9
  1. 选中body data中进行粘贴到当前的输入框中。这样就设置完成了,下面就查看结果树来执行结果。
10