APP测试流程与web测试流程类似,分为如下七个阶段:
1.根据需求说明书编写测试计划;
参与人员
各阶段所需时间
测试目标
2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;
3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;
4.测试用例的设计与编写,进行用例评审及补充完善;
5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;
冒烟测试
主功能流程测试,性能,压力等非功能性测试
回归测试
上线测试
6.提交测试结果,包括测试用例,测试计划;
7.日常维护性测试;
APP测试需要提前准备哪些测试资源?
1.IOS设备、Android设备(选取市面上主流手机产品);
2.支付宝/银联支付的项目,需要提前申请支付宝/银联账户等等;
3.有秒杀专题的题目,需要规划秒杀时间表;
4.有优惠券使用的项目,需要添加优惠券数据;
安卓 app 内存不足时,如何获取内存
系统优先结束被挂起(暂停)的进程,释放内存
app 测试常见问题有哪些?原因有哪些
常见问题:
crash
ANR(应用无响应、卡死)
一般原因:
设备碎片化
网络波动大
内存泄漏
代码编写错误
app自动化测试工具
(对比其他熟悉的自动化工具的优缺点
自动化的简要方案)
app与web测试区别
相同点:
1、UI测试
需要检查界面布局,风格和按钮是否美观,统一等
2、设计测试用例依据等价类,边界值等方法,测试原理相同
3、大多数都采用黑盒测试方法来验证业务功能
4、性能测试
测试页面载入、翻页的速度、登录市场是否溢出等问题(、
5、测试应用系统的稳定性
不同点:
1.系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步更新。
app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
2、性能方面
web项目 需监测 响应时间、CPU、Memory;
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等;
3、兼容性方面
web项目:浏览器(火狐、谷歌、IE等);操作系统(Windows7、Windows10、Linux等)。
app项目:设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等),Windows(Win7、Win8)、OSX(Mac)
手机设备可根据 手机型号、分辨率、屏幕尺寸不同。
4.相对于 Wed 项目,APP有专项测试
干扰测试:中断,来电,短信,关机,重启等。
弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)。
安装、更新、卸载,中断、前后台切换。
安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况;
卸载:需考虑第三方工具卸载、直接卸载卸,载后是否删除app相关的文件;
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新;
中断:来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机;
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等。
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。
权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。
5.测试工具方面
自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium;
性能测试工具:APP 一般使用Monkey、 JMeter; Web 一般使用 LR、JMeter;
Android手机和IOS系统区别
两者运行机制不同:
IOS采用的是沙盒运行机制
安卓采用的虚拟机运行机制
两者后台机制不同:
IOS任何第三方程序都不能在后台运行
安卓中任何程序都能在后台运行,直到没有内存才会关闭
指令权限
IOS用于UI最高
安卓中数据处理指令权限最高
IOS和Android的APP测试有什么区别?
1.物理按键:
Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;iOS所有的返回上一层,只能靠页面功能实现。
2.多分辨率测试:
Android端20多种;IOS较少。
3.手机操作系统:
Android较多,IOS较少且不能降级,只能单向升级;
新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用,低版本IOS系统中的应用调用了新的资源库,会直接导致闪退。
4.操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;
应用数据从内存移动到SD卡后能否正常运行等。
5.push测试:
Android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;
IOS点击home键关闭程序和屏幕锁屏的情况(红点的显示)。
6.安装卸载测试:
Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;
IOS主要有app store,iTunes和testflight下载。
7.升级测试:
可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号)。
8.支付方式:对于一些有内购功能的APP,Android直接调用第三方支付渠道完成支付;IOS需要先在APP store里绑定支付方式,然后通过APP store去完成支付操作。
9.消息推送机制:
Android使用第三方或者自建平台进行消息推送;
IOS的消息推送渠道由苹果官方提供。
安装和卸载
对于安装,要考虑以下几点
是否可以正常安装:1.命令行;2.第三方工具,比如豌豆荚、pp助手等;
不同的系统、机型、版本是否能安装
安装过程是否可以暂停,暂停后能否再继续;
安装时空间不足时,是否有提示;
安装时关机或者断网等,是否符合需求;
卸载也是如此,除此要考虑是否所有所有安装的文件夹都被删除。
运行:
APP运行,从以下几个方面考虑:
是否可以正常打开;
运行是否流畅;
网络异常时,运行会不会受影响;
注册和登录:
主流的注册和登录有三种:
账号密码注册;
正常注册和登录;
已注册的账号,再次注册;
未注册直接登录;
密码展示:明文还是**;
长度和规则,数据校验;
单点登录、多点登录,修改信息是否同步;
修改密码后,已登录的用户是否要重新登录;
切换账号,信息是否及时更新;
手机号、邮箱验证注册;
手机号、邮箱是否有格式校验;
验证短信或者邮件是否及时;
正确输入后,是否可以正常登录;
验证码错误,是否有提示;
短信或者邮件文案是否友好;
重复发送验证码,前一个是否失效;
验证码发送次数是否有做限制;
验证码是否设置有效时长;
第三方授权直接登录:
数据同步是否正确;
取消授权,是否符合需求;
权限设置:
由于很多APP都依赖于位置、通知、网络等用户权限,针对权限可以通过以下方面去测试:
首次安装或者启动时,是否同意启用这些权限;
消息权限开启,能接收信息;关闭后是否不再接受信息;
位置权限开启,可以定位;关闭位置权限,需要定位才能使用的功能是否会提示或者引导开启;
网络关闭是否有提示或者引导;
软件更新:
强制更新:多次关闭或者打开应用,是否跳过强制更新;点击更新,是否前往下载页面;是否可以关闭弹出框;
非强制更新:是否正常关闭弹出框;重启是否提醒更新;点击更新,是否前往下载页面;
取消更新,老版本是否有影响;
更新能否成功,是否是最新版本;
网络环境:
主要是针对2G、3G、4G、5G、WIFI网络环境进行测试:
网络正常时,各个功能是否正常;
网络异常时,数据交换失败是否有错误提醒;
有网 >>>无网 >>> 有网,数据是否能恢复;
兼容性测试:
从不同系统,版本,分辨率,机型(不同厂家ROM)等维度进行适配测试;
通常选择在少数主流设备上执行全向的用例,在其他兼容性范围内的设备上覆盖主要功能的测试用例;
功能界面在不同分辨率下是否存在UI展示问题;
可以测试主流的机型或者版本,也可以用第三方平台。
异常需求测试:
内存空间为空时,应用能否运行;
是否有重力感应,切换横竖屏;
反复操作某个功能,是否出现闪退;
运行时出现电话等是否有影响;
分页处理技术,是否有重复的数据,数据显示是否完整,到达最后一页后是否还有数据进行显示;
数据的排序方式;
界面跳转是否正确;
出现异常情况是否有提示,是否跳转到已经设定好的默认页面;
图片处理的地方,是否容易出现程序崩溃现象,主要是图片压缩机制;
前端展示的数据,后台进行变动(增、删、改),是否是实时更新;
前端主动发出请求,后台数据库中是否存在相应的数据同时包括数据的关联性。
app测试有哪几种环境
1、本地环境
app安装的手机环境和电脑搭建的自动化测试环境(比如安卓SDK)
2、服务器环境
war包部署的服务器,服务器可以通过浏览器访问
简单介绍按android SDK的安装步骤
1、下载jdk和安装sdk
2、安装jdk、配置环境变量(java_home、classpath、path)
移动应用及其服务端的测试点
移动应用:
权限
ui
功能
性能测试
中断
安装运行卸载
兼容性
安全性
回归
升级更新
用户体验
服务端:
接口测试
性能测试
安全测试
如何判断bug是客户端还是后台问题
1.界面UI布局显示问题--前端
2.页面字段校验问题--前端
3.页面功能实现问题--前端?后台?
前2个很容易确定是前端的问题。第3个牵扯到前端和后台共同处理,所以区分时需要理清楚。谷歌浏览器F12开发者工具Network一栏。
如下图:点击【搜索】按钮,可以看到一个请求pageQuerySupplier
点击进去之后Headers状态是200,表示请求发送成功。Request Payload是请求数据。
Preview里面试响应数据。
如果请求发送失败;或者请求发送成功,返回数据失败。问一下开发是不是服务器关了(可能是在发版)。
如果请求成功,返回结果也成功。这时候查看返回数据。如果没有返回前端需要的字段,后台问题。如果返回了前端需要的字段,前端没有校验住,前端问题。
4.页面白板。页面本来就没有内容,或者加载缓慢。
5.数据库数据也更新了,浏览器缓存也清理了,数据就是之前的老数据,是什么问题?应该使用了redis缓存数据库,redis中没有修改值。
安卓中如何取出日志信息
1、把安装系统日志信息实时导入到本地 adb logcat - v.time>d:\mylog.log;
2、运行使用某个app、实时获取该app的日志信息(cmd里面的返回信息): adb shell monkey -p com.andorid.calendar -v 1000>d:\mylog2.log;
adb三个组件是指?
ADB作为一个客户端/服务器架构的命令行工具,主要由3个部分组成。
adb clent(客户端):可以通过它对Android应用进行安装、卸载及调试。
adb service(服务器):管理客户端到Android设备上abd后台进程的连接,负责管理client和damon进行通信。
a db daemon(守护进程):运行在Android设备上的adb后台进程。
常见的adb命令:
查看当前连接的设备
adb devices;
安装软件:
adb install 路径\xx.apk;
卸载软件:
adb uninstall<包含>
从电脑上发送文件到设备
adb push <本地路径> <远程路径> adb push c:\test1.txt/sdcard/:
从设备上下载文件到电脑
adb push <远程路径> <本地路径> adb push /pull/sdcard/test1.txt D:
实时获取日志
adb logcat -v time > d:\mylog.log
登录终端设备:
adb shell;
查找包名/活动名
关闭APP语法
监控APP启动时间
Monkey命令
APP这么多主流机型如何测试
魅族
华为
小米
苹果
App(闪退)原因
缓存垃圾过多
应用版本兼容问题
appium 都有哪些启动方式
命令端启动
命令行启动
安卓UI自动化测试工具
appium
robotium