APP安全测试用例梳理

Android APP安全测试,本想找用APPscan扫描就行了,但系统的架构不支持APPscan扫描。

按下面的一些思路手工测试的安全:

 数据存储及敏感数据加密传输:

预置条件测试步骤预期结果

1、手机root
2、被测应用打开了数据业务开启或连接wifi
3、获取手机的个人数据信息:IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、定位信息、PIN码、PUK码

1、打开PC端wireshark并开启抓IP log 开关。(详细指导书见备注列附件)然后正常使用该应用的每个功能;

2、保存wireshark的log。使用wireshark打开IP包,查看被测APK的传输是否使用安全的通道,例如“https“,如果是安全通道,可直接pass;

3、若测试APK采用的非安全通道,例如“http”,则需要搜索相应的关键字(如输入的密码)。

1、能成功抓取IP log

2、被测APK的传输使用的是安全的通道,若不满足,查看第3步

3、密码数据已加密,未搜索到打印的账户密码、定位信息(关键字:lat、lon、或当地经纬度)、IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、模块登陆密码信息、PIN码、PUK码、

1.LOG中不能打印任何形式的口令、密钥

2、LOG中不能默认打印个人数据   如logcat打印的日志信息中包含账户名密码,如果必须打印,则进行匿名,加密的处理

1.连接adb,打开logcat日志(adb shell logcat -v time > D:\logcat.txt)。然后正常使用该应用的每个功能(包含接打电话、收发短信、收发邮件,地图定位操作)。2、保存logcat日志,搜索关键字检查否打印了账户的密码、定位信息、IMEI号、IMSI号、ESN号、MEID号、电话号码、电话本、短信、email、通话记录、模块登陆密码信息、PIN码、PUK码

1、能成功抓取logcat日志

2、未打印上述口令、密钥或个人数据

被测应用打开了数据业务开启或连接wifi1、使用TCPDump抓IP包,使用wireshark确认上传敏感数据的服务器地址

1、采集的个人数据不能发送到敏感国家/地区非允许的范围的服务器地址
备注:各个国家或地区对数据转移的规定不一样,具体请与当地法务确认是否满足当地法律要求

1、手机连接DDMS
2、手机root

1、使用XX模块涉及账号密码的功能
2、使用SQLiteSpy工具打开XX数据库"/data/data/package name/"下的*.db文件,检查数据库里是否有密码明文显示
3、查看XX应用"/data/data/package name/"下文件是否有密码明文显示

2-3不允许密码明文显示(即使有权限保护,也不允许密码明文显示)

说明:如果数据存储类型是SharedPreferences存储数据,验证时参照:https://www.cnblogs.com/ww-xiaowei/p/11209051.html

流量的消耗

预置条件测试步骤预期结果

1、有现网的wifi连接
2、手机插在PC上(防止休眠),设置不灭屏
3、应用至少申请了一种联网相关权限

1、打开应用,保持应用运行,静置不用,经过24小时1、在setting中查看应用在wifi下消耗的流量,该应用的流量不能超过0.1MB

1、有现网的移动数据连接,并勾选“始终连接数据业务”
2、手机插在PC上(防止休眠),设置不灭屏
3、应用至少申请了一种联网相关权限

同上在setting中查看应用在数据业务下消耗的流量,该应用的流量不能超过0.1MB

说明:如果觉得24小时太长,可以测试30分钟,流量消耗不超过0.00208MB(该数据未经过严格推敲,目前只是罗列了测试点和方法)

其他项

系统升级

1、系统检测到有新版本,
2、应用检测到有新版本

1-2、提示用户是否需要升级以及升级可能的影响,不允许在用户不知情的情况下自动升级,且在线升级检查升级包更新的频率

不能过于频繁,不能多于1次/天。

暗码

1.准备root权限手机

2.在AndroidManifest.xml中查看

“<data android:host="2432546" android:scheme="android_secret_code"”

3、比较过滤出来的暗码和附件中的暗码表
4、检查每个暗码对应的功能,和备注中的文档比较

 暗码只能比附件中的少,不能多,请参考附件TAB页  
 病毒

