身为测试答一个,这类安全性测试,是app专项测试中必须要做的一环,简单列举下目前常做的测试类别
1. 用户隐私
检查是否在本地保存用户密码,无论加密与否
检查敏感的隐私信息,如聊天记录、关系链、银行账号等是否进行加密
检查是否将系统文件、配置文件明文保存在外部设备上
部分需要存储到外部设备的信息,需要每次使用前都判断信息是否被篡改
2. 文件权限
检查App所在的目录,其权限必须为不允许其他组成员读写
3. 网络通讯
检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或者SSL
4. 运行时解释保护
对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞
使用webiew的App,检查是否存在URL欺骗漏洞
5. Android组件权限保护
禁止App内部组件被任意第三方程序调用。
若需要供外部调用的组件,应检查对调用者是否做了签名限制
6. 升级
检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持
7. 3rd库
如果使用了第三方库,需要跟进第三方库的更新
一、前言
在SDK最近的项目中上线的包被第三方杀毒软件报出有病毒的问题,后来经过查验发现是SDK悬浮窗动画的逻辑被检验出有病毒,最后进行了修改。事情虽然解决了,但是引起该问题的一个原因是在测试中没有安全测试,而安全测试的标准,方法都没有。因此今天将之前工作中参与过的安全测试以及从网上查阅到有关安全测试的资料进行整理。有不足的之处,尽情谅解。
二、软件权限
1)扣费风险:浏览网页,下载,等情况下是否会扣费,一般在游戏APP,和社交APP等需要考虑这些。
2)隐私泄露风险。例如在我们安装APP应用时通常会看到"xx要读取手机通讯录"等提示,这些提示可以提示用户拒绝接受,这些是APP测试中的测试点。
3)校验input输入。对于APP有输入框的要对输入的信息进行校验,比如密码不能显示明文。在测试中红人馆注册时需要对input进行测试。
4)限制/允许使用手机功能接人互联网,收发信息,启动应用程序,手机拍照或者录音,读写用户数据。这个在通信行业用的比较多,比如展讯,高通等芯片厂商,他们在出厂芯片时要对手机各个功能进行测试。
三、代码安全性
之所以单独拿出来说,是因为在SDK测试过程中SDK代码被第三方工具检测出游病毒代码,这样一来就会影响输入法的使用。因此在后续测试中要尝试加入安全性测试。
四、安装与卸载安全性
1)应用程序应能正确安装到设备驱动程序上
2)能够在安装设备驱动程序上找到应用程序的相应图标。在SDK测试项目中发现有些设备受权限的问题,无法下发图标创建快链。
3)是否包含数字签名信息。在SDK测试项目中基本上没有,但是在输入法打包和主线版本上存在这样的测试。
4)安装路径应能指定
5)没有用户的允许应用程序不能预先设定自动启动
6)卸载是否安全,其安装进去的文件是否全部卸载
7)卸载用户使用过程中产生的文件是否有提示
8)其修改的配置信息是否复原
9)卸载是否影响其他软件的功能
10)卸载应该移除所有的文件
11)安装包的存放。在SDK下载安装包的测试中我们经常会看到下载下来的包后面有四个随机的字符串,这个的目的是为了防止第三方工具恶意删除安装包的问题。
在SDK测试项目中有专门针对下载安装卸载的用例,对安装的路径和下载的文件夹路径等有相关的测试,测试结果页表明,某些手机(例如华为mate1)在删除了某个下载路径文件夹之后受权限应用不会自动创建。
五、数据安全性
1)当将密码或其他的敏感数据输人到应用程序时,其不会被储存在设备中,同时密码也不会被解码
2)输人的密码将不以明文形式进行显示
3)密码,信用卡明细,或其他的敏感数据将不被储存在它们预输人的位置上
4)不同的应用程序的个人身份证或密码长度必需至少在4一8个数字长度之间
5)当应用程序处理信用卡明细,或其他的敏感数据时,不以明文形式将数据写到其它单独的文件或者临时文件中。以防止应用程序异常终止而又没有删除它的临时文件,文件可能遭受人侵者的袭击,然后读取这些数据信息。
6)当将敏感数据输人到应用程序时,其不会被储存在设备中
7)备份应该加密,恢复数据应考虑恢复过程的异常通讯中断等,数据恢复后再使用前应该经过校验
8)应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全警告
9)应用程序不能忽略系统或者虚拟机器产生的用户提示信息或安全警告,更不能在安全警告显示前,利用显示误导信息欺骗用户,应用程序不应该模拟进行安全警告误导用户
10)在数据删除之前,应用程序应当通知用户或者应用程序提供一个"取消"命令的操作
11)"取消"命令操作能够按照设计要求实现其功能
12)应用程序应当能够处理当不允许应用软件连接到个人信息管理的情况
13)当进行读或写用户信息操作时, 应用程序将会向用户发送一个操作错误的提示信息
14)在没有用户明确许可的前提下不损坏删除个人信息管理应用程序中的任何内容
15)应用程序读和写数据正确。
16)应用程序应当有异常保护。
17)如果数据库中重要的数据正要被重写,应及时告知用户
18)能合理地处理出现的错误
19)意外情况下应提示用户
20)HTTP、HTTPS覆盖测试。在测试中我们经常会遇到与请求的加密解密测试,以确保产品的安全性
APP测试工具大全(建议收藏!!!)
一、APP自动化测试工具
二、APP稳定性测试工具
三、APP性能测试工具
四、APP弱网测试抓包工具
五、APP兼容性测试工具
六、APP安全测试工具
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的交互习惯进行比较。
一般这部分建议使用自动化测试, 如果没有自动化测试,可以根据以下几方面进行测试:
线上测试是产品上线之后一定要完成的,这部分可以根据场景化进行回归测试,其中网络环境要全部覆盖一遍
我来说两句