APP在运行的时候,有海量的文字、图片、视频等内容传输,全部存在本地既不现实、也不灵活。因此会大量的使用网络连接来实现APP与云端服务器的数据通信,所以网络数据传输的安全性,往往成为移动app安全最关键的一个环节。
如果没有对这方面进行安全防护,黑灰产业就可以通过安全薄弱的环节,直接制作出协议工具,脱离app本身进行业务操作。
所以从整个过程来看,可以从通信安全和数据安全两个方面来进行安全性研究和测试。
目前市面上有一部分APP与服务器的交互采用的是HTTP协议,如果没有采取额外的措施,那么用户数据、交互数据就都是以明文的方式在网络中进行传输,这显然是极其“不安全”的。
一些有安全意识的APP虽然采用了HTTPS与服务器进行通讯,但是在实现过程中存在漏洞,导致通讯链路仍然存在较大的可能性被监听、解密。例如未做安全处理的HTTPS通讯连接会存在中间人攻击的安全性风险。
(TLS)安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
具体的技术说明和细节在网上有很多介绍,这里就不复制、粘贴了。如果没有采用比较安全的协议进行app和服务器的通信,那么网络上传输的数据就会被其他拦截,进而泄漏用户的信息以及公司的数据信息。
采用安全传输协议后,虽然网络上传输的数据仍然可能被拦截下来,但拦截者此时是没有办法解密和还原经过协议加密处理过的数据。
这里指HTTPS的单向或双向验证。
所谓单向验证,就是在HTTPS通信中,客户端验证服务端的证书;双向验证就是客户端和服务端的证书都需要对方验证。有了证书校验,可以在一定程度上预防中间人窃听。
通讯安全的一些措施可以保证客户端到服务端传输过程中的链路安全,但是却不能保证传输中数据的安全。
以下图为例,虽然协议采取了TLS安全协议,但是攻击者可以通过中间人攻击的方式捕获通信数据,获取明文信息。
因此,为了保护数据安全,有必要使用适当的加密方式。例如重要的注册登录接口,就应该使用RSA进行加密,攻击者即便拿到了客户端的密钥或公钥的一种,也无法进行数据解密。其他非核心的接口,可以用对成加密或其他算法组合而成的加密方式。
在测试工作中的抓包这一项活动,其实就包含了中间人攻击。即便是HTTPS协议,如果缺少安全意识和防护措施,也能造成数据信息的泄漏。
HTTP会话劫持是对HTTP通信进行的一种跟踪行为。HTTP不会对客户端的请求或者服务的返回数据进行加密处理,最多只是对数据本身进行一定程度的加密,其中明文数据更容易遭到篡改和重放攻击。
在客户端和服务端的通信中,如果客户端没有对服务端的证书进行校验,攻击者就能在“中间”分别和客户端、服务端建立两个独立的链接并交换数据。例如Charles这个专业的抓包软件,把证书从软件中导出并安装到设备上,就可抓去HTTPS协议的网络通信了。
检查客户端网络连接是否使用了HTPPS协议
检查客户端和服务端是否进行了证书校验。
2.1、SSL-pinning存在被绕过分风险
2.2、风险检查:客户端本地证书容易遭到窃取
3.1、检查传输的数据本身是否被加密。
3.2、加密方式是否过于简单易破。
客户端是否包含一定程度的防抓包策略,例如代理检测技术等等。
app主要核ui与实际设计的效果图是否一致;交互方面的问题建议,可以先与产品经理确认,确认通过后,才开始让开发实施更改或优化
根据软件说明或用户需求验证App的各个功能实现,实际测试过程一般都是根据功能测试用例来执行。测试覆盖率基本上都是有测试用例主导,也就是说在功能测试部分,是检验测试用例是否有效以及完整的,也就导致另外一个问题,测试用例怎么写的问题。
模拟用户真实使用app是会遇到的中断情况进行测试.如: 网络的断网, 切换网络, 断电,来电话/短信,听音乐,切换到其他app, 打开其他app 的通知等
新旧版本的在功能,逻辑层面的兼容测试, 同一个app 在不同系统版本运行,以及不同机型之间的适配测试兼容测试:接口的兼容性测试能够保证大部分的功能完善;app在不同系统版本上保证运行适配性: 屏幕,系统版本等(系统位数一定要考虑)该部分通过第三方的云平台进行
可测试的方面- 安装和启动时间- CPU的占用- 内存的占用- 流量的耗用- 电量的耗用- 后端,测试App中的各类操作是否满足用户响应时间要求,主要是测试点在网速方面,2g,3g,wifi, 4g一定要覆盖到- 后端 有网络并发
在各种边界压力情况下(如电池、存储、网速等),验证App是否能正确响应
反复/长期操作下,系统资源是否占用异常;Android 可是使用adb命令
压力测试主要集中在后端,前端的压力测试目前测的较少
App安全测试大概划分为以下几类:
从数据的本地存储到数据的传输、处理以及远程访问等各个环节,基于相应的安全标准/行业标准评估App的安全特性;
借鉴在Web App和网络安全测试的一些成功经验在智能终端App测试中进行裁减或适配;
检测App的用户授权级别,数据泄漏,非法授权访问等;
对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测,以期发现潜在的安全问题;
基于各种通信协议或相应的行业安全标准检视App是否满足相应的要求。
这个简单的说就是站在用户的角度上进行使用app,学习成本低,易上手等,可以进行用户盲测,根据用户反馈的意见进行修改。测试人员可以通过与其他竞争品进行对比, 或者根据较大厂商app的交互习惯进行比较。
一般这部分建议使用自动化测试, 如果没有自动化测试,可以根据以下几方面进行测试:
线上测试是产品上线之后一定要完成的,这部分可以根据场景化进行回归测试,其中网络环境要全部覆盖一遍
测试有几下几类:
一,非功能测试
二,功能测试
三,客户端性能测试
四,兼容性测试
五,服务器性能测试
六,安全性测试
手机APP软件测试点详解:
功能测试:手机软件的基本功能。倒不一定完全由测试人员来完全执行,但却是所有测试中最重要的,需要测试人员做很好的测试策略和职责划分。
稳定性测试:大多数手机应用是需要保证能够稳定运行一定时间的(尤其是对于一些记事类应用),而且在应用的运行状态发生切换后需要继续保持当前的状态,不出现闪退。
性能测试:这部分分为两个方面,一部分是后台服务的性能测试(API的响应时间和响应报文大小),一部分是应用自身的性能情况(占用CPU、内存、I/O、电量情况,以及页面到页面之间的切换速度,如果是游戏或动画,还要保证能够在一定的帧率以上)。
安全测试:关键的机密数据连接有没有走加密连接;本地数据库有没有做加密处理,是否会被其他恶意应用读取;后台服务的接口是否安全,会不会受SQL注入的影响;应用有没有做混淆,会不会被逆向以及会不会在渠道方被修改重新签名挂马;敏感数据是否存在了SD Card上等等。
APP测试工具大全(建议收藏!!!)
一、APP自动化测试工具
二、APP稳定性测试工具
三、APP性能测试工具
四、APP弱网测试抓包工具
五、APP兼容性测试工具
六、APP安全测试工具
测试一个App具体包括哪些方面?以及每个方面的关键点都有哪些呢?
# 非功能测试
app测试的一个重要方面是app的非功能需求。移动app在推出市场或进行进一步开发前,测试人员有一定的职责做该类需求的跟踪工作。
早期开发阶段要进行的第一个测试应该是实用性测试。通常是由alpha用户或同事进行的。走进一家咖啡馆或餐厅,问问里面的人他们的app使用情况。让他们看看现阶段开发的第一个版本并收集反馈,看看用户是否能很好地使用新功能,以便得出第一印象。
# 功能测试
每项开发的新功能都需要进行测试。app测试中功能测试是一个重要方面。测试人员应该要进行手动测试和后期的自动化测试维护。刚开始测试时,测试员必须把app当作"黑盒"一样进行手动测试,看看提供的功能是否正确并如设计的一样正常运作。除了经典软件测试,像点击按钮、提交订单看看会发生什么,测试员还必须执行更多功能的app测试。
除了整个手动测试过程,测试自动化对移动app也很重要。每个代码变化或新功能都可能影响现存功能及它们的状态。通常手动回归测试时间不够,所以测试员不得不找一个工具去进行自动化回归测试。现在市面上有很多自动化测试工具,有商业的也有开源的,面向各个不同平台。根据开发策略和结构,品质管理测试专家需找出最适合他们环境的自动化工具。
# 客户端性能测试
一个App做得好不好,不仅仅只反应在功能上。被测的app在中低端机上的性能表现也很重要。比如:一个很好玩的 游戏 或应用,只能在高端机上流畅运行,在中低端机上卡得不行,也不会取得好的口碑。
# 适配兼容测试
App在经过功能测试后,也需对其进行适配兼容测试需要检查的项主要有以下几点:
(a) 在不同品牌的机型上的安装、拉起、点击和卸载是否正常;
(b) 在不同的操作系统上的安装、拉起、点击和卸载是否正常;
我们在实际测试中,常常会遇到下列问题:
(a) 在某个品牌某个系统上,app安装不上;
(b) 在某个品牌某个系统上,app无法拉起;
(c) 在某个品牌某个系统上,app拉起后无响应或拉起后黑屏、花屏;
(d) 在某个品牌某个系统上,app无法顺利卸载;
# 弱网络测试
App在使用的过程中,难免会遇到弱网络环境,例如在公车上、在地铁里。在这种情况下,常常会出现网络抖动、上行或下行超时,导致应用中出现丢包。
作为一个测试人员,要对app在上线前做一定场景的弱网络环境模型,并查看app在弱网络环境下是否存在某些未知的问题。下面是常用的弱网络环境场景:
(a) 弱网络信号场景模拟;
(b) 市区低速移动场景模拟;
(c) 郊区高速移动场景模拟;
(d) 请求回应超时_上行超时场景模拟;
(e) 请求回应超时_下行超时场景模拟;
(f) 网络抖动场景模拟。
# 耗电量测试
# 协议测试
模拟客户端直接发送协议包给服务器,看看服务器是否有一定的校验,认不认客户端发过来的数据。协议测试,主要是为了处理用户发送恶意协议到服务器,骗过服务器的校验。
# 安全测试
App在上线前,都需要做详细的安全测试。安全测试主要为了检测应用是否容易被外界破解;是否存在被恶意代码注入的风险;上线后外挂的风险高不高等。
# 服务器性能测试
服务器性能测试,主要包含单机容量测试和24小时稳定性测试。单机容量测试,可以检测到单机服务器在90%的响应时间和成功率都达标的前提下,能够承载多少用户量。使用特定 游戏 模型压测24小时,服务无重启,内存无泄漏,并且各事务成功率达标。
# 服务器容灾测试
服务器容灾测试,主要指某个服务进程崩溃掉后,是否具有自行恢复能力。比如 游戏 逻辑进程消失后,是否会自动拉起;memcached崩溃时,是否会重新启动,是否会对所有玩家有影响。这些都是app测试过程中需要考虑的因素。
手机app测试有可以利用以下几种工具:
1、安卓黑盒测试工具
1)包括本身自带的monkey,Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中;
2) robotium与appium,这些工具用于黑盒的自动化测试。可以在有源码或者只有APK 的情况下对目标应用进行测试。
2、白盒测试,Android在SDK中集成了JUnit框架。所以,你可以基于JUNIT框架进行安卓的白盒测试代码开发;
3、安卓的测试方法其实与web测试方法大多类似,只是多了一些特殊的测试场景;
4、兼容性测试,一是可以利用虚拟机来保证系统间的兼容性,但更多的还需要依靠真机来测试;
扩展资料:
APP测试要点:
1、功能测试
最基本的测试,主要是测试软件app的功能点、业务逻辑;关联性(主要是测试客户端和PC的交互,客户端处理完后,保证PC端数据同步且一致)
2、性能测试
cpu,占用不超过10%,响应时间(包括app启动和退出),满足258原则,2秒以内用户感觉很快,2-5秒感觉一般,5-8秒感觉很慢,但是能接受,8秒以上用户无法接受,选择离开,或者再次发送请求;
3、兼容性测试
手机app需要重点关注的,不同操作系统:android、iOS不同手机厂商,小米,华为等不同的手机屏幕分辨率,与其他第三方app的兼容;
4、安装卸载更新测试
也是手机app比较特别的测试点,安装的路径,手机还是sd卡上,高低版本的覆盖安装,内存不足时的安装,安装过程中出现中断情况,第三方管理软件中卸载app,卸载过程中出现中断情况;
5、中断或崩溃测试
中断测试主要是测试app是否会出现crash情况。来电、短信、闹钟、低电量等,网络环境突然改变,或者网络中断,例如隧道、电梯(离线支持),切换网络,例如数据连接切换到wifi外部设备。
比如充电,插耳机内存不足改变设备方向改变手机语言,例如英文多后台程序切换长时间开机并且长时间开启app也可以用monkey来测试apk的稳定性,也能检查出一些crash的问题;
6、安全测试
7、UI测试
参考资料:百度百科-手机APP
本文转载自互联网,如有侵权,联系删除