App专项测试—安全测试
安装包是否反编译代码
我们把移动应用发布出去后最终用户就会获得一个程序安装包。我们需要关注的是用户能否从这个安装包中获得项目的源代码。为什么会关注源代码代码泄露问题呢?除了保护公司的知识产权外,还有安全方面的考虑。一旦源代码泄露,带来的安全风险还是很高的。
在测试中,如何面对各种反编译的情况,开发人员通常做法就是对代码进行混淆,混淆后的源代码通过反编译软件生成的源代码是很难懂的。测试人员通常的反编译方法是使dex2jar工具和jd-gui工具查看源代码。
•安装包是否签名
这一点iOS平台可能不必考虑的,因为iOS的每一个App都有正式的发布证书来签名,当发布到App Store时,App Store都会做校验,保证该App是合法开发者发布的。对于Android来说,由于发布渠道多样,没有此类权威检查,我们需要在发布前校验一下签名使用的key是否正确,以防被恶意第三方应用覆盖安装等问题出现。
•权限设置的检查
一些用户对自己手机上的隐私问题十分敏感。因此我们需要对App申请某些特定权限的必要性进行检查,例如访问通讯录、拨打电话录音等。对于没有必要的权限,一般建议开发直接去除。
•敏感信息测试
(1)数据库是否储存敏感信息。现今大部分移动App都会使用到数据库。如果在数据库中存储了敏感信息,一旦用户手机被他人获得,就可能造成用户的隐私泄露。特别是某些应用会把cookie类数据保存在数据库中。一旦此数据被他人获取,可能造成用户账户被盗用等严重问题。因此身为测试人员,就要对各个数据库字段含义进行了解,并评估其中可能的安全问题,也可以建议开发对cookie类数据设置一个合理的过期时间。
(2)日志中是否存在敏感信息。一般情况下,开发在开发软件过程中,都会加入日志帮助调试,但是有部分日志可能会写入一些敏感信息。所以作为测试人员就要在软件上线之前查看待上线的软件产品是否对关键日志进行了撤销。保证用户重要的信息安全。
(3)配置文件是否存在敏感信息。与日志类似,我们需要检查配置文件中是否包含敏感信息。
(4)软键盘劫持。如果用户安装了第三方软键盘,当用户使用第三方软键盘盘输入一些敏感信息时,输入的内容可能就被第三方软键盘截获。如果该第三方软键盘包含恶意代码,就可能引起用户数据的泄露并造成用户损失。对此,作为测试人员就要在特别敏感的需要输入的地方做出检查,比如金融类App在用户名和密码输入可以使用应用内的软键盘输入等。
•账户安全测试
(1)密码是否明文存储在后台数据库
(2)密码在UI界面是否使用暗文输入
(3)账户锁定策略,多次输入账户错误的情况下是否做出临时锁定
(4)同时会话是否做出限制登录操作:例如一个账号只能在一个设备上登录,当在其他账户中登录的时候,就提示“你的账户在另一地点登录”
(5)注销机制,在客户注销后,要保障任何用户需要身份验证的接口调用都不能成功。
•数据通信安全测试
(1)关键数据是否加密,比如密码等
(2)关键连接是否使用安全通讯,例如HTTPS
(3)是否对数字证书合法性进行了验证
(4)接口是否加入code验证机制
•服务端接口安全测试
(1)SQL注入
SQL注入的步骤
a) 寻找注入点(如:登录界面、留言板等)
b) 用户自己构造SQL语句(如:’or 1=1#,后面会讲解)
c) 将sql语句发送给数据库管理系统(DBMS)
d) DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作
e) DBMS接受返回的结果,并处理,返回给用户
(2)XSS跨站脚本攻击
(3)CSRF跨站请求伪造
APP专项测试——干扰/中断测试
在用户使用手机上App的时候,会遇到一些打断的情况,例如正在浏览页面的时候收到一个电话等等。如果开发代码写的不严密,会导致我们App发生一些异常的行为。所以在测试的时候就要测试到各种不同的场景:
(1)收到电话
(2)收到短信
(3)收到通知栏消息
(4)低电提示框弹出
(5)第三方安全软件提示框弹出
(6)可用存储空间过少
(7)没有SD卡的情况
(8)飞行模式
(9)电量耗尽
(10)信号丢失
以上场景都要在相应的App功能下进行测试。从而保证软件质量
Android应用生命周期
APP测试专项测试——性能测试
App端本身的性能是影响用户体验的非常重要的方面,包含内容比较多,例如CPU、内存的使用情况,虽然这个方面用户无法体验到,但是作为测试人员,性能也是我们需要关注的问题,因为一旦发生内存泄露等问题,轻则影响到App的运行性能,严重的则会导致内存告警,程序崩溃。
App性能所要关注的点:
内存是否泄露、启动时间、用户响应、图形动画、文件和网络I/O等(腾讯GT/网易的Emagee)
APP测试专项——灰度测试
灰度测试就是指如果软件要在不久的将来推出一个全新的功能,或者做一次比较重大的改版的话,要先进行一个小范围的尝试工作,然后再慢慢放量,直到这个全新的功能覆盖到所有的系统用户,也就是说在新功能上线的黑白之间有一个灰,所以这种方法也通常被称为灰度测试。类似于我们通常所说的内测。
灰度测试就是将自己的产品首先拿出来给一部分目标人群使用,通过她们的使用结果和反馈来修改产品的一些不足,做到查漏补缺,完善产品的功能,使产品的质量得到提高。这样产品尽早的与用户接触能为以后产品的正式发布打下基础。
定义:灰度测试,就是在某项产品或应用正式发布前,选择特定人群试用,逐步扩大其试用者数量,以便及时发现和纠正其中的问题。
灰度期:灰度测试开始到结束期间的这一段时间,称为灰度期。
(未完待续…)