1.安装杀毒软件(McAfee Android版),对手机进行安全扫描和实时监控。
2.打开应用XXX,进行正常的使用。

 2.应用使用正常,使用过程中杀毒软件不会报出存在病毒、木马、恶意程序等安全风险提示

应用禁止推送恶意广告,比如:

广告中有恶意病毒,木马地址等。

 

打开该应用,进行正常的使用,遍历每一个应用中显示的一级菜单功能。扫描是否有恶意广告行为。

 

1、强制使用性:未明确提示用户或未经用户许可,强制安装并弹出,且广告条尺寸大于480*60px;

 

2、安装隐蔽性:恶意广告捆绑在应用程序中,用户难以察觉。

 

3、自启动性:后台自动运行,如主动弹出对话框引导用户进行软件预装、业务定制(用户无法关闭定时弹出对话框);未经用户许可,在通知栏弹出广告等。

 

4、商业利益性:通过推送广告、增加下载流量获取商业利益。

 

无恶意广告行为(关注应用不存在以下行为:匿名或频繁推送广告;

未经用户允许在通知栏弹出广告;广告无法关闭;

主动弹出用户无法关闭的对话框引导或强制用户进行软件下载预装或业务定制等情况。)

 签名验证

 手机root

1.在cmd命令行中执行:jarsigner -verify -verbose -certs "D:\XXX.apk"
2.检查结果中的签名信息。

 1、签名信息,姓名、部门或公司名称这三项中保证至少有一项不为空,签名信息的每一项需保证真实有效,不能为网址、乱码等无效信息;

2.不能出现debug的签名(签名信息中含有debug字样,如CN=Android Debug等)

3、非谷歌官方应用,不得采用安卓公开证书Android/emailAddress=android@android.com,第三方应用的签名信息一般不能签huawei

 

 调试模式 

1.进入设置-开发人员选项-选择调试应用,检查被测应用在不在调试应用列表中;

2.打开APK遍历各个界面是否存在调试账户或者公用账户的提示语(如:试用账号admin/123456,调试账号admin/admin等等)

   

1、被测应用不在调试应用列表中(或选择调试应用菜单置灰)

2、不存在未知的隐藏账号、隐藏口令

targetsdk

手机已连接电脑

1.执行命令 adb shell dumpsys package 包名 ,检查targetSDK。
2.检查apk是否申请了如下权限。
(aapt dump badging[yourapp.apk])
adb shell dumpsys package com.…… | findstr versionCode

 

1、若targetSDK不小于23,则pass;若targetSDK小于23,则执行步骤2。
2、apk未申请如下权限。

权限:

 

预置条件

测试步骤

预期结果

1、有手机管家且在权限管理中对该应用监控改为“提示”
2、手机root

一、

查看AndroidManifest.xml,是否有android.permission.record_audio权限

对XX模块功能进行操作,检查是否有通话录音功能,通过权限管理检查是否有后台录音功能,录音时是否给用户明示

1.若无录音权限,则忽略步骤2;
2、没有通话录音功能,不允许存在有后台录音且未明示用户的情况。

1、有手机管家且在权限管理中对该应用监控改为“提示”
2、手机root

查看AndroidManifest.xml,查看是否有android.permission.send_sms/android.permission.call_phone权限
2、在遍历XX模功能时结合权限管理监听手机行为

1、若无打电话/发短信权限,则忽略步骤2;
2、权限管理也未发现应用有偷打电话和偷发短信的行为

 手机有root权限查看AndroidManifest.xml中,应用申请的权限  

应用程序禁止保留与业务功能不一致的敏感权限。
(举例:用于拍照的应用,不能申请发送短信的权限。)

 用户对文件的权限

