• #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 怎么能被纯手工发现。。。

  • Android 应用测试总结 at March 28, 2015

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

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

  • #7 楼 @601068603 对。接下来的考验的就是持久力了。

  • 想先问一下,你一开始那个错误出现的时候 session 是开着的吗?

  • #2 楼 @weamylady 嗯,电脑问题的话即使你找到原因花费时间也会很长。一般查 log 都查不到的问题都可以直接换电脑试试了。

  • #4 楼 @aubrey 你这个和帖子内容有啥关系。。。

    查到一个小错,优先级为 trival: 语言(Android) 应该是 Java

  • 。。。别把我当大神了。。。
    你这个情况我目前没遇到过,但我遇到过 adb 死活起不来的情况(输入后一直卡在那里,只有 ctrl+z 能强制退出),虽然已经弄到能把 log 打出来了,但通过 log 还是看不出具体原因。
    后面时间紧,直接换台电脑解决了。

    按照我目前理解,Appium 在这一部分应该只是调用了 adb,不过你提到的版本我没用过,我也不是很清楚。先 Mark 下,我晚些看看这两个版本的调用 adb 源码是怎样的。

  • #4 楼 @lovelorn0327 提醒一下,如果 adb server 没开的话,直接输入 adb devices 会有开 server 的信息,你要过滤掉开 server 的信息。

  • 有具体 Log 吗?

  • 对于你目前的需求,这个应该就够了。没必要纠结写得好不好,能用、好用最重要。

  • 这个开源团队搭源码环境的时候很多人遇到过,原因是 appium 一个依赖包(你图中的是 utf-8-validate)在 windows 上运行需要使用 VCBuild.exe 来编译。
    如果只是使用的话,直接用封装成 exe 版本的 appium 最方便,而且还能很方便地切换不同 appium 版本。
    这个严格来说也不算 appium 的问题,它只是依赖了一个对 windows 不大友好的包而已。。。

  • 有个小问题,你滑动的坐标是centreY +- 30,这里的 30 应该可以通过计算得到(比如通过控件高度来计算滑动一个元素所需要滑动的距离),而不需要作为固定值写在方法里吧?
    当然,如果你只有这个控件需要用到这个方法,写在里面问题应该也不大。

  • Python behave in BDD at March 26, 2015

    #2 楼 @lucasluo 不客气。我也通过帖子学到不少。

  • Python behave in BDD at March 26, 2015

    贴个文中用到的第三方库链接:http://pythonhosted.org/behave/
    看完后发现没找到里面用的库的链接(我觉得这种规范性的东西应该会有第三方库实现),然后搜了一下,应该就是文中用的那个库了。

  • appium 入门建议先把这里的文档看一下:
    https://github.com/testerhome/appium/tree/master/docs/cn
    看完后你就对 appium 有一定了解了。
    至于脚本的语法,你可以先学学 webdriver api,网上有很多教程的。

    不懂的地方先看官方文档,这样效率最高。

  • 从 log 看到是在这个位置开始出错的:

    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: MS:Notice: Injecting: (null) ReportCrash
    
    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Error>: task_set_exception_ports(B07, 400, F03, 0, 0) failed with error (4: (os/kern) invalid argument)
    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: ReportCrash acting against PID 2205
    
    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 diagnosticd[705] <Error>: error evaluating process info - pid: 2205, punique: 2205
    
    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: Formulating crash report for process ScriptAgent[2205]
    
    info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 backboardd[74] <Notice>: ALS: SetDisplayFactor: factor=1.0000
    
    info: [debug] [INST STDERR] 2015-03-26 11:50:53.978 instruments[37140:6307] Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
    

    Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException搜索,在 github 找到个类似的 issue:
    https://github.com/appium/appium/issues/3687
    你是不是没有打开开发者选项的Enable UI Automation?(我不大记得中文叫什么了)?

  • #18 楼 @uncle_mm 能解决就好!其实我之前也只知道>>><这种重定向第一次玩。。。