前言
自2015年10月底加入Pactera Edge以来,我一直服务于客户的Quality Engineering项目。这之间经历了很多的技术变革,包括探索,实施,维护,淘汰等一整个流程。下面就写一下项目中 UTAP(unified testing automation platform)的演进之路。
一开始进入项目接触的是ruby + cucumber的web UI 自动化测试框架,客户的大部分项目的UI自动化测试都集成在这个框架里,但是因为代码越来越庞大,维护起来越来越不方便,而且当时是用jenkins串行执行test suit,400多个Jenkins job跑在25个以上的jenkins 实例上,跑一次release大约需要2到3个小时的时间。这种方案非常的费时费力。
为了解决串行跑case费时费力的问题,我们引入了distributed automation(后面我们简称DA),使用的技术栈是selenium2 + AWS, 用户只需要从jenkins build传入需要使用的浏览器类型、需要跑的case个数就可以并行的跑test suit里的case,这样大大缩短了跑case的时间,每次build基本都在半个小时左右就可以跑完所有的case。
有了DA,可以并行跑case之后,很多项目的开发人员又提出了一个比较费力的问题,那就是项目的产品是用java写的。工程师大多是java出身,对ruby + cucumber的自动化测试框架上手很慢,所以我们就开发了scala + scalatest web UI自动化测试框架,scala也是跑在JVM上的,可以跟Java无缝衔接,所以java开发人员很容易上手。这在一段时间里解决了开发人员写自动化测试脚本的问题。但是scala + scalatest写web UI autmation还是太笨重,后来我们又开发了其他的自动化测试框架,比如nightwatch + cucumber, cypress,以及 java+selenium这个很多开发团队自己选择并且开发的web UI autmation 方式。
解决了并行跑case和自动化测试框架可以多样化的问题后,为了方便开发及测试人员分析失败的自动化测是case,我们又开发了基于nodejs express的dashboard 在自动化测试框架里跑完case后,我们会把report存进mongo db里,这样用户跑完一个build,不再只能在jenkins里分析失败的case,而是可以在我们开发的DA dashboard上一目了然的查看这个build总共跑了多少case,多少成功了,多少失败了,多少skip了;失败的case的html report和截图以及splunk log等等都可以很方便的查看。
至此,用户跑和分析automation的工具基本齐备,有很长一段时间很多用户都在使用这套工具。
但是这套工具还是存在一些问题:一是DA是用的AWS的ec2作为hub和node来跑case,而hub的创建和启动是需要挺长时间的,所以DA的解决方案里是创建好hub后一直保留,用的时候start,用完stop,但是这样还是会浪费hub休眠时候的一些费用。二是基于nodeJs + express的dashboard开发不够迅速,用户需要的图表需要2到3周的开发和测试才能上线。为了解决这两个问题,便有了后来的第二代DA。
第二代DA使用了kubernet技术,hub可以即时创建,使用完毕即时销毁,因为k8s的deploy所需时间很少,而且aws也提供了eks,所以既满足了hub的迅速创建和启动需求,又满足了使用多少消费多少的节省费用需求。Dashboard这一块呢,则是采用了kibana + elastic search的技术栈, 众所周知kibana可以分分钟创建各种类型的图表,在很大程度上解决了dashboard需求变化快的问题。只不过kibana的图表在用户数据的更新和删除需求上支持不够好,目前还没找到好的解决方案,所幸大家大多只需要查看功能,更新和删除场景较少。
测试开发岗求职准备
2.1 技能学习路线
(1) 编程语言学习
目前热度很高的编程语言有Java,C/C++,PHP,Python,Go等,虽然看起来眼花缭乱无从下手,但是要记住编程语言只是一种工具,不管什么语言只要能熟练掌握,快速高效地解决问题就可以了。
(2) 计算机基础知识
数据结构与算法
书籍推荐
适合入门:《大话数据结构》《算法图解》;
算法进阶:《算法》(第四版)、《算法导论》,理论性更强。
刷算法题【文末打包一份了免费的测试开发学习资源给大家】
除了理论的学习,更重要的是一定要多在力扣刷题,太久不刷题的话会手生,非常影响笔试面试的发挥。
力扣题库 页目前已全新改版,题型、知识点、分类标签都进行了优化调整;
企业真题题库 帮助大家全面掌握技术面试考点;
刷题新手建议从「剑指Offer」模块起步,题目比较基础,面试中出现频率也很高,时间充裕的话建议刷两到三遍。
数据库
数据库的学习笔者推荐《MySQL必知必会》《深入浅出MySQL》两本书。常用的增删改查操作、索引、索引背后实现原理、查询如何加速、事务隔离级别、内连接外连接等等,都是常见的面试题。
力扣上也有 数据库 模块的题,题目难度和真实笔试面试中写SQL的难度相一致,笔者当时刷了一半,求职过程中拿下了所有的数据库题目,强烈推荐!
计算机网络
推荐谢希仁的《计算机网络》,是很多大学推荐的教材《计算机网络:自顶向下》,很适合入门级使用,视频可以看韩立刚老师的讲解,通俗易懂,好评很多。
操作系统
偏向于概念和理论讲解推荐:《现代操作系统》、《操作系统概念》;
具体实现推荐:《30天自制操作系统》,帮助更好地理解理论知识。
(3) 软件测试理论
经典入门书籍推荐:《计算机软件测试》,全面系统地介绍了软件测试理论及相关技术。
《软件测试的艺术》:涵盖了很多软件测试的领域,列举很多模型、方法和工具,实用性很强。
(4) 测试项目或实习
了解测试岗的工作内容最有效的办法就是直接去公司实习,但如果没有时间实习的话,小伙伴们可以找一些测试项目练习:
比如结合Selenium学习Web自动化测试。通过脚本编写,有助于提高语言基础知识的理解和运用,并进行大量练习。如果用Selenium自动化脚本开发,起码要完成100个自动化测试用例,对Selenium达到熟练使用的地步,才能快速写出自动化测试用例。接下来可以结合Java中Junit或者testNG, Python中unittest,继续深入研究Selenium和一些自动化测试框架的知识。
然后还可以设计自己的测试框架,比如Python+Selenium设计自动化测试框架。网上的这类开源项目资源很多。重点是一定要把项目的细节全部搞清楚,尽量往深钻研,理清楚自己的想法。
2.2 时间规划建议
(1) 编程语言学习、数据结构和算法:2个月理论学习 + 经常刷题
这部分内容要具有连贯性的学习,编程语言基础学差不多了要学习数据结构和算法的理论知识,并且理论一定要结合刷题来巩固,才能更快上手、熟能生巧。刷题的话刚入门可能比较慢,就算一天一两道题也没关系,一定要坚持下来,慢慢就能看到成果。想去大厂的话就使劲刷,一般三四百道起步。
(2) 数据库、数据库刷题:15天理论学习 + 经常刷题
数据库知识相比难度不高,入门书籍很快就可以看完,同样需要经常刷题,巩固知识点提高速度。
(3) 计算机网络、操作系统、软件测试理论:2个月
这部分可能比较枯燥,可以在看书时结合课后题或者笔试题面试题来随时检验复习。力扣网站上也有很多相关 LeetBook,可以搭配学习~
(4) 项目或实习:3个月
做项目可以不用强求难度,但一定要确保自己学懂了每个细节,项目中遇到了什么问题,该怎样解决,效果怎么样,有没有其他方案,不同方案的区别在哪,这些常见的项目问题要在面试前提前准备好。
2.3 常见面试题举例
问:界面搜索框测试用例
答:可以从功能测试、界面测试、安全性测试、兼容性测试、性能测试、易用性测试
等角度进行回答。如:
(1)功能测试
1.搜索内容为空如何处理
2.在允许的字符串长度内外如何处理
3.合法的字符串长度后,加空格验证结果
4.验证每种合法的输入,结果是否正确
5.是否支持检索内容的复制、粘贴、编辑等操作
6.是否支持回车键搜索
7.多次输入相同的内容,查看系统的检索结果是否一致
8.搜索的历史纪录是否显示在下面
9.点击搜索,显示搜索界面
(2)界面测试
1.查看UI是否显示正确,布局是否合理
2.是否有错别字
3.搜索结果显示的布局是否美观
(3)安全性测试
1.脚本的禁用
2.SQL的注入,检索SQL SELECT语句等
3.敏感内容的检索是禁止的
(4)兼容性测试
1.多平台Windows,mac
2.移动平台android,ios
3.多浏览器火狐、chrome、IE等
4. 分辨率,操作系统版本兼容等等
(5)性能测试
1.搜索页面的链接打开速度的时间
2.搜索出结果消耗时间
3.弱网时搜索的响应时间
4.不同网速下搜索时的响应时间3g,4g,WIFI
(6)易用性
1.有联想功能
2.搜索内容与搜索结果的匹配程度
3.支持拍照搜索,语音搜索
另外还有其他场景,比如发红包测试用例、用户登录测试用例、输入法测试用例、支付功能测试用例等等,都可以按照以上角度来回答。回答的时候要注意逻辑,越细致越好。
作者:力扣(LeetCode)
链接:https://www.zhihu.com/question/298706115/answer/2085584866
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
测试开发岗发展前景
测试开发的发展方向可以分为以下几个大方向:
一是技术专家的道路。这条路比较坎坷,但也比较踏实。如果不太善于人际关系交往,不擅长管理,或者对技术有浓厚兴趣,建议在技术道路上多做耕耘。测试开发这条路根据从业者学识、经验的积累,会一路从初级上升到中级,再到高级,再到测试开发专家。
二是管理方向。这条路并不会比技术方向轻松,因为要做好各方面的协调、统筹和管理工作,同时还要提升自己的技术,来锻炼自己落地一些团队方案的能力,也更能服众。虽然说管理的「生命周期」比纯技术会长一些,但是一定不能放弃技术。
三是转岗到其他方向。比如研发、运维、产品经理等。这些都属于新出路,建议不要因为头脑发热选择转岗,因为面临新行业新环境依然需要从头学起,没有恒心和耐心很容易受挫,并且容易浪费时间。如果自身有了一些积淀,比如主流的技术栈或者业务知识很熟练,那么尝试新事物也未尝不可。
本文对测试开发岗位的招聘分析、求职准备、发展前景做了系统介绍,希望对想要求职测试开发岗位的同学有所帮助。
测试开发学习资源
这些资料,对于想进阶【自动化测试和测试开发】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….