1.运行应用XXX。
2.在cmd命令行输入adb shell。
3.输入ps命令。  
4.在最后一列NAME中,找到此应用,查看该应用对应的USER列显示的运行权限

 
 4.此应用(不论是自研应用,还是预置的第三方应用)在USER显示的是类似app_XX/u0_aXX的形式,如果以root或system用户运行要评估是否为必需(几乎都是非必须的)。备注:JellyBean版本上是u0_aXX的形式,I及以前的都是app_XX的形式
 reboot权限 1.检查应用中是否申请了权限:android.permission.REBOOT 1.一般都不会申请此权限,如果有申请,要确认必要性。
应用中不能存在可以ROOT系统的接口

1、运行该应用,若有弹框权限提示,点击允许。遍历每一项功能查看是否有提示ROOT系统的功能提示。

2、在cmd命令行输入adb shell。

3、输入ps命令。

4、在返回值中在最后一列NAME中,找到此应用,查看该应用对应的USER列显示的运行权限

1、该应用运行正常,没有ROOT系统的功能和提示。

2、adb连接成功

3、能正常返回查询值

4、此应用在USER显示的是类似u0_aXX的形式则PASS。如果以root或system权限运行为Fail(若已经在华为安全TMG评审评审通过,Fail后可以报备为通过)

 用户对文件的权限 

1、遍历XX模块的功能
2、在命令行中输入adb shell
3、进入测试apk的目录下,输入:cd /data/data/package name/
4、用ls -l查看每个文件的other组权限控制,比如:-rw-rw---- u0_a93 u0_a93 566 2013-09-09 14:36 com.tigerknows_preferences.xml
5、检查有other组读写控制权限的文件是否包含隐私数据(参考预制条件2),比如(IMEI,手机号码等)

 

4、最后三位显示成---或--X(-rw-rw----, 这串字符的后三位)则没有读写控制权限,若无此文件,则忽略步骤5
5、有other组读写权限的文件不允许包含隐私数据

转载于:https://www.cnblogs.com/ww-xiaowei/p/11214956.html

