• 个人经验,比较有效的办法还是把大项目按功能点拆细,这样一部分功能点早点提测,测试早点介入,整个项目周期可以相对缩短。

  • 内网和外网是完全隔离的么?有即可以连内网也可以连外网的机器么?如果有,那利用那台机器就好了。

    PS:你都纯内网到这程度了,就算通知到人,人也得到公司能连到纯内网的电脑才能去修复错误吧。这种通知有必要么?

  • 日志监听:
    python logging 模块提供的 handler 说明:https://docs.python.org/zh-tw/3/howto/logging.html#useful-handlers

    测试结果监听:
    unittest 可以基于 TestRunner 里面的 TestResult 来做,可以参考 https://github.com/SeldomQA/HTMLTestRunner/blob/master/HTMLTestRunner.py 里面 class _TestResult(TestResult): 这个部分的实现

  • 看你做这个活动的目的。

    如果只是分享交流,更关注分享者的收益(自我总结、锻炼演讲交流能力、提高在组织内部的影响力等)。可以找有比较不错经验或者最近表现出色的同学来做个分享,只要分享内容对团队有帮助即可,最好是实战经验的分享。这块可以 1-2 周来一次。

    如果是培训或者技能提升,更关注参与者的收益。那建议有专门一个人或者一个小组去设计课程(比如 UI 自动化入门、性能测试基础等),然后 1.5 小时内,三分之一授课,三分之一现场小组练习,最后三分之一各组分享自己的练习成果和心得。这类课程的设计成本比较高,但一般在技能收获方面效果会比较好,参与者成本不高,可以一个月一次周期性持续开展获得更高收益。

    至于做题考核类嘛,可能做比赛比较适合。我们之前组织过 code review 比赛,客观题比代码规范、代码片段中找 bug 的能力,现场 20 分钟完成;主观题给一段项目代码去模拟真实 CR ,提出意见以及优化建议,并实施优化,一周时间完成;比赛现场每组 5 分钟左右分享给出的意见建议和优化后代码,最后专家评委评分选出一二三等奖,发出奖品。不过比赛的成本更高,参与者和组织者都高,一般间隔时间最好是半年到一年。

  • 技术上都可以,实际怎么做方便就看你想要达到什么样的效果了。

    可以直接在日志框架和测试框架加新的自定义 handler ,每条日志以及每个用例执行结果都记录到数据库,网页做定时刷新,定时去拉数据库数据。

    如果不想搞太多额外的开发,其实直接日志打印到控制台,jenkins 用 console output 看也基本是实时的。唯一缺点是没有最终报告格式那么好看,和 idea 控制台差不多效果。

    另外,也建议考虑清楚这个需求的使用场景。大部分自动化测试的执行期间,是无人值守的,基本上都是跑完了一段时间,才有有空人看下报告,甚至跑失败告警了才有人去看报告。不一定有太多跑的过程中时不时去看一眼进展的场景。如果想知道进度百分比,jenkins 根据历史执行时间预估出来的进度条也可以作为一个不错的参考。

  • 那可以换一种方式,在你的手机上安装测试应用?

    能用沙箱或者测试账号最好,但如果真的非得用真实账号(如线上验证),基本就是要公司征集甚至考虑贡献自己账号了。

  • 问题一,我也看不出来有啥错。不过我这个是 1 年前的 demo 了,不确定会不会是官方改了内容

    问题二,我这周抽空再试试官方新的 repeater console 模块吧。老模块印象中没有这个接口,所以也没遇到过你的报错。

  • 如果要涉及真正金钱交易,那就得真实账户了。

    现在都实名制,如果你能说服领导贡献账号出来也可以,但大部分情况下应该还是用自己的比较便捷,至少有需要收验证码不用等别人。至于安全嘛,只要你及时注销没啥不安全的,反而可能会触发支付工具的安全策略(登录设备老是换),让你每次都得输手机验证码确认本人,某个角度说反而更安全了。

  • 高效 Mobile DevOps 步骤 at November 02, 2020

    Mobile DevOps

    有点没看懂,这是个理念,还是个具体的工具?

  • 编辑了 at November 02, 2020

    最后这个问题真不好回答,各有好处。

    继续手机厂商,好处是你的一些经验可以延续,但也会导致你的经验继续限制在这个领域,容易越走越窄。
    到小公司,好处是能接触更全面(不仅仅是 app,而是连带前后端整套系统,甚至能通过交流熟悉公司业务),缺点是小公司如果本身不稳定,也会有一些风险。

    建议你先都去投简历或者找内推,面一下。拿到 offer 结合薪资和具体这家公司的情况,再纠结选哪个吧。

    另外,如果精力允许,学历这块还是补一下吧。想去大一点的厂,学历还是比较重要的。

  • 从功能测试角度,确实两个场景都要考虑。
    但从自动化角度,个人觉得避免用覆盖安装,免得由于上一个版本留下的一些记录,影响下一个版本的测试。

  • 建议统一用 jar 包来运行吧。
    windows server 和普通进程运行环境差异挺大的,连运行用的用户都不大一样(印象中是统一用 administrator ),所以环境变量啥的也很大可能不一样。

  • 建议先用方法 1 试试,看是否降低到了可以接受的水平?要彻底解决,估计得改造 adb 了。

    还记得云测刚兴起时,各个大厂出来分享,都在各种吐槽 adb 稳定性差,需要各种重试或者改造。

    PS:比较好奇,为啥连其他电脑没问题?Logcat 是获取手机端日志的,这么看问题在手机端,那不应该换了电脑就没问题呀。

  • 提个优化建议,int(tel) 写那么多次不是太方便,建议弄一个 tel_int 的变量存起来,后面比较的时候直接用这个变量,会更方便。

    另外,不知道你是纯练习 if else 用还是什么用途?对于判定电话是否有效和运营商这个场景,一般建议用正则表达式。一个 dictionary 存储运营商和正则表配置(key 是运营商,value 是正则表达式),然后 for 循环遍历这个 dictionary ,正则匹配上则返回 key,全部不匹配就认为电话号码无效。会省很多代码,方便扩展,而且也不会出现你这里提到的类型转换错误。

  • 覆盖安装的话,缓存是会继续沿用的,即之前的状态有可能影响后面的自动化。比如登录了哪个账号之类的。

    从自动化尽量不要产生关联影响的角度,不覆盖安装会更好,或者覆盖安装后要清一下本地缓存。

  • 比较好奇,自动化的场景一般是从原有的回归用例里提取的,场景设计应该在整理回归用例的时候就做完了。如果回归用例的场景设计没做好,那就补充回归用例的场景好了,和自动化没太大关系。

    如果你说的是不知道哪些回归用例该自动化,可以考虑从优先级高到低排序,先做优先级高的。优先级定义就是如果线上出现用例对应场景不通过的情况,会造成多严重的故障。故障越严重,用例优先级越高。一般情况下,正常场景优先级是最高的,所以你现在这么做也没啥不对的。

  • 问题 1,社区有解决方案,善用搜索:

    问题 2,有个地方没看懂,测试机nodes上jenkins-agent安装成windows server,会出现python脚本无法启动浏览器问题,jenkins-agent直接双击运行则没有问题。 ,所以你可以运行和不可以运行,两个场景的区别是什么,可以详细说明下吗?

  • 现在用到了,重新学习,不知道从哪里入手了

    具体说下哪部分用到了要重新学习?这个部分目前自己水平大概到什么程度?这样具体一些好回答。

    不过按你前面回答,建议你可以出来走走,不一定跳槽,也可以参加一些沙龙之类的交流,扩大一下自己的视野。多了解更广阔的世界,了解其他人、其他公司,对减少迷茫也会有帮助。

    我自己第一家公司 2-3 年左右也是有点迷茫,跟着做完和落地一个自动化测试框架,觉得自己看到的终点已经到达了,看不到后面的风景,每天都在重复。直到来到社区,深入 appium,才知道自己只是井底之蛙,后面的风景多着呢。

  • 我之所以觉得是 gitlab 配置的问题的原因是,用 Jenkins 运行好像没有像运行 github+jenkins 那样有一个拉取代码的过程,虽然 github 应该会很快。

    把你全部日志贴上来,特别是最开始的 50 行?这个拉取代码过程应该都会有的,只是快慢不同而已。日志里都应该会有。

    另外,针对 chromedriver.exe 可能有多个的,删除后还是不行,可以试下改下代码,使用指定路径的 chromedriver 试试:

    self.driver = webdriver.Chrome('C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe')
    

    PS:多口问一句,你确认你电脑只装了一个 chrome 浏览器吧?

  • python 处理数据 at October 30, 2020

    直接贴代码呗?这样才好根据具体代码给建议。

  • 建议先总结下自己工作中有什么瓶颈,有什么技能可以用上。然后去学这项技能。

    可以分享下你这 3 年的大致经历么,这么一上来就问,只能给类似毕业生的回答(学测试基础理论、学编程语言、学自动化),不一定合适你。

  • 如果从解决方案角度,换台电脑是最简单便捷的。

    如果要寻根究底,从你上面的替换法可以看出非手机端问题,应该是电脑端 adb 问题。建议基于 adb server 日志探究吧。怎么拉日志,可参考:https://www.jianshu.com/p/7fe3e3e286ba

  • python 处理数据 at October 30, 2020

    个人思路:

    先通过 sql 取到所有素材:

    select 
    CONCAT(a.plan, '_', a.code) as key,  
    CONCAT(if(b.A1=1, 'A1|', ''), if(b.A2=1, 'A2|', ''), if(b.A1+C=1, 'A1+C|', ''), if(b.A1+D=1, 'A1+D|', '')) as value
    from 表1 as a left join 表2 as b 
    on a.plan_name = b.plan_name where a.plan_name = 'name2'`
    limit 1
    

    ,然后 value 处理下,去掉最后的|,再根据你的结构把 key、value 拼起来。

    如果要遍历所有 plan_name ,那前面加个去重获取全部 plan_name 的 sql ,然后用一个循环遍历 plan_name 就好。代码应该不会太复杂。

  • 好吧,大致看懂了。

    • 你可以排除 gitlab 这个原因了,gitlab 或者 git 都只管代码,不管环境。你现在的配置能保障 pycharm 拉到的代码和你 jenkins 拉到的代码一样,那这个部分的职责就完成了。

    • selenium 获取具体 webdriver 执行文件,默认是通过遍历环境变量里配置的路径实现的。从现象上看,chromedriver.exe 在你这台电脑有不止一个,而且版本不一样。可以所有盘都搜索一下,把多余的都扔到回收站,做到这台电脑只保留 1 个 chromedriver.exe 文件,然后再试试。

  • 怎么确定的?可以详细说下吗?

    提醒一下,不能认为用的同一台电脑就确定一样的哦。加载的环境变量和配置不一样,最终用到的版本也会不一样。jenkins 打开的 shell 本身就和我们在操作系统界面打开的有差异的,就算同一台电脑也有差异。

    PS:有点没看懂正文的内容和 jenkins 有啥关系,标题有提到 jenkins ,正文完全没提及。建议也详细说下到底 jenkins、gitlab 和 appium 在你这个环境下是怎么串起来的。