测试启动条件
1.需求明确
2.有详细的测试文档(用例和计划已经生成)
3.测试环境已搭建完毕
4.PM、开发、产品人员沟通一致什么时间可以切入测试,并以邮件和口头方式通知测试人员开始测试
5.页面没有完成,有些重点接口开发完成,测试人员可以开始对接口进行性能测试
6.开发已经完成
7.不同厂家、型号和不同系统(如android、iOS、黑莓、塞班)的手机已经到位,可以进行手机测试
性能测试:操作核心的性能指标,cpu/内存、响应时长、电量和电流
稳定性测试:选择某些场景做持续反复操作,Monkey稳定性操作,持续多个小时
流畅度测试:列表滑动、返回进入、快速点击
兼容性测试:
通用软件:例如输入法
安全软件:例如各种管家
竞品软件、同类软件是否出现冲突
android流畅度测试:
测试方法一: 系统自带的开发者模式,进入开发者选项,可以看到有"GPU呈现模式分析"的选项
1、勾选"GPU显示配置文件",重启应用,在应用的页面上滑动,adb shell dumpsys gfxinfo 包名 > filename.txt
2、打开生成的filename.txt,找到Profile data in ms这部分数据
3、为了看得更直观,把数据放到excel中,以图表的形式进行查看
4、正常情况下帧率应该在16ms左右,如果1秒60帧的话,而且Execute时间太长是需要优化的
5、Draw:创建显示列表的时间开销
Process:执行显示列表中绘制指令的时间,UI视窗中的view数量很多,需要执行的绘画命令就越多
Execute:将一帧图像交给合成器的时间,这部分占用的时间通常比较少
测试方法二: FPS Meter测试安卓帧数
FPS(Frame Per Second),每秒传输帧数,更确切的解释是每秒钟填充图像的帧数(帧/秒),FPS Meter是一款非常实用的小软件,能够用数字实时显示安卓界面的每秒帧数,非常直观,FPS Meter还可以显示最大帧数、最小帧数以及平均帧数,用来评价安卓流畅度极具价值,由于涉及到了系统功能,所以FPS Meter需要root,使用FPS Meter测量帧数需要在开发者选项中停用HW叠加层,才会比较准确,FPS Meter可以测试界面帧数,不过某些手机如果界面静止,帧数会为0,用FPS Meter测试某部安卓机游戏性能多强也是个很好的选择,当然FPS Meter也并非十全十美,由于属于第三方app,可能会有兼容性问题,多数情况下FPS Meter是值得信任的
emmagee用于监控单个app的cpu、内存、流量、启动耗时、电量、电流等性能状态的变化,且用户可以自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计文件
弱网所谓弱网环境,简单来说就是网络质量较差,导致丢包和延迟等现象
Android ANR是Application Not Responding,应用程序无响应对话框
多少兆赫就是cpu的主频,cpu时间即反映cpu全速工作时完成该进程所花费的时间,cpu时间越短越好,说明cpu性能好
时间片即cpu分配给各个程序的时间,每个进程被分配一个时间段,用户cpu时间:用户进程获得cpu资源以后,在用户态执行的时间,系统cpu时间:用户进程获得cpu资源以后,在内核态执行的时间
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去
安卓多架构包括x86、ARM、ARM64和ARM v7-A(现有架构),x86性能比较好,ARM比较省电,cpu必须是英特尔的才可以实现安卓x86模拟器,通过adb命令将apk装到虚拟设备里
android studio->Tools->Android->AVDManager->Create Virtual Device,在虚拟设备配置里choose a device definition->Next->x86Images,选择一行点击Next,在Verify configuration页面点击Finish,在进入的页面可以打开模拟器
android虚拟机不允许单个程序中的bitmap占用超过8m的内存,一旦超过了就会报错,而报的错正是bitmap size exceeds VM budget(bitmap占用的内存大小超过了虚拟机的允许值),android为不同类型的进程分配了不同的内存使用上限,如果程序在运行过程中出现了内存泄漏,就会被kill掉,这使得仅仅自己的进程被kill掉,不会影响其他进程,android的每个应用程序都会使用一个专有的Dalvik虚拟机实例来运行,它是由Zygote服务进程孵化出来的,也就是说每个应用程序都是在属于自己的进程中进行的
测试流程:
需求分析--测试计划--测试方案--测试用例--环境搭建--测试执行--缺陷跟踪--自动化测试--性能测试--安全测试--渗透测试
开发环境 测试环境 预发布环境 正式环境
软件由程序+文档+数据组成
软件的生命周期:
需求分析->概要设计->详细设计->开发程序->软件测试->项目上线->项目运维->停止
软件测试的生命周期:
测试计划->测试设计->测试开发->测试执行->测试评估
V模型:
需求分析->概要设计->详细设计->编码实现->单元测试->集成测试->系统测试->验收测试
单元测试:主核心模块,进行重点测试--->白盒测试
集成测试:既要检查功能的正确输入输出也要关心其中的内部结构--->灰盒测试
系统测试:软件形状已经基本成型,是以黑盒测试为主导
验收测试:黑盒测试为主导,验收测试是在产品正式上线之前整体的验收进行的测试
验收测试分为两种情况:alpha测试和beta测试
alpha测试是面向公司内部,不对外进行公开,内测
beta测试面向于用户群体,对外开放测试,使用广大的用户群众去进行测试,公测
开发的立场:验证需求全部被实现
测试的立场:验证需求都被正确的实现
JIRA定位每一位开发人员的工作效率
黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果,它只检查程序呈现给用户的功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试
白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
灰盒测试介于黑盒测试与白盒测试之间可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒测试的方法
冒烟测试是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性,引入到软件测试中,就是指测试小组在正规测试一个新版本之前,先投入较少的人力和时间验证一个软件的主要功能,如果主要功能都没有实现,则打回开发组重新开发,这样做的好处是可以节省大量的时间成本和人力成本
预生产环境和生产环境的区别:
数据库的数据不一样,域名解析不一样
敏捷测试就是按照需求测试,不再关注测试流程,就是哪里需要测试你就去测试,重点关注的是新开发的功能模块