常见APP测试面试问题?
- 微信发红包怎么测试?
- 微信支付怎么测试?
- 微信发朋友圈怎么测试?
- 购物车怎么测试?
- 微博登录怎么测试?
- 搜狗输入法怎么测试?
- 新闻APP怎么测试?
- 短视频怎么测试?
移动端测试
- 传统手机测试(移动端设备测试):是指测试手机本身,如抗压、抗摔、抗疲劳、抗低温高温等,也包括手机本身的功能、性能等测试。
- 手机应用软件测试(移动端软件测试):手机应用软件是基于手机操作系统之上开发出来的软件,做这样的测试,就称为手机应用软件测试 、
移动端测试的复杂性
- 网络多样化;
- 支持系统多样化;
- 硬件配置多样化;
- 分辨率类型多样化;
移动端和PC端软件测试的区别
移动端测试流程
移动端测试要点
1.安装、卸载测试
- 从不同的渠道获取安装程序是否正常安装。
- 软件在不同操作系统下安装是否正常。
- 软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到了指定的目录里。
- 软件安装过程是否可以取消,点击取消后,写入的文件是否如概要设计说明处理。
- 软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电)。
- 安装空间不足时是否有相应提示。
- 安装后没有生成多余的目录结构和文件。
- 对于需要通过网络验证之类的安装,在断网情况下尝试一下。
- 还需要对安装手册进行测试,依照安装手册是否能顺利安装
- 直接删除安装文件夹卸载是否有提示信息。
- 测试系统直接卸载程序是否有提示信息。
- 测试卸载后文件是否全部删除所有的安装文件夹。
- 卸载过程中出现的意外情况的测试(如死机、断电、重启)。
- 卸载是否支持取消功能,单击取消后软件卸载的情况
- 系统直接卸载UI测试,是否有卸载状态进度条提示。
2.UI测试
导航测试:
- 按钮、对话框、列表和窗口等;或在不同的连接页面之间需要导航
- 是否易于导航,导航是否直观
- 是否需要搜索引擎
- 导航帮助是否准确直观导航与页面结构、菜单、连接页面的风格是否一致
图形测试:
- 横向比较。各控件操作方式统一
- 自适应界面设计,内容根据窗口大小自适应
- 页面标签风格是否统一
- 页面的图片应有其实际意义而要求整体有序美观
- 图片质量要高且图片尺寸在设计符合要求的情况下应尽量小
- 界面整体使用的颜色不宜过多
内容测试:
- 输入框说明文字的内容与系统功能是否一致
- 文字长度是否加以限制
- 文字内容是否表意不明
- 是否有错别字
- 信息是否为中文显示
- 是否有敏感性词汇、关键词
- 是否有敏感性图片,如:涉及版权、专利、隐私等图片
3.功能测试
运行APP:
应用的前后台切换:
免登录:
数据更新:
离线浏览:
APP更新:
定位、照相机服务:
时间测试:
PUSH测试:
4. 性能测试
极限测试:
- 在各种边界压力情况下,如电池、存储、网速等,验证App是否能正确响应
- 内存满时安装App ;
- 运行App时手机断电;
- 运行时断掉网络。
响应能力测试:
- 测试App中的各类操作是否满足用户响应时间要求
- App安装、卸载的响应时间;
- App各类功能性操作的影响时间。
压力测试:
- 反复长期操作下、系统资源是否占用异常
- APP反复进行安装、卸载,查看系统资源是否正常。
- 其他功能反复进行操作,查看系统资源是否正常
性能评估:
- 评估典型用户应用场景下,系统资源的使用情况
基线测试:
- 与竞争产品的产品演变对比测试等
5. 交叉测试
交叉测试又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。
测试要点:
- 1、多个App同时运行是否影响正常功能
- 2、App运行时前/后台切换是否影响正常功能
- 3、App运行时拨打/接听电话
- 4、App运行时发送/接收信息
- 5、App运行时发送/收取邮件
- 6、App运行时切换网络(2G、3G、4G、WIFI)
- 7、App运行时浏览网络
- 8、App运行时使用蓝牙传送/接收数据
- 9、App运行时使用相机、计算器等手机自带设备
6. 兼容性测试
7. 升级、更新测试
新版本发布后,配合不同网络环境的自动更新提示及下载、安装、更新、启动、运行的验证测试
测试点:
- 1、测试升级后的功能是否与需求说明一样
- 2、测试与升级模块相关的模块的功能是否与需求一致
- 3、升级安装意外情况的测试(升级安装意外情况的测试(如死机、断电、重启))
- 4、升级界面的UI测试
- 5、不同操作系统间的升级测试
8. 用户体验
- 是否有空数据界面设计,引导用户去执行操作。
- 是否滥用用户引导。
- 是否有不可点击的效果。
- 菜单层次是否太深
- 交互流程分支是否太多
- 相关的选项是否离得很远
- 一次是否载入太多的数据
- 界面中按钮可点击范围是否适中
- 标签页是否跟内容没有从属关系,当切换标签的时候,内容跟着切换
- 操作应该有主次从属关系
- 是否定义Back的逻辑。涉及软硬件交互时,Back键应具体定义
- 是否有横屏模式的设计,应用一般需要支持横屏模式,即自适应设计
9. 硬件环境测试
手势操作测试:
网络环境测试:
接口测试:
- 服务端一般会提供JSON格式的数据给客户端,所以我们在服务端需要进行接口测试,确保服务端提供的接口并转换的JSON内容正确,对分支、异常流有相应的返回值。此块测试可以采用itest框架进行测试。最方便的是采用httpclient进行接口测试。
- 进行服务端测试时,需要开发提供一份接口文档。
- (JavaScript Object Notation) 是一种轻量级的数据交换格式
- HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
- Itest测试框架是TaoBao测试部门开发的一套单元测试框架
10. 客户端数据库测试
- 一般的增、删、改、查测试。
- 当表不存在时是否能自动创建,当数据库表被删除后能否再自建,数据是否还能自动从服务端中获取回来并保存。
- 在业务需要从服务端取回数据保存到客户端的时候,客户端能否将数据保存到本地
- 当业务需要从客户端取数据时,检查客户端数据存在时,app数据是否能自动从客户端数据中取出,还是仍然会从服务器端获取?检查客户端数据不存在时,app数据能否自动从服务器端获取到并保存到客户端
- 当业务对数据进行了修改、删除后,客户端和服务端是否会有相应的更新。
11. 安全测试
软件权限安全性:
人机接口安全性:
通讯安全性:
数据安全性:
安装与卸载安全性:
Android应用测试基础
Android系统的结构
- 应用程序层
- 应用程序框架层
- 函数库
- Linux内核
Android测试常用术语
- 1 、 系统碎片化
通俗的讲亦是指整个安卓平台的差异化越来越大 - 2 、 屏幕尺寸
屏幕对角线的长度。(英寸) - 3 、分辨率
• 分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的 像素有多少。
• 由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越 多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分 辨率是个非常重要的性能指标之一。 - 4 、 像素
• 像素是指由图像的小方格组成的,这些小方块都有一个明确的位置 和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来 的样子。
• 可以将像素视为整个图像中不可分割的单位或者是元素。
• px (pixels) 像素
• dip或dp (device independent pixels) 设备独立像素
• sp (scaled pixels — best for text size) 比例像素 - 5 、网络制式
• 手机网络制式主要包括GSM、CDMA、3G、4G四种。
Android应用的构成
Android四大组件
1.活动(Activity):
应用程序中,一个 Activity 就相当于手机屏幕,它是一种可以包含用户界面的 组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的 点击,一般都会触发一个新的 Activity
2.服务(Service):
当APP转后台运行时,Service承担着大部分的数据处理工作;
是 Android 中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用 户交互而且还要长期运行的任务(一边打电话,后台挂着 QQ)。服务 的运行不 依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序, 服务扔然能够保持正常运行,不过服务并不是运行在一个独立的进程当 中,而 是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉后,所有 依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出)。
3.广播接收器(BroadcastReceiver):
应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
4.内容提供者(Content Provider):
主要用于接受系统或者app发送;
广播:发送消息和接收消息
Android测试环境搭建
1、 真机测试环境
- 使用真实的手机进行测试
2 、第三方模拟器测试
- 夜神
- 腾讯手游
- iTool
- 逍遥
- 雷电
- 网易mumu
3 、Android自带的模拟器测试
安装和配置JDK环境:
ADT工具包解压缩
配置Android环境。使得其可以使用adb命令:
- 1.配置变量“ANDROID_SDK_HOME”: 用户名:ANDROID_SDK_HOME,变量值(sdk的安装目录):D:\alsp\java_android\adt-bundlewindows-x86_64_20140101\sdk
- 2.修改Path。在path的变量值的最后加上(注意最前面的符号" . "): .;%ANDROID_SDK_HOME%\platformtools;%ANDROID_SDK_HOME%\tools;
Android开发环境搭建:
打开cmd,输入adb进行验证
ADB简介
adb概述
adb工具即Android Debug Bridge(安卓调试 桥) tools。它就是一个命令行窗口,用于通过 电脑端与模拟器或者真实设备交互。包括三点内容
- 电脑上运行的客户端。
- 在你用于开发的机器上作为后台进程运行 的服务器。
- 一个以后台进程的形式运行于模拟器或设 备上的守护程序(daemon)。
ADB命令的主要功能
- 1.运行Android设备的shell(命令行)
- 2.管理模拟器或Android设备的端口映射
- 3.安装/卸载APK程序
- 4.计算机和Android设备之间上传/下载文件
ADB常用命令
启动和关闭adb服务
adb kill-server 关闭ADB服务
adb start-server 启动ADB服务
查看设备连接情况
adb devices 查看设备连接
安装和卸载APK程序
adb install <apk文件路径> • 将指定的apk文件安装到设备上
adb uninstall <软件名> • 卸载设备上的指定程序
adb uninstall -k <软件名> • 卸载程序但是保留其配置和缓存文件
指定设备进行操作
当有多个设备连接时,可以用下面的命令来直接选择执行命令的设备
adb [-d|-e|-s <serial Number>] <command>
- d:真机(多个设备中只有一个真机时适用)
- e:模拟器(多个设备中只有一个模拟器时适用)
- s:序列号
列出当前设备上的程序包
adb shell pm list packages
删除微信APP
adb uninstall com.tencent.mm
- 1.adb push <本地路径> <远程路径>
- 例如,把pc上的文件或文件夹上传到设备
adb push foo.txt /sdcard/foo.txt
- 2.adb pull <远程路径> <本地路径>
- 例如,把设备上的文件或文件夹下载到pc
adb pull system/app D:\apps
日志Logcat的操作
adb logcat 在命令行中显示调试信息
adb logcat > 文件名 将logcat信息保存在文件中
过滤器表达式的格式是tag:priority
例如,adb logcat ActivityManager:I *:S
标记是一个简短的字符串,用于标识原始消息的来源 (例如"View" 来源于显 示系统)
优先级是下面的字符,顺序是从低到高:
- V — 明细 (最低优先级)
- D — 调试
- I — 信息
- W — 警告
- E — 错误
- F — 严重错误
- S — 无记载 (最高优先级,没有什么会被记载)
其他命令
android 启动SDK管理器
adb bugreport 查看bug报告
adb get-serialno 获取设备的序列号
adb root 获得Root权限
adb remount 将system分区从只读变成可读可写(需要ROOT权限)
android list targets 显示系统内所有的android平台
android list avd 显示系统中所有模拟器
ddms 启动ddms
adb reboot 重启
dmesg 打印出内核的调试信息
Monkey概述
Monkey是运行模拟器或设备上的程序,并生成用户事件的伪随机 流,例如点击,触摸,或手势,以及若干系统级事件。
可以使用monkey对应用程序进行压力测试、稳定性测试。
Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。
- 1、 利用命令完成
- 2、 所有的操作过程都是随机的
- 3、 所有的操作都是非人力可控
- 4、 可用于APP的压力和稳定性测试
Monkey特征
测试的对象仅为应用程序包,有一定局限性
Monkey测试使用的事件随机流是随机的,不能进行自定义
可对MonkeyTest的对象,事件数量,类型,频率等进行设置
Monkey的停止条件
- 1.如果限定了Monkey运行在一个或者几个特定包上,那么他会监控 测试图到其它包的操作,并对其进行组织
- 2.应用程序崩溃或接收到任何失控异常
- 3.应用程序不响应
- 4.正常运行结束
- 5.强制停止进程
Monkey应用
- 进入Monkey
首先检测android真机/模拟器是否已经连接:adb devices
- 然后选取一个设备来进入shell:
adb -s XX设备 shell
,当然如果你 只有一个设备,完全可以写adb shell
Monkey相关命令
-
查看应用程序列表:
pm list packages
-
运行指定一个APP包运行 n 次:
monkey -p app包名 运行次数n
(不指明包名的话,则运行所有APP n次) -
运行指定多个APP包运行 n 次:
monkey -p app包名1 -p app包名2 ......运行次数n
-
查看应用package
aapt dump badging E:\apk\es3.apk
开发版手机或模拟器UI 利器
hierarchyviewer
有关参数p的学习:
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后, Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备 中的所有APP。
指定一个包: adb shell monkey -p com.htc.Weather 100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机 用户事件)。
指定多个包:
adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 • 不指定包:
adb shell monkey 100
- 有关参数v的学习:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应 的参数如下表所示: 日志级别 Level0 :
示例 adb shellmonkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1:
示例 adb shellmonkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息
- 日志级别 Level 3:
示例 adb shellmonkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息
- 有关参数-s的学习: 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试 所产生的事件序列也相同的。
• Monkey测试1:
adb shell monkey -p com.htc.Weather –s 10 100
• 两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的 先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽 然是 随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产 生的随机操作序列是完全相同的,所以这个操作序列伪随机的;这个-s就是 指定了操作的顺序!
- 有关参数–throttle <毫秒>的学习: 用于指定用户操作(即事件)间的时延,单位是毫秒;
• 示例:
adb shell monkey -p com.htc.Weather –throttle 3000 100
- 用monkey测试天猫的这个包触摸操作百分之50,轨迹球操作百分 之30,其它操作百分之20,总共进行100次随机点击,事件之间间 隔300ms
adb shell monkey -p com.tmall.wireless -v -v -pct-touch 50 pct-trackball 30 -throttle 300 100
Monkey 测试中,APP异常情况的分析
- 随机的各种操作,没有任何逻辑和流程;
- 长时间的操作,功能和界面之间互相调用,消耗大量的系统资源;
- 操作之间的时间间隔太短会造成异常。
常见异常及对应策略
- Null 指针异常:对比APP运行日志,分析代码找出原因。
- Debug异常:主要是由于代码本身的错误。
- 低内存异常:内存空间不足。
- 操作无响应异常:频繁的操作导致某些功能无响应。
- 系统重启异常:可能误操作或系统崩溃导致。
- 运行时异常。一般在无响应之后。