目录
安全风险分析
客户端面临的主要风险
app的安全主要从:①客户端安全②通信安全③服务端的安全
测试开展---反编译
一、图片资源获取
二、XML资源获取
三、代码资源获取
dex2jar用法:
测试开展--二次打包
测试开展--数据安全
密码存储原理:
检测方法
Logcat日志
测试开展--键盘安全风险
键盘劫持测试
测试开展---账号登录/会话超时
账号登录
密码是否密文显示
会话超时监控
测试开展---其他
安全退出
密码修改
手势密码
密码锁定策略
短信验证码
业务逻辑
服务端方面漏洞
H5测试介绍
优势:
劣势:
H5功能验证
返回逻辑:
H5适配相关
小程序测试技术
什么是小程序
小程序的特点
小程序的入口
小程序的架构
小程序的测试点
1.功能测试
2.界面测试
3.兼容性测试
4.与微信功能的交互测试
5.性能测试
6.安全性测试
易用性测试
8.其他注意事项
小程序测试方法
adb logcat
内容是本人学习笔记整理-7-2019/04/19 20:00-22:00
定位:初级测试人员1-2年,功能测试(黑盒测试)
安全风险分析
木马 | 病毒 | 篡改 | 破解 | 钓鱼 | 二次打包 | 账号窃取 | 资源篡改 | 广告植入 | 信息劫持 |
客户端面临的主要风险
客户端 | 数据传输 | 服务端 |
- 反编译
- 防二次打包
- Webview漏洞
- 键盘安全
- 屏幕截屏风险
- 数据安全
- 界面劫持
- 本地拒绝服务
- 数据备份风险
- Degbug调试风险
|
|
- 业务逻辑漏洞
- SQL注入
- XSS
- 上传漏洞
- 暴力破解
- 安全策略
|
app的安全主要从:①客户端安全②通信安全③服务端的安全
测试开展---反编译
- 我们一般想要反编译一个apk,无非就是想获得三样东西:图片资源、XML资源、代码资源。
一、图片资源获取
- apk->把后缀名改成zip->在res目录->获取到我们需要的图片
二、XML资源获取
- 打开的zip文件->.xml的文件->尝试打开->乱码或者是空白
- 借助一个jar包 axmlprinter2.jar,(Baidu)xml放在同级目录下
- 进入CMD->找到这个目录,如:java -jar AXMLPrinter2.jar xxxxx.xml>xxxxx.txt
三、代码资源获取
- 一般情况下能正确反编译出来的只有未加密或者没有混淆的代码
- 解决:dex2jar.rar和jd-gui.zip这两个工具。
- dex2jar主要是用来把之前zip解压出来的classes.dex转成jar包的
- jd-gui主要是用来打开Jar包的
dex2jar用法:
- 把dex2jar解压后,然后将之前zip的classes.dex放到dex2jar目录下,
- 注意,必须要跟dex2jar.bat是同级目录。
- 然后又要用到cmd,cd到dex2jar目录下,打命令行dex2jar.bat classes.dex
- 然后你的目录里会多一个jar包,classes-dex2jar.jar的文件
- 然后在用jd-gui把jar打开,最终apk的代码就这样被剥离出来了。
开发:采用加密和混淆技术达到反编译保护。
测试开展--二次打包
- “Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都很正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。
- 利用二次打包工具对APP进行二次打包,看APP能否成功打包运行,如果重新打包后无法运行程序说明有防二次打包安全措施。
开发:采用签名的方法进行保护:获取二次打包后APK的签名与正确的APK签名做对比,判断APK程序是否进行过二次打包。
测试开展--数据安全
密码存储原理:
- WebView默认开启密码保存功能:mWebView.setSavePassword(true),开启后,在用户输入密码是,会弹出提示框:询问用户是否保存密码;如果选择“是”,密码会被明文保存到/data/date/com.package.name/databases/webview.db中,这样就有被盗取密码的危险。
检测方法
- 方法1、用户输入密码时看是否有弹出提示框,询问用户是否保存密码,如果有询问则表示存在漏洞,否则不存在。
- 方法2、检查代码中setSavePassword的值是否为false。
开发:WebView.setSavePassword(false)
Logcat日志
- 通过usb连接手机,然后使用adb logcat -v time >d:\xx 的方式获取logcat信息。
- 不要把账号密码等敏感信息保存在本地明文存储,如果一定要存储敏感信息务必进行加密存储重要信息。
- 敏感数据明文存储于Sdcard。
- 非系统级的app只允许在Android/data/<package-name>/目录下操作。因此,每个app的文件读写权限被独立开来,不能互相访问。
测试开展--键盘安全风险
键盘劫持测试
- 用眼观察每次弹出来的自定义的软键盘是否随机变化布局;
- 通过观察app在输入密码的地方是否会弹出自定义的软键盘。
测试开展---账号登录/会话超时
经典用例:(一个字符一个字符匹配)
账号:如密码为1234 用例:12345 或1234 5
1->*: 1到*这个过程时间是多长?
账号登录
- 测试能否在两个设备上同时登录同一个登录
- 同一个设备是否可以重复登录
密码是否密文显示
- 密码是否符合规范,如数字,字母,大小写
- 比如登录时,密码输入错误时的提示信息。
会话超时监控
- 客户端在一定时间内无操作(20分钟足够),是否会话超时登录。
测试开展---其他
安全退出
- 客户端在用户退出登录时,查看session是否可用
密码修改
- 是否存在原密码验证
- 是否可以修改为原来密码
手势密码
密码锁定策略
- 手势密码锁定策略
- 输入密码错误策略
短信验证码
- 是否单次有效(使用过的单次,还是发送的单次)
- 时间之内是否有效(5分钟内,10分钟内)
业务逻辑
- 权限方面的测试(审批策略)(办公的ERP系统、OA系统)
服务端方面漏洞
H5测试介绍
优势:
- H5可以跨平台,开发成本相对较低;
- H5可随时上限就更新版本,适合快速迭代;
- H5可以轻量的触达用户,提供更快捷的服务;
- 在微信入口或者浏览器上,用户只需点开链接就可以获取我们所提供的服务。
劣势:
- H5->的转化强依赖于浏览器;
- H5目前基本无法将数据存储在本地,依赖实时性数据,网络状态不好的时候卡到哭。
- 性能相对较低,影响用户体验。
H5功能验证
- 通过H5网页(非手机的返回功能)的返回功能可以返回,不会出现无法返回的情况。
返回逻辑:
- 对于页面中的返回,以及浏览器自带的返回的测试。页面中的返回要考虑业务逻辑,友好返回到相应层次,需要从用户角度返回的转跳逻辑,不能出现死循环。并要注意返回后是否需要刷新页面请求通过H5页面(非手机自带返回键)的返回功能键返回,可以返回到正确的页面(上一级/退出H5)点击返回与back键,回退页面是否是期望页面。
- 横屏竖屏相互切换,能自适应,并且布局不会乱掉;或页面只支持横或竖屏限制。
- 在手机上从list点击进入detail页面,要在原窗口打开,这样可以通过页头的返回按钮返回,而不需要通过手机的返回键返回,这样交互上更友好。
- 关注页面请求,是否会有多余的请求,或者请求后有多余的数据返回,尽量精简,否则会浪费流量。
- 图片适配测试,根据不同屏幕和分辨率做适配,以及适配后的清晰度,高端机取双倍尺寸的图--app兼容测试。
H5适配相关
1.H5的适配其实比客户端的相对来说,要少一些,手机品牌之间的差异不大,所以不用太多关注,最容易出现问题的是Android2.3系统,这个要特别关注下:
- A、大屏(如720*1280,重点关注页面背景是否完全撑开页面,刷新是否有抖动)、小屏手机(如320*480,重点关注下弹框样式和文案折行)
- B、Android2.3、Android4.X随机找一个即可。
- C、ios5、ios6、ios7.
2.H5的页面在PC端也是能访问的,Chrome对H5支持最好,功能的测试可以在PC端Chrome下先测试,也可以在手机上直接测试,这个看个人习惯。(ie系列包括ie8,及以下都支持的不好)
3.手指滑动是否流畅,手指点击是焦点是否定位正确,不同机型会不一样。焦点点击是否灵敏。
4.对于类似公司名称、offer名称长度的问题,在手机上最好能根据屏幕大小自适应而不是截断,因为手机上是不会有tips可以看的。截断导致大屏幕下也只能显示几个字,交互不好。
5.手机测试要特别关注交互是否友好,与PC机的事件模型不一样,,可能拖动后是否会导致一些体验的问题,比如:弹出层的点击,是否会穿透,影响到弹出层下面的页面。
6.对于一些浮层做的页面,例如地图、产品分类等浮层,注意拖动后是否可以看到它下面的页面,拖动后边缘是否有留白。
7.网络切换:从WiFi切换到2G/3g网络、从2G/3g网络切换到WiFi等。
弱网络降级:处于2G/3g网络省流量模式的一些特殊处理,比如2G网络下测试,图片多时是否要懒加载等。网络状况差的场景,可以提示文案,但不能闪退。
小程序测试技术
什么是小程序
- 小程序是一种不需要下载安装即可使用的应用;
- “触手可及”扫一扫/搜一下即可打开;
- “用完即走”应用将无处不在随时可用,但又无需安装卸载;
- 开发门槛相对较低,够满足简单的基础应用,生活服务类线下商铺/非刚需低频应用的转换;
- 实现消息通知,线下扫码,公众号关联,历史列表,联系客服,小程序切换,七大功能。其中,通过公众号关联,用户可以实现公众号与小程序之间相互跳转;
- 小程序可以借助微信联合登录,和开发者已有的App后台的用户数据进行打通,但不会支持小程序和App直接的跳转。
小程序的特点
- 类似WEB.非HTML5
- 即用即走,随手可得
- 拥有离线能力
- 基于微信跨平台
- 媲美原生操作体验
小程序的入口
- 扫码进入小程序
- 搜索小程序
- 小程序发送到桌面(Android)
- 发送给朋友

