• 代码块不要用引用格式……有代码块的格式的,请看页面底部的 markdown 说明。

    你删了还得再编译个 jar 文件给它啊。
    话说你那个帖子是 1.0.0 的了,现在不一定适用了。

  • monkey 测试请教 at 2015年03月31日
    1. monkey 主要用处是快速测试稳定性。项目初期会有很多 crash/anr 很正常(你测的都是上架了的应用,crash 和 anr 当然很少),而且初期主要注重功能是否正确实现,所以用 monkey 不多(先能用,后面再看能不能稳定地用。连基本功能都没做好,稳定性再好也没意义)。 当然也不是说项目初期就肯定不跑 monkey,主要取决于项目具体情况。
    2. 覆盖率这东西和 monkey 没啥关系啊。你不可能让随机事件能有很好的覆盖率。覆盖率是单元测试/功能测试做的事。
    3. 你这个情况我估计是 anr,有可能是 monkey 跑得太快系统反应不过来。这是性能引起的,seed 值一样只能保证随机事件流是一样的,但保证不了跑的过程中性能表现都是一样。
    4. 我不清楚你们是什么应用,但我用 monkey 一般比较少切换应用,主要是因为我主要关注我自己的被测应用(如果我的应用要调用其他应用那是另一回事,那样的话还是要关注一下被调用的应用,但一般不会用 monkey 来做),系统应用的 crash 如果和我的应用本身无关,那我没必要关注这个(你关注了也改变不了什么)。
  • 木有权限?貌似 appium 是用类似外部启动的方法来启动你指定的 activity 的。
    那你试试不指定 activity 来启动?

  • 两个 activity 都有 log 吗?
    你可以用 logcat 看看到底起来的是哪个 activity。我从 appium 的 log 看到就是起来的不是.activity.login.WelcomeActivity,而且 appium 等待了一段时间后这个 activity 还是没起来,所以才会报错。

  • #2 楼 @wangcityboy 哦,明白了。

  • #45 楼 @james88233 appium 既可以测 iOS,也能测 android 的啊。测这两个平台除了一些设置参数不一样大部分一样的。
    python 简单是相对于 java,C 而言的。无论学什么,多练都是必须的。如果它简单到一两天就能熟练使用,那么它能做的事情会变得很有限。
    入门 python 推荐看看《a byte of python》,网上有免费 pdf

  • 赞!!

  • 个人建议,个人学习记录还是放回你自己博客吧。后面你可以放个链接过来 testerhome。
    按照你的发帖速度,我怕会搞到首页大部分帖子都是你的帖子。

  • 你确定.activity.login.WelcomeActivity是 launcher?
    从 log 来看,启动的 activity 是.activity.login.VerifyActivity,不是.activity.login.WelcomeActivity
    我猜测.activity.login.WelcomeActivity是启动引导页,只有首次安装才会出现。

  • 这 log 的长度太。。。
    我提取一下关键 log:

    2015-03-30 09:36:44:772 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:44 CareydeMac.local /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/libexec/lsd[10968]: LaunchServices: Failed to set the data protection class for /Users/carey/Library/Developer/CoreSimulator/Devices/117A2222-200A-4899-B449-59A79E4E3CE2/data/tmp/com.apple.IconsCache/com.yy.enterprise.yyvoice_CFBundleIcon[15]
    2015-03-30 09:36:45:029 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac.local mediaremoted[10945]: Property list invalid for format: 200 (property lists cannot contain NULL)
    2015-03-30 09:36:45:077 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac com.apple.CoreSimulator.SimDevice.117A2222-200A-4899-B449-59A79E4E3CE2.launchd_sim[10938] (UIKitApplication:com.yy.enterprise.yyvoice[0x65ae][10983]): Program specified by service does not contain one of the requested architectures: �\�
    2015-03-30 09:36:45:085 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac.local SpringBoard[10951]: Unable to get pid for 'UIKitApplication:com.yy.enterprise.yyvoice[0x65ae]': No such process (err 3)
    2015-03-30 09:36:45:092 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac.local SpringBoard[10951]: Unable to delete job with label UIKitApplication:com.yy.enterprise.yyvoice[0x65ae]. Error: Operation now in progress
    2015-03-30 09:36:45:092 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac.local SpringBoard[10951]: Application 'UIKitApplication:com.yy.enterprise.yyvoice[0x65ae]' exited for an unknown reason.
    2015-03-30 09:36:45:108 - info: [IOS_SYSLOG_ROW ] Mar 30 02:36:45 CareydeMac com.apple.CoreSimulator.SimDevice.117A2222-200A-4899-B449-59A79E4E3CE2.launchd_sim[10938] (UIKitApplication:com.yy.enterprise.yyvoice[0x65ae][10983]): Trampoline was terminated before jumping to service: Killed: 9
    

    根据Program specified by service does not contain one of the requested architectures找到https://discuss.appium.io/t/appium-v1-3-0-beta1-xcode-6-1-failed-looking-up-pid-of-launched-process/1015
    你按照里面的解决方法试试?

  • #11 楼 @doria 神马情况……我只是转载的……

  • 找到这个:
    https://discuss.appium.io/t/error-waited-20-secs-for-selendroid-server-and-it-never-showed-up/722/12
    应该不是 appium 的问题,是 selendroid 的问题。改一下 selendroid 版本吧。

  • 有点奇怪啊,怎么两个都有App is installed!这个 log?
    google 了一下,貌似是ios-deploy的问题:
    https://github.com/phonegap/ios-deploy/issues/11

  • 好文,继续加油!
    PS:ll是一个 alias,它实际执行的就是ls -l。不过不是每个系统都默认加了这个 alias 的。

  • 你有试过单独用 selendroid 来测吗?
    你参考的链接里面的内容貌似已经很旧了(appium 1.2.x 的了)

  • #3 楼 @weamylady 有点类似。fake server 可以看做是一个挡板。

  • #43 楼 @james88233 别叫我大师,我还很年轻……
    新发现是指什么新发现?最近在学习 appium 源码 +android 开发。
    语言的话我主要用 python 啊。我目前做自动化测试主要用 python,写起来比较简单。

  • #1 楼 @xwgoss 你可以理解成把被测应用中各个真实模块的引用 (classpath) 用测试应用的对应 fake 模块代替,这样就能只测试指定模块,其他无需测试的模块就直接用 fake 代替。
    文中的例子就是与其搞个 fake server(策略 2)来增加维护工作,还不如直接把应用的网络连接模块换成 fake 的。工作量少很多(fake 模块工作量比 fake server 少多了,只需要按照 API 来直接返回对应值就好了,至少不用管网络方面的东西了,因为压根就没有用到网络)

  • 我在我的博客里面对文件夹的内容作了更详细的介绍,大家有兴趣可以看一下:http://chjvps.com/blog/?p=758

  • 个人经验,如果是在 E2E 测试中遇到这类 bug,那么环境方面的日志(如网络包记录)会产生很大帮助(网络本身就是 E2E 测试中最不稳定的因素)。同时一定要关注是否有内存泄露!很多时候应用无故 crash 且遇到的前置条件各不相同,都是由于内存泄露到最后被系统强制关闭了。
    另外,回忆操作步骤也是很重要的一步。我测试中曾经发现过一个自己以为是偶现的 bug(前面很多个版本都没出现过,而且也没有明确重现步骤,重现概率为千分之一不到),现象是在某个界面进行点击操作,有时候软件会 crash。后面回忆操作时和平时的主要区别是除了手指外,手掌也碰到了屏幕某个区域,最后发现是程序隐藏控件没做好处理,当点击到隐藏控件所在位置时隐藏控件的点击事件被错误地被触发了。开发也说完全想象不了这样的 bug 怎么能被纯手工发现。。。

  • [ZZ]Android UI Automated Testing at 2015年03月28日
  • Android 应用测试总结 at 2015年03月28日

    干货!收藏了!
    另外,多语言测试补充一点:当文字长度不一致时,UI 界面是否能正常适配。如果有自动截断,该处使用自动截断是否合适(对于英文 + 中文这类差别很大的多语言这个必测)

  • [ZZ]Android UI Automated Testing at 2015年03月28日

    受益匪浅。我自己翻译了一下,有兴趣的可以来看看:http://chjvps.com/blog/?p=751