• openstf 模块解读--websocket at 2017年05月08日

    lifecycle 那段,应该是用于通过 ctrl+c 关闭 stf 服务时,能给当前正在运行的每个模块发送关闭操作来实现友好关闭(比如释放资源)的。基本上每个 stf 的模块都有类似的方法。

    lifecycle 相关的代码:

    ...
    function Lifecycle() {
      this.observers = []
      this.ending = false
      process.on('SIGINT', this.graceful.bind(this))
      process.on('SIGTERM', this.graceful.bind(this))
    }
    ...
    Lifecycle.prototype.graceful = function() {
      log.info('Winding down for graceful exit')
    
      this.ending = true
    
      var wait = Promise.all(this.observers.map(function(fn) {
        return fn()
      }))
    
      return wait.then(function() {
        process.exit(0)
      })
    }
    
  • 偶的错,当时写那篇 docker selenium 文章的时候更多的是关注 selenium 部分,所以没放在 docker 板块。我看到刚刚管理员已经移到 docker 板块了。

  • 做得很深入呀,赞~

  • zip -r compressed.zip path/to/dir -x *.git*

    # 压缩同时不包含 .git 文件夹
    zip -r compressed.zip path/to/dir -x \*.git\*
    

    收集覆盖率这种场景经常需要把本次构建的整个文件夹(包括源码和生成的 class 文件)压缩上传服务端。此时 .git 文件夹一般是不需要一起上传的,通过这个命令就可以排除这个文件夹。

    PS:一直在用一个很好用的 linux 命令帮助工具:tldr 。现在遇到命令忘了参数怎么写都直接用这个工具来查。tldr 是 too long don't read 的缩写,也非常好记。

  • 话说,你 sonar 里面 oc 用的什么插件?这几天也在调研这个,今天试着部署了一个,结果导致 oc 相关的 key 冲突,server 无法解析 scanner 上传的数据,只能把插件干掉先恢复。。。

  • jacoco 配套做得很好,而且网上实践文章也多,坑比 iOS 少很多。

  • 请跟我一起学习 at 2017年05月03日

    分享计划很好~也同意上面同学的观点,有个擂台或者相互交流的方式,能更快地促进双方的提升,顺带也能结识一些朋友。

    现在坚持业余保持每天 1 小时左右的自主学习,但因为分得比较散,有些时候偷懒没有写文章 之类的而分享记录下来,后面也得坚持下来。

  • 这个没找到合适的技术方案,jacoco 本身不具备这样的能力。而且覆盖率数据统计上也不好统计。你们现在有做这个?

  • 如果想换框架,建议你先从 iOS 有什么 UI 自动化框架开始调研起。可以 google 下 "iOS 自动化测试框架选型" ,前条搜索结果都值得一读。

  • 你的 embedded.mobileprovision 对应工程的 bundle id 有和你想重签名的 bundle id 一致不?

    mobileprovision 中绑定了开发者证书 id 、应用 id 以及 Entitlement 等信息,主要用来检测这几者是否对的上号。如果对不上号,安装时系统会自动检测到。

  • 好赞呀~尤其是平台的界面效果。相比之下感觉我们自己的平台界面 low 爆了。。。

    从项目的实践情况来看,到了这个程度基本可以找个项目试点了。我们现在在试点中,发现了以下几个主要问题:

    1. 实际迭代过程中,由于不断的 bug fix ,会出现一天一个版本的情况,导致单个版本覆盖率看起来都不高。这个技术上支持的难度比较高,还是得在流程上增加一个封版期,此期间不更改任何代码或不使用更改后的代码进行测试。
    2. 分析覆盖率报告并给出建议是个体力活,需要比较长的时间去熟悉源码并整理出报告。目前在尝试和开发合作,通过添加注释的方式增加报告本身的可读性,再看是否可以通过工具自动生成一些覆盖率建议。
  • 这部分比较细,估计没有文档记录,直接看 appium 相关源码可能更直接。

  • 当你有超过 10 个用例,需要实现诸如报告生成、失败后自动重启应用、失败后自动截图、失败后重跑用例、断言校验结果甚至并行执行用例等等需求时,你就知道为啥需要用类似 unittest 这样的用例执行管理框架了。

  • 很实用的技巧,赞~

  • 不是这个,是你用脚本获取到的 page source ,不是浏览器界面或者 uiautomaterviewer 获取的。

  • 把你 page_source 的输出贴上来?

  • 木有。。。

  • 建议不要随便用 “大神” 这样的称呼,社区里面对这个称呼欢迎度一般。

    另外,你第二个截图里面,是先切换了 webview 再查找原生控件的,顺序错了。切换 webview 后只能找到 webview 里面的网页控件,无法找到原生控件了。

    至于为何找不到元素,可以先在你查找元素前增加一个输出页面 xml 布局源码的函数查看布局情况(函数印象中是 driver.page_source ,建议你查下 api 文档),确认下是否布局里面就没有你这个元素。

  • 出行交通工具 at 2017年04月27日

    地铁 40 分钟 + 走路 15 分钟

  • 你现在的问题是 adb devices 可以显示设备,但 Provider 无法使用设备。

    adb devices 可以显示设备说明你的机器和设备之间的连接是没问题的,provider 无法使用,意味着 provider 无法和手机上的 stf service 连接,所以无法使用(这个 service 用于传图像信息等)。

    当 provider 开着的时候,连接手机会自动安装 stf service 这个 android 应用,你可以往这个方向检查下这个应用是不是没有被成功安装。

  • 建议你另外开贴来问吧。把你的完整脚本、执行命令、错误信息、环境信息等都发出来。

    现在是没看懂你的报错是什么。。。另外,你的代码里有个很低级的错误,就是 try 和 except 里面都有个 return 。你一 return 不就退出这个函数了么,后面的 click 还怎么执行。。。

  • 可以看下 http://www.techrepublic.com/article/keyboard-shortcuts-in-bash-and-zsh/

    试了下,在 mac 命令行 (zsh 或 bash) 下,alt + 方向左键 可以做到按空格来跳光标,即每次都是跳到一个空格符的后一个字符,ssh 连接了远程机器后这种方法也是生效的。

    不过不确定 windows 下是否也同样适用。

  • 从日志里只能看出 Coverage.info 这个文件有问题,没有有效的记录。因为不知道这个文件是怎么来的,内容是啥,也无法追查下去。

    建议把你详细的部署步骤、操作步骤(包括你觉得和报错有关的所有细节)和出错日志都发出来?

  • 不需要什么额外配置,和你做普通真机调试差不多。

  • 检查下安装 stf service 这个 apk 的时候是不是没有允许安装?