手机APP测试理论知识
Android与ios的区别;
Android: 1操作系统开放
2 开发语言有 java、kotlin
3 程序包的名字为:xxx.apk
4 每家手机厂商都有自己开发的手机系统,都是基于安卓系统开发的,安卓系统是使用谷歌公司维护的
5 序列号表示一部安卓手机
ios: 使用软件 蒲公英 和
1、操作系统是闭源
2、开发语言 Objective、Swift
3、程序包的名字为 xxx.ap
4、系统由苹果公司维护
5、Udid 表示一部手机
Web app 优点和缺点:
优点
1开发成本低
2版本更新,维护方便
3 跨平台
4兼容性好(不同游览器可以使用)
缺点:
1 用户流失量大
2 用户体验一般(相较于手机上的app)
3 性能好坏取决于游览器和网络
4 数据传输不安全
App与后端交互过程:
1、c端发送请求到nginx服务器
2、nginx服务器转发c端请求到tomcat服务器
3、tomcat服务器解析请求到java代码执行c端请求
4、java代码操作mysql数据库生产结果
5、tomcat对响应结果进行封装处理,nginx转发响应结果
6、c端接受响应结果进行解析处理,app将结果展示给客户
Token(令牌):
用户使用app与后台交互时产生的访问令牌
Token可以实现免密登陆,登录功能可以直接使用
App测试流程
服务器 api端包含内容:新表、修改字段、清表
代码回滚意思:重新回到上次的版本也就是重新开始(将程序或数据恢复到上一次正确状态的行为)
确认熟悉需求
编写测试用例
等待测试环境搭建
冒烟测试(不通过时退回)
执行测试用例
提交并跟踪bug
回归测试
预发布环境(1验证主要功能、2 bug回归、3 关联模块)
线上环境(1验证主要功能)
申请上线
公司级别的测试项目组成(自动化测试框架)
项目名(总目录)
data(测试数据的目录)
element(定位元素的文件目录)
logs(自动化代码产生的日志文件目录)
src(全部是测试用例,以python包形式)
版本一(测试用例,python包)
Until(公共类,函数的目录,是以python包的形式)
report(测试报告目录)
Appium 用法
基于selenium开发
Appium 是一种开源,跨平台,支持多语言的自动化测试框架
跨平台:Windows、mac、linux 直接运行appium
支持多门语言:python、java、php、c、c++
Appium:移动端的·app(原生、混合、web)安卓、ios
Appium是c/s架构
{
"platformName": "Android", 手机系统
"platformVersion": "5.1.1", 系统版本
"deviceName": "emulator-5554", 手机序列号
"appPackage": "com.ss.android.ugc.aweme",安装包名
"appActivity": "main.MainActivity", 安装包活动名
"noReset": "true" 为true表示用户数据 为false表示清除用户数据
}
App的专项测试(测试内容)
作用:用于app需求分析,测试点设计
1、app的功能测试
什么是功能测试:主要测试的是app能否正常处理产品设计的业务逻辑
功能测试时软件测试的基础
App的功能测试需求-----产品经理的需求文档prd
2、APP的UI测试
UI测试的依据:UI工程师UI原型图
UI测试包含功能测试
什么是UI测试:验证app与用户交互的过程中界面是否美观,用户操作是否方便,布局是否合理
UI测试的内容:1、文字(是否存在错别字)
2、颜色(背景颜色、按键颜色)
3、图片(图片放缩的大小)
轮播图:循环播放的图片
后台数据库配置:图片的url更改就可以更改图片 4、弹出框(弹出框的布局)
5、toast文本(查看错别字、报错信息)
6、按键(功能有无响应、按键大小、按键的点击范围)
3、APP的兼容性测试
目的:保证app能在绝大部分手机上运行
从哪方面考虑手机APP的兼容性测试:
1、手机系统
安卓:安卓系统角度出发,兼顾主流系统(5.0到9.0)
可以用模拟器测试
ios:ios最低10 ,ios最高12.4.1(开发搞定)
云测试:使用第三方平台进行对产品的测试
2、屏幕分辨率
屏幕的尺寸、屏幕的像素、
1、 app与后端api的兼容
使用工具;fiddler 抓包工具
情景一:app升级、后端api不升级
App新版本对应老的api:验证新版本添加的功能是否可以正常使用
情景二:app和api同时升级
老的app版本对应老的api
老的app版本对应新的api *****************
新的app版本对应老的api
新的app版本对应新的api ******************
2、 APP的安全测试
1数据安全:
1、用户信息传递是否加密(身份证、银行卡、手机号、密码)
验证加密使用工具fiddler抓包
2、sql注入:类似于病毒,攻击目标是数据库
3、app数据传输敏感词汇是不允许出现的
4、用户保存在app内,是否在启动app后可以还原用户的操作
2应用权限
1系统权限
相机(照片存和读取)
通讯录、短信、麦克风、wifi、蓝牙、cps
新安装一个app获取权限的过程:某个功能需要的权限没给时的场景
3、 app更新测试
软更新:由用户自主更新
硬更新:强制用户进行更新
更新之后测试内容:1更新之前的数据是否保存
2更新之后数据被清掉,重新获取权限,相当于新安装的app、
缓存:指的是用户数据在app中暂时性保存
4、 交互性,交叉事件测试
交互性:1系统的弹框通知
2 一个app使用另一个app的功能
3 消息推送、短信推送、创蓝253平台
交叉事件:1电话通讯
2 语音通话
3 视频聊天
4 多个app同时使用一个功能,先入为主
5、 网络测试
强网测试:
4g、3g、wifi、热点
传输数据的效率
弱网测试:2g
弱网导致的不稳定因素:1、数据传输不全2、信息被劫持
无网络测试:飞行模式、不开wifi、不开流量
无网络验证的是:无网络是否有提示
如何模拟fiddler弱网环境:
9 app性能测试
手机测试工具:monkey 手机APP的稳定性
腾讯工具GT可以测试以下指标:
性能指标:内存、cpu、网络流量、耗电量、响应时间(测试的是api接口·响应速度)1~2秒
6、 app安装卸载测试
安装测试:
ios下载途径:第一种:appstore
第二种:网络途径下载但需要信任一个证书,才能使用
Andriod:第一种:应用商店
第二种:网络途径(游览器下载)
第三种:第三方平台
推广渠道:通过url 连接下载app
注意事项:(安装后一定要测试的)
1、 引导页面 2、权限
卸载测试:
1、 用户数据是否清除
2、 相关权限是否权限
3、 卸载app的时候的进度条
7、 app压力测试
monkey可以用于压力测试
1、 crash 程序异常退出(崩溃,用户可以看到报错内容)
2、 闪退 app
自动化测试应用于那个阶段
1、 回归测试阶段
2、 场景:兼容性测试
3、 压力测试:接口的压力测试
自动化测试流程
1、 开发完成项目交付测试之后
2、 定位相关功能的元素,
3、 准备测试数据(一般是Excel、csv文件、json文件、数据库、)用来保存测试数据
4、 按照分析的需求点进行测试代码的编写
5、 准备好自己的测试环境(appium的测试环境)
6、 将测试代码与测试数据组合到一起,执行测试代码,生成测试报告
7、 分析测试报告,定位bug
测试报告中执行的失败的用例分析:
1、 检查自己的代码是否存在逻辑上的错误
2、 代码逻辑上不存在错误,从开发的产品上找出原因分为以下步骤
a交叉验证:新老版本的相同功能进行对比
b查看测试代码的日志
c 服务器后台日志(开发人员)
d fillder抓取报错功能的接口返回数据
8 开发人员对bug进行修复,修复之后回归测试(重跑测试代码)
9 产品发布到预发或线上
9 代码合并与维护
自动化测试需要准备
1、 python语言
2、 模块:selenium、appium、pymysql、logging、xlrd、pytest、allure **************************************8
3、 allure测试报告生成
4、 测试项目的结构
5、 Appium的环境:
组成:java、SDK工具包、node.js(游览器语言)
Appium-desktop(UI appium服务器)、python Appium模板
自动化测试的优点
1, 针对测试工作量大的可以使用自动化测试
2, 某些功能重复使用率高的
3, 避免一些人为因素产生的疏漏
自动化测试缺点
1、 写代码和维护代码需要耗费大量的人力物力
2、 对测试人员编写代码能力要求高
3、 测试代码不稳定,容易受到一些外界因素的影响
4、 需求一旦变动,测试代码重写
什么样的项目适合进行自动化测试
1、 项目周期长
2、 需求变更不频繁
3、 需求功能明确的