最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: 1 2 3 4 5 adb shell monkey -p com.**** -v-v-v --throttle 300 --pct-touch  30 --pct-motion 20 --pct-nav 20 --pct-majornav 15  --pct-appswitch 5 --pct-anyevent 5 --pct-trackbal…
最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: adb shell monkey -p com.**** -v-v-v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-sy…
一.前言: 作为一个合格的iOS开发者,除了具有规范强悍的编码能力外,还应该具有过硬的查错纠错能力.在项目运行时,程序崩溃是不可避免的,遇到这个问题,有时会出现一大堆的crash日志,艹,貌似看不懂呀.其实没有那么可怕,我们可以将这些日志格式化,通过它来快速定位问题的所在,以便迅速搞定它. 二.分析: 首先我们来看一个crash日志,大略的介绍其中的几个重要的关键词: 关键词解释: 2.1. 进程信息第一部分是闪退进程的相关信息: Incident Identifier : 是崩溃报告的唯一标识…
搭建环境这章节没做详细说明,因为我是前期做APP自动化是已经将 SDK 以及JDK给安装配置好了,这次是直接上来演示monkey的功能点以及运用 一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行 二.Monkey是什么? Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常.和MonkeyRunner几乎是完全不同的,Mon…
问题定义 app发布后经常容易出现各种诡异的crash, 这些crash固然可以通过各种崩溃分析服务去定位. 但是的确很影响用户体验. 在crash分类中有一类是后端接口引发的. 比如常见的引发app crash的原因 接口自身变更, 接口失效或者超时, 比如用户进地铁 接口格式变更. 字段缺失 接口内容变更, int string格式搞错了. 某些字段原本是有值后来就变成了null 一旦出了问题, 后端背锅或者做兼容是常见的方案. 但是对于app自身来说,也需要加强健壮性测试. 健壮性的英文名…
注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环境自带SDK,方便下一步配置adb.下载Android Studio的参考资料戳这里 在Android Studio中查看SDK路径的方法见下图: 配置adb环境变量: vim  .bash_profile 添加 ANDROID_HOME=/Users/xxx/Library/Android/sdk…
在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 <null>,客户端解析时会 Crash,为了增强程序的健壮性,减少 Crash 的发生,可以使用 NullSafe 这个类别.它对不识别的类型返回 nil,而不是抛出异常,它减少了例如因为 JSON 解析中 数组或字符串为 null 时导致的 Crash.这些异常对客户端来说是不可预期的. 使用时只需要把 NullSafe.m 文件拖进工程就可以了,它在程序运行时自动加载,你不需要再导入其他头文件了. 如果想要禁止 NullSaf…
这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析有缺陷的xml文件 3.regex    更强大的正则表达式引擎 1.cchardet cchardet模块用于检测文本的编码. 安装后,如果服务器不发送网页.xml的编码(这种情况很罕见),InfoPi会调用cchardet检测编码. Linux安装命令: sudo pip3.4 install…
strcpy   函数的原型是: char * strcpy(char * strDest,const char * strSrc);    功能:把从strSrc地址开始且含有NULL结束符的字符串复制到以strDest开始的地址空间,返回指向strDest的指针. 说明:strSrc和strDest所指内存区域不可以重叠且strDest必须有足够的空间来容纳strSrc的字符串. 与strncpy   函数进行对比: strncpy  函数的原型是: char * strncpy( char…
最近出了2个类似问题,此处写下,以作为警醒 问题1: 背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动 需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制.用户等级和代金券等级相同时,用户可领取到这张代金券:否则代金券显示"等级不符不可领取". 于是我设计用例时这样的: 代金券领取等级: 代金券1(领取等级0),g1(领取等级1) 用户等级:user1(用户等级go) , user2(用户等级g1) 即可以实现以下场景: user1 -->…