My_Project

资料整理


APP测试白皮书

<h2>app测试检查点</h2> <p>APP测试主要采用真机、模拟器、云测试平台三种,现在市场主流采用的是真机测试,APP测试的基本流程:</p> <p>1.<strong>接收版本测试</strong></p> <pre><code>接收到开发送测的apk包,并检查apk的版本是否准确,防止误测,然后开始在测试环境开展APP的相关测试工作</code></pre> <p>2.<strong>UI测试</strong></p> <pre><code>页面是否美观; 文字是否正确; 文字图片组合是否完美,操作是否友好; 菜单,对话框,窗口,控件布局是否满足客户要求; 手机横屏竖屏旋转是否展示正常等;</code></pre> <p>3.<strong>功能测试</strong></p> <pre><code>核对需求文档、进行基本功能测试 边界分析测试 重点考量异常点的发散、数据的验证(APP端提交,后台的查询是否一致)</code></pre> <p>4.<strong>兼容性测试</strong></p> <pre><code>取市场主流的手机进行测试 不同的操作系统 不同的分辨率 不同的尺寸 不同厂家的品牌机型</code></pre> <p>5.<strong>稳定性测试</strong></p> <pre><code>在APP测试中crash和ANR出现的情况时有发生,我们可以采用工具monkey,使用ADB命令进行相关测试,检查是否有crash和ANR的出现,通过查看日志文件来定位相关bug,下面是几个ADB常用的命令: adb shell monkey -p im.tower.plus.android -v --throttle 3000 30 为每一次执行一次有效的事件后休眠3000毫秒 adb shell monkey -p 软件包名 -s 种子值–忽略项–运行日志的详细度( -v -v–v最详细的 )-运行间隔(毫秒)-运行次数 &gt; 运行日志导出的路径; adb devices #查看电脑上的有多少台手机设备(包括模拟器),获取设备列表及设备状态; adb install &lt;apk格式的包名&gt; #安装 adb uninstall &lt;apk格式的包名&gt; #卸载 adb shell进入Linux系统 #查看系统中安装的所有软件的包名 adb shell ps/top #查看当前终端中的进程信息,如PID进程等; adb shell monkey # 跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等压力测试,来测试android app的稳定性。 monkey -p com.yourpackage -v 500 简单的输出测试的信息 monkey -p com.yourpackage -v -v -v 500 以深度为三级输出测试信息 monkey -p com.yourpackage --port 端口号 -v 为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息。 monkey -p com.yourpackage -s 数字 -v 500 为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错; adb shell kill [PID] #关闭该PID进程:进行进程列表查看时,每个运行的内容都有一个PID值; adb shell dumpsys meminfo&lt;package_name&gt; #查看该包名应用当前的内存使用状态</code></pre> <p>6.<strong>性能测试</strong></p> <pre><code>测试APP在不同网络速度下操作的流畅程度(FPS) 测试APP操作数据库的性能 压力测试 资源消耗(CPU 测试 内存 流量 )</code></pre> <p>7.<strong>弱网测试</strong></p> <pre><code>通过工具fiddler或360WiFi模拟各个网络的情况下,APP的数据交互、功能使用、用户体验等情况是否满足需求 也可以通过在楼梯口或地铁上或空旷,网络信号不好的地方,更加真实模拟场景来达到弱网测试</code></pre> <p>8.<strong>异常中断测试</strong> 如来电,短信,低电量测试等 还要注意硬件设备,如:待机,插拔数据线,耳机等操作会不会影响到操作 异常性测试:断网,断电测试</p> <p>9.<strong>安全测试</strong></p> <pre><code>权限问题:是否允许访问相册,拍照,录音,定位,接收推送消息 数据库隐私,加密查看数据传输是否加密(fiddler) 隐藏泄露风险:包括访问手机信息,访问联系人信息等 一般对于大多数非支付类App来说,安全性不是一个特别大的问题,只需保证登录鉴权的安全性即可 是否可以暴力破解密码---解决办法:密码输入错误次数受限或者需要手机验证码登录(自动化) 是否可以撞库--解决方式:定期修改密码 + 密码输入错误次数受限或者需要手机验证码登录</code></pre> <p>10.<strong>推送测试</strong></p> <pre><code>默认开关应该是打开的状态 未锁屏时,后台运行,消息推送是否可以正常接收 未锁屏时,app客户端使用的过程中,可以看到消息提醒并可查看 手机消息栏是否可以显示消息并且提醒,且点击查看,点击后消息在消息栏后不显示 检查Push消息是否按照指定的业务规则发送 检查不接收推送消息时,用户不会再接收到Push消息 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到Push,在非免打扰时间段内,用户能正常收到Push 当Push消息是针对登录用户的时候,需要检查收到的Push与用户身份是否相符,没有错误的将其他人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送 退出登录后,是否还接收消息(根据需求来)</code></pre> <p>11.<strong>安装与卸载测试</strong></p> <pre><code>应用是否在andriod不同系统版本上能够进行安装,运行 在安装过程是否可以取消 取消安装,再次安装是否正常 安装空间不足是否提示 安装过程中网络断开的情况下是否提示 安装过程中 来电 短信 闹铃 完成后是否提示 安装后是否正常运行,安装后的文件是否写入到指定的的目录里 重复安装,是否提示 安装完成后自动删除包装包 从不同的应用市场下载进行安装 卸载取消,是否能能够取消成功</code></pre> <p>12.<strong>升级测试</strong></p> <pre><code>当客户端有新版本时,有更新提示。 当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动App时,仍出现更新提示 当版本为强制升级版时,但给出强制更新后用户没有做更新时,退出客户端。下次启动App时,仍出现强制升级提示 当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新 当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否是新版本 当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本 在线跨版本升级后是否能够正常使用</code></pre> <p>13.<strong>离线测试</strong></p> <pre><code>很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看 在无线网络情况可以浏览本地数据 对于离线(无网络)时,刷新获取数据时,不能获取数据时是否能够给出友好提示 对于界面数据不提供离线查看,需要给出相应的提示 退出App再开启App时能正常浏览 切换到后台再回到前台可以正常浏览 锁屏后再解锁回到应用前台可以正常浏览 在对服务器段的数据有更新时回给予离线的相应提示 离线后连接到网络,是否需要从服务端获新数据</code></pre> <p>14.<strong>前后台切换测试</strong></p> <pre><code>App切换到后台,再回到App,检查是否停留在上一次操作界面 App切换到后台,再回到App,检查功能及应用状态是否正常 App切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候 手机锁屏解锁后进入App注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候 当App使用过程中有电话进来中断后再切换到App,功能状态是否正常 当关掉App进程后,再开启App,App能否正常启动 出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷 对于有数据交换的页面,每个页面都必须要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃 对于有数据的交换的页面,每个页面都必须进行前后台切换,锁屏,网络切换,app切换,电话切换,断电切换等中端的测试</code></pre> <p>15.<strong>输入法测试</strong></p> <pre><code>点击输入框弹出输入法 输入框弹出高度等于输入法弹出高度 输入框不能移动 点击输入法其他区域隐藏输入法 点击输入法的隐藏键隐藏输入法 切换到其他页面自动隐藏输入法 发送字符后自动隐藏输入法 弹出输入法后切换到横屏,输入法没有隐藏 弹出输入法后切换到竖屏,输入法没有隐藏</code></pre> <p>16.<strong>夜间模式测试</strong></p> <pre><code>打开app,调整系统为夜间模式,观察手机是否变暗 关闭夜间模式,手机是否恢复明亮 横竖屏切换夜间模式 白天、黑夜及横竖屏组合切换夜间模式</code></pre> <p>17.<strong>横竖屏切换测试</strong></p> <pre><code>关闭自动旋转功能,打开app,改变手机重心,观察屏幕变化 打开自动旋转功能,打开app,改变手机重心,观察屏幕变化 横竖屏切换时,观察手机界面ui有无特殊变形 横竖屏切换后,其他功能是否正常</code></pre> <p>18.<strong>自定义字体测试</strong></p> <pre><code>手机系统设置为自定义字体,观察app弹出输入法时字体是否为自定义字体。(有的app自带输入法) 手机系统切换输入法字体,观察app弹出输入法时是否正确。 安装新的输入法,手机系统设置为新的输入法,观察app弹出输入法 卸载已定义的输入法,观察app输入法是否为系统默认输入法 输入法升级后,有无兼容性问题</code></pre> <p>19.<strong>上报测试</strong></p> <pre><code>crash上报,通过查看后台,crash数是否对应增加 埋点上报,通过在埋点处点击一次或者多次,查看后台,观察埋点数是否对应增加</code></pre> <p>20.<strong>离线测试</strong></p> <pre><code>很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看 在无线网络情况可以浏览本地数据 退出App再开启App时能正常浏览 切换到后台再回到前台可以正常浏览 锁屏后再解锁回到应用前台可以正常浏览 在对服务器段的数据有更新时回给予离线的相应提示</code></pre> <p>21.<strong>免登录测试</strong></p> <pre><code>很多应用提供免登陆功能,当应用开启时自动以上一次登录的用户身份来使用App 考虑无网络情况时能否正常进入免登录状态 切换用户登陆后,要校验用户登录信息以及数据内容是否相应更新,确保原用户退出 根据Mtop的现有规则,一个账户只允许登陆一台机器。所以,需要检查一个账户登录多台手机的情况。原手机里的用户需要被退出,给出友好提示 密码更换后,检查有数据交换时是否进行了有效身份的校验 支持自动登录的应用在进行数据校验时,检查系统是否能自动登录成功并且数据操作无误 检查用户主动退出登录后,下次启动App,应停留在登录界面</code></pre> <p><strong>备注</strong></p> <pre><code>测试若有问题及时反馈开发并进行跟踪bug,直至bug修复及相关模块不受影响 再进行正式环境进行测试,输出测试报告等测试文档 当然测试过程中可以适当根据项目的时间需求进行改善测试的流程,分别可以考虑敏捷测试和常规测试或TDD测试模式,一切以保障产品质量为导向</code></pre> <p><strong>Android和iOS的区别</strong></p> <pre><code>两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。 IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。 Android长按home键呼出应用列表和切换应用,然后右滑则终止应用; 多分辨率测试,Android端20多种,ios较少; 手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);ANR 操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确; push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示); 安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载; 升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法) 并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停; 数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等; push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确; 分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确 触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等</code></pre>

页面列表

ITEM_HTML