移动端安全测试 移动端安全测试方法
怎么用monkey工具给移动端APP做测试?
一、
移动端安全测试 移动端安全测试方法
移动端安全测试 移动端安全测试方法
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
基本配置选项,如设置尝试的数量
运行约束选项,如设置只对单独的一个包进行测试
类型和频率
调试选项
在Monkey运行的时候,它生成,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理(自动停止):
如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的作,并对其进行阻止。
如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的
二、测试准备
Monkey test前必须先进入android设备的adb shell(Android SDK环境配置不在此描述,网上有很多)步骤如下:
1. 开始—>运行—>cmd
2. u连接手机,输入 adb shell 命令,待出现 即可输入以下内容
3. 进入手机后,输入相应的monkey命令即可测试
三、基本命令格式
adb shell monkey –p 程序包 –v 测试次数
比如“adb shell monkey –p com.htc.Weather –v 20000”意思是对com.htc.Weather 这个程序包单独进行一次20000次的monkey测试
其中程序包名称可以在串口终端这句命令获得:ls data/data 显示所有程序包
四、测试Log获取
用Monkey test测试,为了方便分析问题,可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log(记得用终端保存Log文本)例如:
adb shell monkey –p com.htc.Weather –v 20000|logcat -v time
但是这个组合在monkey测试完成后,logcat仍然在执行,测试时需要注意。
如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt,步骤如下:
1. 测试版本需要具备root权限
2. 进入data/anr目录下面
3. 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可
移动端app测试流程与方法?
1、首先是测试资源确认及准备
(1)产品需求文档、产品原型图、接口说明文档以及设计说明文档等应齐全;
(2)测试设备及工具的准备:IOS和andriod不同版本的真机,以及相关测试工具的准备。
2、测试用例的设计与评审
(1)根据产品需求文档、产品原型图等文档,设计客户端的一般功能测试用例;
(2)测试用例评审、修改与完善,评审通过后着手进入正式测试阶段。
3、UI测试
(1)确保手头的原型图与效果图为当前最新版本,符合产品及用户要求;
(2)测试过程中一切以效果图为准,若有用户体验方面的建议,可以先以邮件的形式与产品确认,确认通过后,可以正式向开发提出用户体验方面的问题;
(3)由于测试环境中的数据为模拟数据,测试时必须预先考虑到正式环境中可能出现的数据类型。
4、功能测试
(1)功能测试时主要依据编写的功能测试用例进行软件功能的遍历;
(2)涉及的测试主要包括基本功能测试,安装、卸载、运行测试,异常处理(包括网络突然断开或者网速过慢、机器内存不足等异常情况的处理)测试。
5、中断测试
(1)软件运行过程中接电话、收短信、锁屏、闹铃、充电,收到通知提醒后再使用软件,软件应仍可正常运行使用;
(2)软件运行时,由前台切换到后台,再切回前台后,应仍可正常运行使用。
6、兼容性及适配测试
(1)硬件的适配:不同手机厂商、硬件性能,不同屏幕大小的适配;
(2)OS版本的兼容:IOS6-9;Andriod3以上等,如果用了一些新的API在老的系统上不支持会导致crash;
(3)不同分辨率屏幕的适配:移动设备的分辨率多种多样,如果app没有做比较合适的处理就可能会显示不好,甚至影响功能的作。
(4)兼容性测试必须在一定数量的真机上进行,由于真机类型过多,尤其Android在做兼容性测试时,可以选取典型的几种运用较多的真机,进行兼容性测试;
(5)另外可以借助开源测试testin云测,进行更多机型的兼容性测试,testin云测提供基本的运行情况和一些截图,以及简单的测试报告,有助于扩大测试的范围。
7、性能测试
(1)客户端性能测试重点关注:安装卸载时间、启动时间、页面加载时间、主要功能占用的CPU、内存、流量、耗电量等,以及与同类产品相比较是否有优势;
(2)其中页面加载时间可以利用Android调试工具DDMS获取到,在DDMS里面搜索Displayed关键字就可以看到页面加载时间;
(3)运行过程中主要功能占用的CPU、内存、流量等可以借助开源工具emmagee(适用于Android)获取到;
(4)至于端的性能,主要利用接口对施加压力,重点关注响应时间、吞吐量、并发数、事物通过率等,可以视同工具loadrunner、jmeter进行测试。
8、稳定性测试
(1)安卓APP的稳定性常常使用monkey命令进行测试,通过随机流模拟人的作,对检查程序的内存溢出、空指针有很大的作用。
(2)Monkey主要用来检测系统ANR及Crash等问题
9、测试分析及测试报告输出
以上各项测试结束后,应该形成完整的分析及报告文档(包括buglist、性能及稳定性结果分析,版本上线风险分析等内容),输出给各项相关人员
移动端兼容性测试怎么做?
什么是兼容性测试
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。–【百度百科】
为什么要做兼容性测试
目前碎片化十分,尤其是安卓设备。安卓设备碎片化、品牌碎片化,大家熟知的安卓品牌都有好多家,每家可能还有定制的系统,都给我们适配带来了不小的挑战。除了上面的碎片化,当然还有系统版本碎片化,屏幕碎片化等,为了给用户更好的用户体验,做APP的兼容性测试,还是非常有必要的。
兼容性影响因素
用户
硬件
软件
技术
网络
影响因素大致可以分为以上几类,我们对所测APP做兼容性测试时,可以从以上方面去考虑。
1、用户
我们需要依据自身APP用户群体的特征以及使用习惯,去做相应的兼容。比如用户群体如果大多是老人的话,可以考虑大字体的适配。比如针对旅游人士,可以考虑过程中网络的状况。如果拥有大量海外用户,可以考虑多种、多语言、多度量、时区问题。
2、硬件
设备类型(手机、平板、穿戴式设备)
生产商(安卓手机存在每个厂商的定制化异)
显示屏(屏幕大小、分辨率)
特殊硬件功能(NFC、蓝牙、相机、定位功能等)
3、软件
作系统
浏览器内核
伴生应用
4、技术
RN、H5、native
开发语言(oc、swift)
5、网络
2G、3G、4G、wifi
兼容各种网络下APP的表现
iOS APP兼容性
屏幕分辨率
屏幕尺寸(含异形)
作系统版本
Xcode版本
开发语言
第三方库或SDK
安装、升级
Android APP兼容性
屏幕分辨率
屏幕尺寸(含异形)
Android版本
系统版本
处理器架构(arm、x86)
开发语言(Ja、koltin、混合)
第三方库或SDK
安装、升级
H5兼容性
CSS样式兼容(一些属性的浏览器标示前缀没有添加,导致默认浏览器不认识这个属性,所以样式错乱。有些布局不灵活,样式边界处理不好,导致宽窄屏显示异常)
JS兼容(主要是浏览器或者系统版本,新的js api不支持,但是没有做降级处理)
第三方库或SDK
框架(react、vue……)
缓存(sessionstorage、localstorage)
哪些场景需要做兼容性验证
UI显示
多次快速点击
拉起虚拟键盘挡住输入区
虚拟物理按键收起与显示
多个输入框来回切换
控件焦点热区文体
前后台、多个应用切换
指纹识别和faceid等
框架升级
网络
新老版本兼容
第三方依赖库或者SDK升级
前后端版本兼容
如何做兼容性测试
主要分为内部和外部。内部由测试人员自己覆盖主要机型。机型选取的原则是,根据自己APP用户的机型,选取至少top10进行人工兼容性测试。内部还可以进行的就是UI自动化测试。外部可以借助云测平台,比如testin、testbird等。
app测试和web测试的区别, web测试和app测试的区别
单纯从功能测试的层面上来讲的话,APP 测试、web 测试 在流程和功能测试上是没有区别的。
根据两者载体不一样,则区别如下:
系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了端,客户端就会同步会更新。
app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
性能方面
web项目 需监测 响应时间、CPU、Memory
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等
兼容方面
web项目:
1. 浏览器(火狐、谷歌、IE等)
2. 作系统(Windows7、Windows10、Linux等)
app项目:
1. 设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
2. 手机设备可根据 手机型号、分辨率不同
相对于 Wed 项目,APP有专项测试
1. 干扰测试:中断,来电,短信,关机,重启等
2. 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
3. 安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑 卸载后是否删除app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
4. 界面作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
5. 安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
6. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
7. 权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
测试工具方面
自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium
性能测试工具:APP 一般使用 JMeter; Web 一般使用 LR、JMeter
一个是pc端测试 一个是移动端测试
其实移动web是app和传统的web并没有本质的区别。
但是,同一个页面不可能被桌面浏览器和移动浏览器同时浏览可以为移动web提供一个系统自适应结构,这个结构可以为浏览器提供特定的输出.
而且可以将呈现逻辑细分为较小的部分,这样在显示区域和输入设备硬件都有限的情况下更好的工作。
一个是pc端测试 一个是移动端测试
移动测试和Web测试有什么区别
单纯从功能测试的层面上来讲的话,APP 测试、web 测试 在流程和功能测试上是没有区别的。
根据两者载体不一样,则区别如下:
系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了端,客户端就会同步会更新。
app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
性能方面
web项目 需监测 响应时间、CPU、Memory
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等
兼容方面
(1)web项目:
1. 浏览器(火狐、谷歌、IE等)
2. 作系统(Windows7、Windows10、Linux等)
(2)app项目:
1. 设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
2. 手机设备可根据 手机型号、分辨率不同
相对于 Wed 项目,APP有专项测试
1. 干扰测试:中断,来电,短信,关机,重启等
2. 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
3. 安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑 卸载后是否删除app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
4. 界面作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
5. 安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
6. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
7. 权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
测试工具方面
自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium
性能测试工具:APP 一般使用 JMeter; Web 一般使用 LR、JMeter
如何在 PC 机上测试移动端App
建议使用模拟器,比如夜神安卓模拟器,让你可以在电脑上安装Android应用。但如果你是开发者,还是建议使用真机进行测试,用手机连接USB,打开开发者模式里的USB调试开关即可。