测试开发工程师笔记

其实当年我做测试的时候,测试开发工程师这个title还不算出名,各路培训班还在着力推销"自动化测试"和"性能测试"的课程,但随着行业平均水平的提高,普通软件测试工程师也已经具备一定的自动化技能后,培训班们终于也开始增加"测试开发"的课程了。

不过说实话,看了下测试业界水平算比较高的专项培训班的大纲后,还是觉得只是编程入门(连开发入门严格来说都算不上),侧重自动化框架开发,说是自动化测试进阶班还更贴切,完全达不到真正意义上对"测试开发工程师"的要求。(当然,一些机构总结的测试面经文档还是不错的,适用于查漏补缺、自我检验)

关于岗位认知

既然是叫做"测试开发工程师",自然对"测试"和"开发"技能都有要求。

一般来说测试开发的准入的标准应该达到初级开发 + 中级测试,部分要求的高的公司是中级开发 + 高级测试

有人可能会疑惑测试的岗位要求怎么这么高?

我只能说:测试开发岗虽然多属于测试团队的职位,但这个岗位其实是开发岗,要求应该对表开发。而且,真正重视测试的公司对测试的要求一点都不低(可参考BATM的JD),如果还是不能理解的话建议好好阅读《Google软件测试之道》

关于培训班和自学

  1. 请不断锻炼自己的自学能力,信息收集能力,这是你在IT行业长期发展的立身之本。
  2. 现在网上各种培训班测试资源很多,选一个比较全面的视频课程坚持认真学完,已足够达到入行最低门槛。(能达到多高水平看你自己造化。想想当年我入行时网上基本找不到什么好的教学资源,只能默默看《软件测试的艺术》。)
  3. 除非你家不缺钱,或者你非要入行但自制力和自学能力奇差,不然不推荐报培训班。(看过某大型机构全套测试课程,基本教得都是过时的内容,而且也没教得多深入,对自学能力强的人来说真的没什么价值)

其实我也不是对培训班持完全否定意见,毕竟存在即合理,有个别专项的测试培训班内容也还不错(但其实找专业书籍或文章自学更有效率)。毕竟培训班最大的价值是可以帮一部分人节约入行时间,但是以后的修行还是要靠个人的。

职业建议

  1. 如果能坚定地将测试之路走下去,就不要太在意技术和管理岗的划分,两方面都要抓起来。因为只懂技术不懂管理不好代团队,只懂管理不懂技术容易被忽悠
  2. 要平衡好工作、生活和学习,因为只有你自己的测试综合能力提高,才能有更好的出路。(985/211/国外名校学历的朋友们随意)
  3. 觉得软件测试轻松的请趁早准备转行,也许N年前软件测试的要求不高,个别公司存在测试咸鱼。但是负责任的测试从来都是很忙的,不乏测试加班>=开发加班的,而且经常成为"背锅侠"。所以,没有点压力耐受力的还是别来做软件测试了。

面试题集

详细内容见这里

阅读推荐

  • 《软件测试的艺术》 (Glenford J. Myers、Tom Badgett) 带实习生时必推的书
  • 《Google软件测试之道》 (James A. Whittaker 、 Jason Arbon、Jeff Carollo) 看完上面那本把这本的看完,基本的测试理论基础就够用了,以后就可以按自己的学习规划去自主学习了

测试必备技能

  • Linux命令 - 基础中的基础,熟练在服务器上部署项目无论对开发还是测试都是必备技能。
  • SQL - 对金融类业务的测试要求尤其高,建议平时多准备。
  • 熟练一门编程语言 - 不要在意别人的语言之争,根据你的项目选一门编程语言(多是:Java、Python)学好,而且需要具备工程能力。
  • 架构的思维 - 不能只关注你测试的产品的bug,要把视野看得更高,了解产品的整个架构,这样更容易发现问题。
  • PPT能力 - 更贴切的说是汇报和报告能力,特别是对于QA Leader来说。
  • 工程能力 - 这条特别对测试开发,因为测试开发经常需要为团队开发提高测试效率的工具和平台,没有一定的工程能力是无法胜任的。(这就是为什么说测试开发其实是开发岗)

术语

  • 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

(自动化测试用于回归测试将大幅降低系统测试、维护升级等阶段的成本。但具体问题仍然要具体分析)

HLT: HIGH LEVEL TEST

站在系统的角度对整个版本进行的测试,它测试的对象是一个完整的产品而不是产品内部的模块,关注的是产品外部的可见属性,通常使用黑盒测试技术。常见的HLT包括系统测试和自动化验收测试。主要有两个工具:持续集成工具和自动化执行工具。持续集成工具主要完成代码的静态检查、自动编译、快速反馈、自动化发布等功能。自动化执行工具主要负责HLT测试用例管理、HLT测试环境配置以及自动化测试执行等。

LLT: LOW LEVEL TEST

测试系统的部分,而不是测试一个完整的产品。需要掌握软件内部结构,主要使用白盒测试方法。通常由开发人员来实施。常见的LLT包括UT(Unit Test)和IT(Integration Test 集成测试)。LLT是在开发阶段对系统进行尽早、尽快的验证,发现的缺陷也更容易定位和解决。