青春须早为,岂能长少年。这篇文章主要讲述软件测试 APP测试丶相关的知识,希望能为你提供帮助。
一:APP概述
li { list-style: none;
margin: 0 }
p { margin: 0 }
span.l { color: red;
font-weight: bold }
a.mapnode:link { text-decoration: none;
color: black }
a.mapnode:visited { text-decoration: none;
color: black }
a.mapnode:active { text-decoration: none;
color: black }
a.mapnode:hover { text-decoration: none;
color: black;
background: #eeeee0 }
APP架构:C/S
APP类型:
- web app
- 介绍:
- web app就是给web站编译打包加了个app壳,看起来像是一个app,可以上传到应用商店,也可以从应用商店下载到移动设备安装,但是我们在手机上打开之后看到的实际上还是网页,只不过写成的是自适应的网页能够在手机上显示,做到跟原生app那样。
而且web app也可以获取到手机里面的底层功能,比如说打开摄像头、打开相册、获取我们的地理位置信息...等等都可以做到的,那如果你想开发一款app需要用到原生底层能力的话,web app是可以满足到你。
- web app就是给web站编译打包加了个app壳,看起来像是一个app,可以上传到应用商店,也可以从应用商店下载到移动设备安装,但是我们在手机上打开之后看到的实际上还是网页,只不过写成的是自适应的网页能够在手机上显示,做到跟原生app那样。
而且web app也可以获取到手机里面的底层功能,比如说打开摄像头、打开相册、获取我们的地理位置信息...等等都可以做到的,那如果你想开发一款app需要用到原生底层能力的话,web app是可以满足到你。
- 语言:html5
- 优势-
- 1. 开发速度快、成本低。相对于原生APP,使用H5开发更节省人力,不需要单独的两个团队开发。
- 2. 版本控制及BUG修复更优秀。由于页面由服务器直接返回,有问题直接后台修改,不需要用户单独更新APP。
- 3. 跨平台性优秀。HTML5 采用网络通用语言,不用考虑终端设备或者操作系统的不同。
- 劣势-
- 1. 用户体验差。由于不同的手机设备性能不同,造成用户图形界面和数据展示体验不同,对手机要求较高。
- 2. 不能离线访问。由于界面都是由服务器返回,离线将无法访问APP页面。
- 介绍:
- native app
- 介绍:Native App是一种基于智能手机本地操作系统如ios、android、并使用原生程式编写运行的第三方应用程序,也叫本地app,有很强的的交互是一个完整的app可拓展性强。
- 下载安装:需要
- 语言:ios-object c,Android-java
- 1原生APP获取新功能需要升级APP应用
- 2原生APP应用安装相对包较大(包含UI元素,数据内容,逻辑框架)
- 3原生APP可以调用手机终端的硬件设备(语音,摄像头,GPS,)
- 优势-
- 1、提供最佳的用户体验,最优质的用户界面,最华丽的交互
- 2, 数据存放在本地,可节省宽带成本
- 3,盈利模式模式明朗
- 4,打开速度快
- 劣势-
- 1:移植到不同平台比较麻烦
- 2:维持多个版本的成本较高
- 3:需要通过store或market确认
- 4:盈利需要与第三方分成
- 5,开发的成本也比较高
- hybrid app
- 介绍:半原生半web;兼具native
app良好的用户体验和web
APP跨品台开发的优势,外观上市一个native app,实则是一个UIwebview,里面访问的是一个web app(native框架上加的web内容)
下载安装:需要
注:如新闻类的应用普遍采取这种开发策略
- 介绍:半原生半web;兼具native
app良好的用户体验和web
APP跨品台开发的优势,外观上市一个native app,实则是一个UIwebview,里面访问的是一个web app(native框架上加的web内容)
-
二:APP测试选机
- 1:了解APP用途
- 1:如APP有针对高级功能设计(如:指纹识别,nfc红外线感应,指纹识别)等,就选则支持该技术的手机。
- 2:不支持某个系统平台测试时就可以忽略。
- 2:主测试手机:
- 1:APP未投入市场‘预测’真实用户使用的设备和平台
- 2:app如针对普通用户就考虑市场占有有率高手机和系统版本
- 1:选市场占有率高的手机(Android,ios 各一台)
- 3:选择设备原则
- 1:不同的分变率
- 2:不同的屏幕尺寸
- 3:选择不同的操作系统
- 4:根据app用途,Android版本市场占有率,手机品牌市场占有率
li { list-style: none; margin: 0 } p { margin: 0 } span.l { color: red; font-weight: bold } a.mapnode:link { text-decoration: none; color: black } a.mapnode:visited { text-decoration: none; color: black } a.mapnode:active { text-decoration: none; color: black } a.mapnode:hover { text-decoration: none; color: black; background: #eeeee0 }
三:测试类型
- 1:功能性测试
- 1:根据软件说明或用户需求验证APP各个功能的实现
- 1:根据需求,提炼用户使用场景,验证功能
- 2:根据相关测试标准(公司和行业),验证功能
- 3:根据被测功能点特性采取特定方法测试
- 4:测试中,及时修正业务或需求理解错误。
- 5:使用思维导图进行测试点的设计与分析
- 2:功能缺陷:
- a:功能不起作用(菜单,按钮,链接,控件失效)
- b:功能错误(与预期的功能不一致)
- c:功能缺失(缺少具备的菜单,按钮,选项等)
- e:执行功能之后当前功能无法继续操作
- 3:具体功能:
- 安装
- 正常
- 下载到手机安装
- 应用商店下载安装
- 扫码下载安装
- 电脑手机助手安装
- adb命令安装
- 覆盖升级安装
- 在线跨版本安装
- 异常
- 安装中来电话,信息
- 安装中关机重启
- 安装中网咯断开
- 安装中取消
- 安装中手机内存满了
- 安装中使用其他多个软件
- 安装中恢复出厂设置
- 安装中删除安装包
- 安装中死机
- 还未完全卸结束改软件后再次安装
- 安装中锁屏
- 安装中电联过低
- 安装中切换到后台
- 安装中升级手机系统
- 正常
- 卸载
- 更新
- 1软件有版本更新是要否有更新提示
- 2软件更新后确定更新的后的版本,且安装运行正常
- 3用户取消更新是老版本课以正常使用,下次启动应用时依旧出现更新提示
- 4在不删除客户端的情况下,进行版本更新且运行正常。(功能是否更新,检查项目文件是否更新)
- 登录
- 1登录密码错误时是否有提示
- 2用户主动退出登录是下次启动,应进入登录界面
- 3对于支持自动登录的APP退出登录是否能自动登录成功
- 4密码修改后,登录时是否做到了有效数据的效验
- 5切换账号登录,效验登录的信息是否做到了有效数据的效验
- 6对于多个端登录都进行炒作时,确保数据库操作无误,且每个端可以及时看到数据的更新
- + - 运行(包括运行后的所有功能点)
- 1:APP安装完成是否可以正常打开软件
- 2:APP运行时是否可以加载图示,是否有引导程序
- 3:APP的速度是否可以让人接受,切换是否流畅
- 字符输入测试
- tooltip测试
- 链接测试操作按钮测试
- 程序运行权限测试
- 运行日志查看
- + - 离线
- 概述:离线是应用程序在本地的客户端会缓存一部分数据以程序下次调用
- 1对于一个程序,需要在登录过后,这时没有网络的情况下可以浏览本地数据
- 2无网络时,刷新获取新数据时,不能获取数据且给出友好提示
- 3切换到后台,再次切换到前台时,可以正常查看
- 离线后介入网络再次有更新时,需要从服务器获取新数据来更新客户端数据,且更新本地缓存信息
- 消息推送
- 1查看默认开关状态(严格根据需求定义开关)
- 2设置开关课自由 打开 或 关闭
- 3设置开关关闭时客户端接受不到消息推送
- 4设置开关打开状态下,手机消息可以接受到推送提醒,且可点击查看,点击后在消息栏消失
- 5与手机系统的权限中的消息推送组合测试
- 网络环境
- 1各种网络下软件的响应速度
- 2一般的测试环境是在公司的内网进行测试,到外网测试是否有异常
- 3网络不好活很差时提交数据是否失败(友好提示/anr)
- 4有网到无网在到有网 数据是否可以自动恢复,正常加载
- UI
测试
- 测试范围:所有感观可以接触到的
- 1:目标是确保用户通过界面能够正确,快速,有效的使用软件的各项功能
- 2:确保用户界面符合公司或者行业标准(包括用户友好性,人性化,易操作性测试)
- 测试点:
- 1:页面是否美观
- 2:文字是否正确
- 3:图片组合是否完美
- 4:菜单,对话框,窗口,控件布局
- 5:风格是否满足客户需求
- 兼容性测试
- 安全测试(功能上的)
- 异常测试
- 1:多个APP应用切换
- 2:app清空数据后强制退出是否可以正常运行
- 3:长时开机开启app,是否会有异常情况(如果是自动登录,是否会过期)
- 4:网络切换(wife—> 数据流量的提示)
- 安装
- 1:根据软件说明或用户需求验证APP各个功能的实现
- 2:兼容性测试
- 1:主要测试机多测功能点,次要测试机测基本功能覆盖主要测试用列即可 2:主要考虑;
- 兼容性分类:硬件兼容,软件兼容,不同浏览器的兼容(数据库的兼容,软硬件配合兼容),数据兼容
- 1:不同的操作系统兼容
- 2:软件版本本身能否向前先后兼容
- 3:软件能否与其他软件兼容
- 4:数据兼容 (数据能否共享,版本更新,第三方获取信息等)
- 5:网络兼容
- 5:不同同品牌,不同分辨率,不同屏幕尺寸
- 3:测试方法
- 云测
- 1:同样花钱
- 2:需要的手机可能没有。有的可能不需要
- 3:有问题无法及时沟通
- 4:随时传,随时测
- 手工
- 1:测试机一般租赁-手机采购周期长,使用率低
- 2:手机采购周期长,使用率低
- 3:不同设备上bug记录,截图,记载日志,太耗时
- 云测
- 4:兼容性作用:
- 1:进一步提高产品的质量
- 2:能使软件与尽可能多的其他软件‘和平共处’
- 3:尽可能的保证软件存在的价值(兼容性越高能用到的人群也就越多)
- 3:弱网测试(专项)
- 1:为什么要执行弱网测试
- 1:网络环境多样复杂
- 2:很多bug都是在不稳定的网络环境下出现的
- 3:移动特性:网络连接协议的不同,导致通信信号和速度也不同,影响应用的加载时间可用性和稳定性
- 2:什么样的网络属于弱网
- 1:低于2G;也可将3G华为弱网
- 3:如何进行弱网测试
- 1:手机设置——移动网络设置——网络类型选择
- 2:使用虚拟机模拟网络设置
- 3:使用fidderl来进行网络代理(侧重于3G一下的的网络)
- 4:弱网测试的目的
- 1:图片加载是否完整
- 2:加载时间过长是否报错(无响应)是否有提示
- 3:网络加载时间过长是否会崩溃
- fidder 简介(重在实操):
- 1:流行且使用的HTTP抓包工具
- 2:以web代理的形式工作的
- 3:使用的的代理地址为 127.0.0.1 端口8888
- 4:具体使用:
- APP:
- 如何连接手机:
- 保证手机和电脑都处于同一个网络
- 设置手机连接的wifi代理端口为fiddler的端口
- WIFI服务器配置成当前主机的ip地址
设置网络上下行延迟时间:rules——》customize rules 里设置(2G 上行500 下行400)
- 如何连接手机:
- PC端:
- 1.打开fiddler,默认配置,按F12直接开始抓包,或者在顶部file-> capture Traffic开始抓包(注意,在抓包之前需要确认右下角的状态是all processes)
- 2:file-> capture Traffic开始抓包(注意,在抓包之前需要确认右下角的状态是all processes)
- 3:运行程序
- 3:返回fiddler,按F12或file-> capture Traffic结束抓包
- 4:在右边框点击filters进行过滤,输入网址后点击actions运行 抓包结束
- APP:
- 1:为什么要执行弱网测试
- 4:稳定性测试(monkey)Android端专项
- 1:dos命令
- 1.MD——建立子目录
- 2.CD——改变当前目录
- 3. RD——删除子目录命令
- 4.DIR——显示磁盘目录
- 5. mkdir 创建目录
- 2:adb
- 1:如何连接手机
- 1、使用 abd shell 首先要配置环境变量将 sdk 的 platform-tools 目录配置进去(配置jdk/sdk)
- 第一种
使用USB线连接
- 1. 在手机上启用USB调试(电脑安装驱动)
- USB调试
- 允许位置
- 2. CMD窗口输入adb devices,此时可以看到自己的设备。
- PS:无法看到自己设备时,查看手机USB调试是否打开;
- 1. 在手机上启用USB调试(电脑安装驱动)
- 第二种
使用无线WiFi连接
- 修改代理端口
- 修改IP地址
- 2:adb命令简介:
- Android debug birdige 是andriod 下面的一个调试工具
- 3:adb常用命令
- 1:adb version 查看版本信息
- 2:adb devices 获取设备
- 3: adb shell 进入手机环境
- 4:adb install 某某.jdk 安装某jdk
- 5: adb uninstall 包名 卸载软件
- 6: pm list packages
列出所有安装的包名
- -s 系统自带包
- -3 认为安装包
- 7:adb pull 设备路径/本地路径 (把手机里的东西拿出来)
- 8:adb push 本地路径/设备路径 (从本地复制文件到设备)
- 9:adb shell top -m 5 (查看占用手机前五的应用)
- 10:adb shell top -n 1 刷星一次内存信息,原后返回
- 11:adb shell chmod设置文件权限
- 12:adb shell mkdir 新建文件目录
- 13:adb shell cat 查看文件内容
- 14:/proc/cpuinto 此文件存放硬件信息
- 15: /proc/meminto 此文件存放内存相关信息
- 1:如何连接手机
- 2:monkey
- 1原理:是Android中附带的一个工具。可以运行在模拟器或实体机设备(向系统发送伪随机的用户事件流)
- 2目的:1进行压力测试 2:开发人员可以结合monkey打印的日志和系统答应大日志发现出现的问题
- + - 3:menkey选线主要分为四大类
- 1:设置设备尝试的时间数量
- 2:约束选项如约束的只对单独的一个包进行测试
- 3:事件类型和频率
- 4:调试选线(一些参数)
- 常用参数:
- -p 指定包名
- -v 日志的详细程度(-v-v-v)
- -s send值
- - -throttle 毫秒 间隔时间
- - -ignore-security-exception 忽略安全异常
- - -ignore-timeouts 忽略超时
- - -ignore-crashes 忽略崩溃
- - -monitor-native-crashes 监视崩溃时的本地代码
- 打印系统日志:logcat
- adb logcat -v time > D:loncat.txt (这里的-V指的是打印形式)
- 关键字:
- 1:如果是ANR(超时)问题 , 则搜索“ANR ”关键词(ANR后加个空格,屏蔽掉anr.log文件的无效信息) 。 快速定位到关键事件信息 。
- 2:如果是ForceClosed(强制退出) 和其它异常退出信息,则搜索"Fatal"(致命的) 关键词, 快速定位到关键事件信息 。
- 注:anr 无响应 / fateal 前置关闭或程序异常输出 /
- 注:monkey开始的同时(两个cmd窗口)开启logcat(logcat主要记录程序的log信息,主要产生的影响)
- Android日志:traces
- 如何拿出:adb pull /data/anr/traces.txt D/log.txt(保存路径)
- 注:traces日志记录androi本身的日志(但发现logcat日志中出现anr或crash(闪退/强制退出)时提供traces日志)
- 1:dos命令
- 5:性能测试
- + - 关注的指标
- 1、内存
- 2、CPU
- 3、流量(专项)
- 4、耗电量(专项)
- 5、启动速度
- 6、滑动速度、界面切换速度
- 7、与服务器交互的网络速度
- 1:DDMS检查性能
- DDMS是什么:
- 全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。通过DDMS可以看到目标机器运行的进程,线路情况帮助开发和测试人员调试Andorra程序
- 全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。通过DDMS可以看到目标机器运行的进程,线路情况帮助开发和测试人员调试Andorra程序
- DDMS工作原理:
- DDMS将搭建起IDE与测试终端(Emulator或者connected device)的链接,他们应用各自独立的端口监听调试信息,DDMS可以实时监测到测试终端的连接情况.当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的;
- DDMS将搭建起IDE与测试终端(Emulator或者connected device)的链接,他们应用各自独立的端口监听调试信息,DDMS可以实时监测到测试终端的连接情况.当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的;
- 1:启动方法:SDK目录下took是目录 DDMS
- 2:查看内存信息:
- 第一步:选中要监测的进程
- 第二步:点击左上角的show heap updates
- 第三步:右边的VM Heap界面中点击Cause GC,我理解就是手动执行一次GC操作
- 第四步:查看data object那一行的Total Size值,这个值代表的意思就是当前进程中Java对象所占用的内存总量,通过这个值来判断是否内存泄露
- 判断依据:
- 1.不断在手机上执行一个可能存在内存泄露的功能,如果执行每一次Total Size的数值都在不断的增加,则可以判断该功能模块可能存在内存泄露
- 2.但是如果反复的执行被测试的功能,该数值在一个范围内来回的变动(而不是一直的变大),则可以判断该功能正常,不存在内存泄露的问题
- 3:log日志产生的异常情况(存放于data/log)
- 1,程序异常退出,uncausedexception (Fatal)
- 2,程序强制关闭,ForceClosed (简称FC) (Fatal
- 3,程序无响应,ApplicationNo Response(简称ANR)
- anr出现的情况
- A 界面操作按钮的点击等待响应时间超过5秒
- B HandleMessage回调函数执行超过10秒,BroadcasterReciver里的onRecive()方法处理超过10秒
- C 手动生成。
- 4:log每条信息都包含五个部分
- 1:time: 表示执行的时间,这个信息对于学习生命周期,分析程序运行的先后顺序特别有用
- 2:标题空白的列: 表示的log种类(信息种类)
- 3:pid 表示程序运行时的进程号
- 4:tag 标签,通常表示系统中的一些进程名,比如我们运行helloworld程序的话,就会看到activitymanager在运行。
- 5:Message 表示进程运行时的一些具体信息,比如我们运行helloworld程序的话,就会看到starting activity...helloWorld的字样
5:log的种类形式
- android.util.Log常用的方法有以下六个:Log.v() Log.d() Log.i() Log.w() ,
Log.e()以及Log.a() (android 4.0新增加的)。根据首字母对应
VERBOSE,DEBUG,INFO,WARN,ERROR,Assert。
1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
【软件测试 APP测试丶】6 Log.a为4.0新增加的。 启动Eclipse,打开DDMS大家可以在LogCat里看见(前提是android 4.0的ADT)5
- DDMS是什么:
- 2:GT
监测性能
- GT随身调:
- 是APP的随身调试平台,他是直接安装运行在手机上的‘集成测试环境‘
- GT功能
- 1:基础性能调试
- 2:logcat日志查看与保存
- 3:网络数据包抓包支持Android和android5
- 4:手机电量测试电流测试,应用耗电评估
- 5:wakedock控制
- 6:快捷的网络切换
- 7:流畅度调试插件
- 8:支持广播的方式获取被测性能指标,主要用来支持自动化
- GT内存指标:
- PSS:实际使用的物理内存的物理内存;app应用本身占用的内存
- CPU:处理器
- NET:APP的流量指标
- FPS:每秒传输的帧数
- 使用介绍:
- 1:安装GT.apk到手机
- 2:启动gt,进入主界面
- GT随身调:
- + - 关注的指标
- 6:接口测试
- 接口测试概念:
- 接口:实体把自己提供诶外界的一种抽象化物,用以内部系统操作分离出外部沟通方法,使其能够被内部修改而不影响外界其他实体交互的方式。
- 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
- 测试的价值:
- 1:只需前后端定义好接口就可更早的介入测试,可降低成本,提高效率。
- 2:前后端架构是分离的,前段进行限制已经不能满足安全要求,需要后端同样进行限制在,这种情况下就需要从接口层面进行验证
- 3:接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。
- 测试的分类:
- 1:系统与系统之间的调用
- 2:一个系统的上层对下层的调用
- 3:服务之间 的调用如添加一条数据,会先调用数据查询的服务,查询该数据是否已经存在。
- 接口文档:
- 1:接口名称
- 2; :接口地址
- 3:支持格式(xml/ison)
- 4:请求方式(get/post)
- 5:请求参数(必填/选填)
- 6:返回参数(返回码/返回信息)
- 测试流程:
- 需求评审(需求来源于接口文档)
- 需求分析
- 几口用例设计
- 执行测试用例
- bug的定位于追踪
- 注:实际工作中不走流程
- 接口用例设计:
- 正常场景
- 功能是否按照接口文档实现
- 异常场景(能懂得只有参数)
- 参数为空
- 参数多填
- 参数少填
- 参数类型错误
- 注:异常场景下是否有正确的处理逻辑和响应提示
- 具体用例设计
- 必填参数不传参数
- 1:必填参数全部为空
- 2:必填参数部分为空
- 必填参数传参数
- 1:必填参数都正确
- 2:必填参数类型错误
- 正向
- 1:(正向用例)覆盖所有参数
- 2:(正向用例)覆盖所有必填参数
- 3:任意组合可选参数
- 反向
- 1:必填参数范围错误(超过边界)
- 2:必填基础上少传一个参数
- 3:多传一个参数(讨论)
- 4:必填参数数据类型错误,数值错误
- 5:与业务逻辑相关的,用户身份为空或者错误
- 6:字段的唯一性效验(如重复注册),入数据字段不能重复,发送一次请求查看第二次返回结果
- 必填参数不传参数
- 正常场景
- 接口测试概念:
- 7:安全性测试 好吧!我也不懂- -
- 8:H5测试(嵌入的网页)
推荐阅读
- 软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放
- 04.Android之动画问题
- 4个对Go语言批评(优点和缺点)
- Python日志记录(深入的教程)
- 什么是Kubernetes(容器化和部署指南)
- 如何建立一个有效的初始部署管道
- 介绍使用Nameko的Python微服务
- Python多线程和多处理教程
- 使用ASP.NET Core构建ASP.NET Web API