<think>我们正在编写手机App测试的详细模板和编写方法。根据引用内容,测试包含测试环境、操作步骤、测试数据、预期结果等要素。同时,我们可以参考自动化测试的编写思路(引用[2]和引用[3])来设计App测试手机App测试编写指南:1.测试要素:-用ID:唯一标识-测试模块:如登录模块、支付模块等-测试标题:简洁描述测试点-前置条件:执行测试前的状态要求(如已安装App、网络状态等)-测试步骤:详细的操作步骤-测试数据:输入的数据(如用户名、密码等)-预期结果:期望达到的结果-实际结果(执行时填写)-优先级(如P0、P1等)-测试环境(如Android10,iOS14等)2.测试场景设计:-功能测试:核心功能是否正常-兼容性测试:不同设备、系统版本-性能测试:启动时间、内存占用等-安全性测试:数据加密、权限管理等-用户体验测试:界面布局、交互流畅度-网络测试:弱网、断网等场景示测试(以登录功能为):|用ID| TC-LOGIN-001| |--------|--------------------------------------------------| |模块|用户登录| |标题|使用有效用户名和密码登录| |前置条件 |1. App已安装并打开2.网络正常3.用户未登录| |测试步骤 |1.进入登录页面<br>2.输入有效用户名<br>3.输入正确密码<br>4.点击“登录”按钮 ||测试数据|用户名:testuser<br>密码: Test1234||预期结果|1.跳转到首页<br>2.首页显示用户名“testuser”||优先级 |P0||测试环境| Android12, iPhone13(iOS15)| 3.编写技巧(参考引用[1]和引用[2]):-理清思路,避免遗漏:先梳理功能点,再针对每个功能点设计正常、异常场景。-复用性:可复用的步骤(如登录)可以单独写成公共用。-自动化适配:考虑将重复执行的用设计成自动化脚本(参考引用[3]的Prompt示)。4.自动化测试设计(参考引用[2][3]):对于上述登录用,可以转化为自动化脚本(以Pytest+Appium为):```pythondeftest_valid_login(appium_driver):#步骤1:访问登录页(假设已在该页面)#步骤2:输入用户名username_field= appium_driver.find_element(By.ID,"username_input")username_field.send_keys("testuser")#步骤3:输入密码password_field= appium_driver.find_element(By.ID,"password_input")password_field.send_keys("Test1234")#步骤4:点击登录login_button =appium_driver.find_element(By.ID, "login_btn")login_button.click()#验证点1:跳转到dashboard页面(通过页面元素验证)WebDriverWait(appium_driver,10).until(EC.presence_of_element_located((By.ID,"dashboard")))#验证点2:显示用户名welcome_text= appium_driver.find_element(By.ID,"welcome_text").textassert "testuser" inwelcome_text``` §§相关问题§§1.如何设计App测试的异常场景?2.App兼容性测试如何编写? 3.如何将手动测试转化为自动化测试?</think>### 手机App测试编写指南 #### 一、测试核心要素(参考引用[1]) 1. **测试环境** - 操作系统版本:Android 12/iOS 15等 - 设备型号:华为P50/iPhone 13等 - 网络环境:4G/5G/Wi-Fi/弱网 - App版本:V2.3.1 2. **操作步骤** 需明确每一步操作,如: > "1. 点击首页‘登录’按钮 > 2. 在用户名输入框输入`test_user` > 3. 在密码输入框输入`Test@123`" 3. **测试数据** - 有效数据:符合格式要求的输入 - 无效数据:超长字符/特殊符号/空值 4. **预期结果** 需量化验证标准,如: > "登录成功后跳转至个人中心页,顶部显示用户名`test_user`" #### 二、测试场景设计(覆盖维度) | 测试类型 | 场景示 | 关键验证点 | |----------------|-----------------------------------|-------------------------------| | **功能测试** | 用户注册流程 | 短信验证码校验逻辑 | | **兼容性测试** | 在Android 10+iOS 14多设备运行 | 界面元素是否错位 | | **性能测试** | 弱网环境下提交订单 | 响应时间≤3秒,无数据丢失 | | **安全测试** | 输入SQL注入语句`' OR 1=1 --` | 系统拦截并提示"非法输入" | | **交互测试** | 来电中断App操作 | 恢复后保持原界面状态 | #### 三、模板示:登录功能测试 ```markdown **用ID**:TC-LOGIN-003 **模块**:用户认证 **优先级**:P0(核心功能) **前置条件**:App已安装,网络正常 | 步骤 | 操作 | 测试数据 | 预期结果 | |------|-------------------------------|-----------------------|------------------------------| | 1 | 启动App | - | 显示启动页,3秒后进入首页 | | 2 | 点击"登录"按钮 | - | 跳转至登录页面 | | 3 | 输入用户名 | test_user (有效) | 输入框显示内容,无报错 | | 4 | 输入密码 | Test@123 (有效) | 密码显示为密文 | | 5 | 点击"登录" | - | 1. 跳转至个人中心页<br>2. 顶部显示"欢迎test_user"<br>3. 本地保存登录态 | | 6 | 强退App后重新打开 | - | 自动保持登录状态 | ``` #### 四、编写技巧(参考引用[2][3]) 1. **原子化设计** 每个用只验证一个功能点,如: > 单独测试"密码错误"场景,不与"用户名错误"合并 2. **自动化适配** 对高频测试场景(如登录),添加自动化标记: ```gherkin # 自动化脚本示(基于Appium) Scenario: 有效登录 Given 打开登录页面 When 输入用户名 "test_user" And 输入密码 "Test@123" And 点击登录按钮 Then 应显示个人中心页面 And 页面元素"welcome_text"应包含"test_user" ``` 3. **异常流覆盖** - 输入框超长字符:输入50个字符的用户名 - 权限拒绝场景:禁用相机权限时尝试扫码功能 - 数据冲突:注册已存在的手机号 #### 五、测试管理工具推荐 1. **Excel/Google Sheet**:适合基础用管理 2. **TestRail**:支持用分级、自动化集成 3. **Jira+Xray**:关联需求跟踪的完整方案 > 注:实际项目中需结合业务特性调整,如电商App需重点测试支付流程,社交App需关注消息推送可靠性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值