App测试方向

一.     App端性能测试


(1.      App使用的时候觉得非常卡顿不流畅


(2.      查询一个信息或者执行一个操作,服务端需要好几秒才有响应结果


(3.      当应用在使用高峰,比如促销活动时,频繁出错


(4.      App使用一段时间后内存占用过高,甚至出现闪退


(5.      访问应用的界面打开非常慢)


a)    Android


               i.        JAVA内存管理(JVM)


1.    堆内存垃圾回收机制


a)    静态变量


b)    栈上指向的堆内存对象


c)    寄存器


d)    其他


2.    JAVA的几种引用


a)    强引用


b)    弱引用


c)    软引用


d)    其他


              ii.        Android内存占用分析实践


1.    Heap dump抓取


2.    Heap dump分析


a)    大对象常驻分析


b)    Ios


               i.        内存


1.    IOS的内存管理


2.    ARC模式


3.    内存泄漏测试的准备工作


a)    项目工程源码


b)    Instrument工具


c)    开发调试证书


d)    苹果设备


4.    测试步骤


5.    测试方案分析


a)    最常见的场景就是类成员变量在dealloc中未被释放


b)    方法中的局部变量,申明了增加计数器,但直到方法结束,都没有释放操作


c)    释放操作无效


d)    使用self.方法赋值,同时使用autorelease方法以为释放正常


              ii.        内嵌组件


1.    APP内嵌Web组件的性能分析


a)    Android WebView性能分析


                                         i.        白盒测试


1.    setWebChromeClient-主要可以提供通信相关的通知


2.    setWebViewClient-主要可以提供UI,JS相关的通知


b)    IOS WebView性能分析


                                         i.        Webview类的加载时间


                                        ii.        WebView的请求资源性能分析


                                       iii.        WebView的渲染速度


c)     


二.     兼容性测试


(1.    Cash的问题


(2.    设备兼容性


(3.    流量使用过多


(4.    导致用户电量消耗过快


(5.        不同网络下不稳定,卡死或者白屏)


a)    兼容性测试的准备和手工测试


               i.        操作系统版本


              ii.        屏幕分辨率


             iii.        不同厂家的ROM


            iv.        网络类型


b)    基于UI自动化脚本的云测试方案


               i.        脚本的编写和本地调试


              ii.        上传到云平台运行


             iii.        查看测试报告


 


三.      流量测试


a)    Android App特有的流量测试方法


               i.        基于系统自带的统计功能


              ii.        通过系统API来获取流量数据


             iii.        App内部通过代码统计接口数据量


b)    IOS App特有的流量测试方法


               i.        通过Instruments自带的Network来查看网络流量


              ii.        代码方式实时统计流量


c)    通用的流量测试方法


               i.        手机上抓包


              ii.        基于WIFI代理的方式获取流量数据


             iii.        自动化的流量统计方案


1.    按域名分组


2.    按类型分组(图片,接口等)


3.    按缓存与否分组


4.    过滤域名


5.    统计上下行流量大小


6.    统计请求个数


d)    常见的流量节省方法


               i.        数据的压缩


              ii.        不同数据格式的采用


             iii.        控制访问的频次


            iv.        只获取必要的数据


             v.        缓存


            vi.        针对不同网络类型设计不同的访问策略


四.      电量测试


a)    Android电量测试方法


               i.        基于硬件设备的方法


              ii.        基于GSam Battery Monutor Pro查看电量消耗


b)    IOS电量测试方法


               i.        Energy工具


1.    Xcode中真机测试,设置debug下的开发者证书和provision文件,修改scheme


2.    修改Profile的编译选项为debug,点击关闭


3.    点击Profile,编译安装项目工程到设备


4.    等待安装完成后,弹出Instrument对话框,选择Energy Diagnostics


5.    点击录制按钮,启动App开始测试


6.    电量消耗分析


a)    Energy Usage


b)    CPU Activity


c)    Network Activity


d)    Display Brightness


