Mobile DevOps
有点没看懂,这是个理念,还是个具体的工具?
最后这个问题真不好回答,各有好处。
继续手机厂商,好处是你的一些经验可以延续,但也会导致你的经验继续限制在这个领域,容易越走越窄。
到小公司,好处是能接触更全面(不仅仅是 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 浏览器吧?
直接贴代码呗?这样才好根据具体代码给建议。
建议先总结下自己工作中有什么瓶颈,有什么技能可以用上。然后去学这项技能。
可以分享下你这 3 年的大致经历么,这么一上来就问,只能给类似毕业生的回答(学测试基础理论、学编程语言、学自动化),不一定合适你。
如果从解决方案角度,换台电脑是最简单便捷的。
如果要寻根究底,从你上面的替换法可以看出非手机端问题,应该是电脑端 adb 问题。建议基于 adb server 日志探究吧。怎么拉日志,可参考:https://www.jianshu.com/p/7fe3e3e286ba
个人思路:
先通过 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 在你这个环境下是怎么串起来的。
建议另外开一个帖子,把你的具体情况和问题点说清楚吧?
并行多少台设备?有试过换台电脑或者换台手机么?
善用社区的搜索,给你举个例子:
改变不了的困难点是什么?资源(人)?时间?
看你的描述应该是这个团队的 leader ,这些应该是有足够的权限和能力去改变的。如果真的没有,可以找你的上级沟通下,如果上级支持,那你就会获得资源和时间;如果不支持,那你也没啥需要想的,说明维持现状就好了,只是你要想想自己再过几年的前途,继续保持现状是否合适了。
比较好奇是到哪些学校校招的,这么多研究生来投测试开发?
虽然也理解研究生在项目经验和学历上确实大多能直接吊打本科生,但这个比例也太出乎意料了。
android: content-desc
iOS: accessibility-id
这 2 个本身设计都是给残疾人读屏软件用的,基本不会有业务逻辑用到,可以放心加。只是基本这个是额外工作量了,建议可以让研发搞一些 hook 之类的给全部元素按指定规则直接加,一个个加太累了。
参考 appium 官方文档:http://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies
给我我也只能想到这些,可能会稍微多一个,就是问下函数的使用场景是什么,确认下自己对 "好" 的理解是否符合这个场景的需要。
裸辞的话不建议直接离职,未来不确定性太大了,说不定你的下家和这家也差不了多少。
可以骑驴找马,先不离职,外面找到合适的再离职。