小程序的架构
- 微信小程序的框架包含两部分,View视图层、App Serive逻辑层,View视图层用力啊渲染页面结构,App Serive逻辑层用来逻辑处理、数据请求、接口调用,它们在两个线程里运行。
- View视图层使用WebView渲染,App Serive逻辑层使用JSCore运行。
- View视图层和App Serive逻辑层通过系统层的JSBrigdage进行通信,App Serive逻辑层把数据变化通知到WebView渲染,触发WebView渲染页面更新,WebView渲染把触发的事件通知到App Serive逻辑层进行业务处理。


小程序的测试点

1.功能测试
- 输入
- 输出
- 边界值
- 页面交互---微信小程序里面界面交互
- 系统问题方面测试--低电,来电话,数据线插拔,充电状态,重启等情况
2.界面测试
- 设计是否美观
- 是否符合需求说明
- 尺寸是否合理
- 对于横竖屏切换使用好不同手机分辨率和尺寸的要求是否符合
3.兼容性测试
- 操作系统---IOS、Android
- 微信版本--小程序的api(接口)库
- 其他微信小程序
- 屏幕大小和分辨率因素
- 不同网络状态下的测试---2G/3G/4G/WIFI
4.与微信功能的交互测试
- 入口--下拉框、发现模块搜索
- 交易--微信钱包、微信卡包
- 与微信其他功能的切换--抢红包、文字聊天、语音聊天、视频通话
5.性能测试
- 页面响应时间
- 资源占用
- 渲染时间
- 耗电量
- 白屏时间
- 帧率
6.安全性测试
- 接口测试--传递的数据的安全性
- 危险账号授权
- 与小程序的app账号关联
易用性测试
- 是否方便使用
- 提示信息是否完整
- 各个功能是否可用
- 是否方便查找
- 是否可以离线使用
- 进入小程序过程是否简单易操作
8.其他注意事项
- 小程序升级更新--一般为强制升级和更新
- 小程序目前不支持分享至朋友圈,但是可以用图片的方式分享至朋友圈
- 小程序的添加和删除
- 微信端取消授权登录
小程序测试方法
- 功能测试----以手动功能为主
- 对于开发来说---微信开发者工具新增小程序测试系统
- 云测试平台--http://utest.21kunpeng.com/ --租用云真机进行
- 测试人员---http://airtest.netease.com/ ----airtest进行自动化测试
- Monkyrunner ----python写的,比较老,通过获取手机的坐标
adb logcat
- monkey
- 日常工作中
- 连接USB打开CMD->执行重定向 命令->操作手机执行用例
- ---->遇到bug以后,停止操作,把logcat的日志和截图提交给开发
- ---->优势:如果是偶现的bug,也可以提交日志
- ---->没有遇到bug,可以随时把logcat命令停止,删除重定向的文件,再次执行命令,继续执行用例。
- ---->优势:可以避免一个不够发生以后,形成的日志过大,增加开发的分析难度。
- ②单独用手机执行用例,一旦发生问题,就立刻连接USB,执行重定向命令
- ---->以最快的速度把日志获取。
- 新建一个txt文件,在里面输入 adb logcat -v time >D:\log\logcat0423.txt 然后另存为文件名: logcat.bat 编码: ANSI 点击保存到桌面。这是批处理文件。双击打开,即时打开抓取,手机发生问题后,立刻连接手机,直接点开双击。不用打开cmd,再输入命令。
|