e)    Sleep/wake


f)     Bluetooth


g)    Wi-Fi


h)    GPS


五.      弱网络测试


a)    借助手机自带的网络状况模拟工具


               i.        IOS系统的开发者(Developer)


b)    基于代理的弱网络的模拟


               i.        Windows下的Network Delay Simulater


              ii.        Mac下的NetWork Link Conditioner


六.      稳定性测试


a)    基于Monkey的稳定性测试


b)    Android的ANR


c)    基于模糊测试


七.      安全测试


a)    安装包


               i.        能否反编译代码


              ii.        安装包是否签名


             iii.        完整性校验


            iv.        权限设置检查


b)    敏感信息


               i.        数据库是否存储敏感信息


              ii.        日志中是否存在敏感信息


             iii.        配置文件是否存在敏感信息


c)    软键盘劫持


d)    账户安全


               i.        密码是否文明存储在后台数据库


              ii.        密码传输是否加密


             iii.        账户锁定策略


            iv.        同时会话


             v.        注销机制


e)    数据通讯安全


               i.        关键数据是否散列或加密


              ii.        关键连接是否使用安全通信,例如HTTPS


             iii.        是否对数字证书合法性进行验证


            iv.        是否校验数据合法性


f)     组件安全测试


Drozer工具(https://www.mwrinfosecurity.com/products/drozer)


g)    服务端接口测试


               i.        SQL注入


              ii.        XSS跨站脚本攻击


             iii.        CSRF跨站请求伪造


            iv.        越权


八.      环境测试


a)    干扰


               i.        收到电话


              ii.        收到短信


             iii.        收到通知栏消息


            iv.        无电提示框弹出


             v.        第三方安全软件警告框弹出


b)    权限


c)    边界情况


               i.        可用存储空间过少


              ii.        没有SD卡/双SD卡


             iii.        飞行模式


            iv.        系统时间有限


             v.        第三方依赖


d)    定位测试


               i.        白盒测试


              ii.        模拟器模拟


             iii.        自定义位置提供器


九.     代码测试[FindBugs 和 Lint工具]


(直接定位到问题代码


注意:


1.   静态扫描工具通常是编程语言强相关的,选取适合项目所用预压的扫描工具


2.   针对主流的编程语言,需要做评估


3.   排除误报


4.   持续进行,借助静态扫描的结果提升代码质量)


1.       FindBugs


a)    插件方式-需要IDE只是,界面友好,使用方便


b)    UI界面方式-无需IDE依赖,需要一些手动配置


c)    命令行方式-适用于持续集成


d)    过滤器


e)    代码屏蔽


a)    静态(IOS)


               i.        IOS Analyze静态分析


              ii.        内存泄漏分析


             iii.        未遵循框架规范编码


            iv.        不合适的类型返回


             v.        API误用


            vi.        逻辑错误


           vii.        空指针引用


          viii.         


b)    IOS冗余扫描脚本


c)    覆盖率


               i.        Android代码覆盖率技术方案


1.    使用现有的代码覆盖率框架,例如:emma和jacoco


2.    基于asm从头开始编写自己的代码覆盖率框架


测试步骤:


1.       生成插桩的App的apk包


2.       进行UI自动化测试或者手动测试


3.       在Android手机上生成代码覆盖率原始数据文件


4.       将原始数据文件导出到计算机进行处理并生成最终的报告


              ii.        IOS代码覆盖率技术方案


1.    IOS覆盖率


a)    Gcno文件:包含基本的块信息,以及代码行与块的映射文件


b)    Gcda文件:包含代码行执行的情况.


d)    接口mock


               i.        常见的接口异常模拟方法


1.    直接修改后台Server返回想要的数据


2.    直接通过测试Server返回想要的数据


3.    在数据返回的途中修改


              ii.        使用Finddler 作为MockServer


             iii.        基于FiddlerCore二次开发的Mock工具


e)    AOP

你可能感兴趣的:(App测试方向)