结束语 | 如何成为一名优秀的测试工程师?

你好,我是陈磊。

不知不觉中,我们已经相伴一起学完了接口测试的全部课程,我相信,你现在已经能独立完成绝大部分接口测试的工作了。在这最后一节课呢,我不想再和你说接口测试乃至测试框架还应该做什么,而是想来和你聊聊如何成为一名优秀的软件测试工程师。

在前面的课程中,我一直在和你说测试工程师是个技术岗位,不是“点工”。在把我们的课程全部都学完后,你现在是不是深有同感?因为就接口测试这件小事我们都可以学习这么久,从接口是什么、如何开始接口测试开始,到后来的用工具和代码解决测试问题,直到最后的参数数据层的封装、外部解耦服务的使用等等。

在我们课程的留言中,有这样一个问题:“接口测试能力的高低体现在哪里?”其实,评价一个接口测试人员的能力水平,主要就是看他解决问题的能力如何, 这也包括了他技术栈的熟练程度,测试用例方法以及业务知识的掌握程度。在专栏的全部课程中,我们一起经历了接口测试从简单到深入的过程,而这个过程呢,其实也说明了测试工程师在各个阶段应该达到的能力。这样,测试工程师就可以划分为初级测试工程师、中级测试工程师和高级测试工程师。

初级测试工程师。他应该懂得接口测试,可以使用接口测试工具完成接口测试任务;他也要有接口测试的思维,能够将这种思维在实际项目中应用落地。

你也许会质疑这个要求:对于一个初级测试工程师,这会不会太难了?但就像我之前说过的,如果你现在去查一些涉及测试工程师的招聘需求,你就可以看到这项要求,现实就是如此,这部分内容也是我在“初级技能篇”中教给你的东西。

中级测试工程师。他要能编写测试代码,可以使用一种编程语言完成接口测试任务。

这短短两句话的要求其实需要很多努力。首先是编码的能力,这在很多测试面前是一个难以逾越的鸿沟,但是如果你跨过这个鸿沟,你就会发现后面会一马平川。

其次,能用编程语言模拟测试协议并完成测试,这确实需要你多了解一下对应编程语言的支持库。

最后,也是最难的要求了,你要能把接口测试思维和技术栈结合一起,并遵从以后的内部编码规范,约束开发的脚本,这其实也是我在“综合技能篇”中给你讲的内容。

高级测试工程师。他必须有能力封装适合团队的测试框架,并能提供给持续集成、持续交付平台调用。

要保持自己高级测试工程师的段位,你需要不断努力,不断学习和总结,时刻保持作为一个测试框架维护者的心。在这里,测试框架封装主要就是我在“进阶技能篇”中教给你的框架的抽象,参数化的设计,不同接口、不同协议的支持等内容。

那么如何使自己不断成长为高级测试工程师呢?

在留言区,我也看到了很多人对测试工作感到迷茫和困惑,有些人困惑于长期的手动功能测试,自己技术上没有提升,有想学习技术的想法却又不知道如何开始学习;还有些人学了一些技术,却不知道如何把这些技术应用到实际项目中,产生了学习和工作之间的分层,不能学以致用。

其实,在工作中有困惑不是一件坏事,这反而说明你是一个在不断成长的人,因为只有发现问题才能去解决问题。

就接口测试来说,学习路线就如同我在专栏中讲解的一样,从整理输入到使用工具,再到封装框架来完成测试任务,这其实也是一个技术的实践路线。如果你不知道如何将这些内容和工作结合到一起,不妨试试我在一开始说过的Postman这类小工具,用它敲开你的接口测试任务大门,随着工作的不断深入,后续你在写测试脚本和封装框架也就慢慢水到渠成了。所谓的高级测试工程师,也就是这样一步步修炼出来的。

与此同时,我也希望你能通过我们这个专栏的学习思路,学会怎么去掌握任何一项陌生的测试技术,因为这些测试工作的内容可能有所不同,但学习的方法和思路却可以是共通的。

我建议你可以通过三步来规划你的学习:

  1. 从实际动手开始学习测试技术。你最好还是从一个实际例子出发开始学习,这就和大部分编程语言都从Hello World开始一样。直击问题,这样才更能激发你的学习兴趣。
  2. 不断遇见问题,不断解决问题。你在实际工作中,肯定会遇见很多问题,你一定要一个一个去解决,并不断地从问题中总结可复用的经验,这样就会形成一套你自己独特的学习思路,以及更适合你自己的技术学习方法,更重要的是,这样学习更不容易遗忘。
  3. 掌握理论知识。我之所以将理论知识的学习放到最后,是因为当你知道如何用一个测试技术解决问题的时候,再去学习理论,就不会出现由于理论枯燥、记不住而放弃学习这样的情况了。同时,实践后再学习理论,每看到一个知识点你就会有“原来是这样实现的啊”这种感觉,你就很容易理解并记住它了。

所以说到这,你完全可以把接口测试看作是你技术学习的起点,而不是终点。

我也希望我的课程设计对于你未来的技术学习有一些帮助,在工作中,你肯定会遇见各种各样的新问题,你完全不必担心,因为任何一门技术都是由于工作中出现了痛点,接着才会推动整个技术向前发展,你只要时刻关注自己在工作中碰到的具体问题,还有阻塞工作的问题点,然后学习用技术手段解决问题就可以了。

那么如何解决新问题呢?我建议你学会从自己熟悉的内容出发,在自己的技术或者实践经验基础上去解决。就如同在接口测试中,即使你没有理想的接口测试文档,你也能借助自己熟悉的工具完成接口分析,然后逐渐封装出自己的测试框架。并由此慢慢掌握一个你不是很熟悉的解决问题的方法,最后通过不断地实践积累,不断增加你自己测试框架的测试能力,让它也和你一样,不断解决测试中碰到的新问题。

我们一起学习了这么长的时间,但终归是要为我们的课程画上一个句号,现在我希望你思考一下这几个问题:

  1. 你最初在留言区立下的目标实现了吗?

  2. 你的测试框架的名字是不是已经有了一个实际的测试框架来承载呢?

  3. 你掌握接口测试的思维了吗?

  4. 你掌握了如何学习一项测试技术的方法,并将它应用到实际工作中了吗?

上面这些问题你只要在心里默默有了答案就好,如果绝大部分问题你都有了肯定答案,那么我要恭喜你并欢迎你走入测试技术的大门,你的未来十分可期。

如果你对接口测试或者其他测试技术还有心得或者问题,那么你要记得,我会一直在留言区等你,这里还有很多和我们一起学习和分享的人,你可以随时回来,和他们分享你的问题和困惑,当然也包括你的成功。

如果这个专栏曾经帮到了你,或正在帮助着你,也欢迎你把它分享给你的朋友和同事,我们一起沟通、探讨。我是陈磊,在前行的路上,记住,你永远也不孤单。

精选留言

  • aoe

    2020-02-21 00:40:22

    调查问卷隐藏的比较少深,这是对测试的考验吧?我找到入口了!
    老师可以推荐几本关于测试的书吗?
    期待您后续作品!
    作者回复

    谢谢您,如果说测试的书籍我第一个推荐的还是《软件测试的艺术》这本书带我步入了测试的大门,后续在技术方面还是推荐一个编程语言的学习,这个具体书籍可以依据自己的特点选择,我就不做推荐了。其他可以看看《Google的软件测试之道》。再具体测试框架的书籍都差不多,可以随意看一看就好了。如果您还是有时间空余也可以看看我在京东参与写的《京东质量团队转型实战——从测试到测试开发的蜕变》,谢谢您

    2020-02-21 10:41:53

  • zero

    2020-02-29 12:04:32

    阅读完毕,也知道了新的测试方法
    作者回复

    谢谢支持
    课程中代码我做了整理:https://github.com/crisschan/api_geektime。

    2020-02-29 16:15:04

  • 镞砺括羽

    2020-02-21 22:27:24

    java开发一名,公司没有测试,同时要负责测试。
    平时主要用postman测试接口,或者点点页面,但总是不全面,可能跟时间工作量问题有关,反正不知道什么时候就有bug了😂
    我想问下mock是怎么用啊,做假数据?具体怎么用,java后台开发需要了解吗
    作者回复

    mock是解耦的,例如您开发的依赖A服务,但是A服务是由另外一个team的owner,但是这个服务开发进度慢于您的开发进度,因此使用mock完成A服务的替代服务。这里很多框架,如果是Mockito是需要开发的,如果使用moco是不需要的,具体看框架了,既然您是一个rd,那我其实也推荐你看一下契约测试,框架是PACT。比较适合开发人员使用。

    2020-02-22 10:38:57

  • peng

    2020-02-21 10:11:42

    我想问下测试架构师和中高级测试主要区别在哪里呢?
    作者回复

    您好,中级测试工程师、高级测试工程师以及测试架构师区别在于做事的内容和技术的深度上,这就和中级开发、高级开发以及开发架构师一样。那么如果回归到我们接口测试上来说呢:
    中级测试工程师:要能编写测试代码,可以使用一种编程语言完成接口测试任务。
    高级测试工程师:必须有能力封装适合团队的测试框架,并能提供给持续集成、持续交付平台调用。

    测试架构师:对持续集成、持续交付、智能化测试等都有自己独到的见解,能够给团队技术的发展方向。同时可以对现有系统接口做深入的构建和建设。推动质量效能的提升。

    2020-02-21 10:36:11

  • 2020-02-26 12:17:48

    OK
    最大的收获是,更加深刻理解君子善假于物的道理,有现成工具最好,没有就要自己造,凡是在工作中遇到简单、重复、枯燥、乏味、不费脑子非时间和精力的事情,此时就需要思考有什么工具可以解决这些问题,如果没有,那么机会来了,就自己试着在一个吧!如果是平台化的,可能是阿里、滴滴、美团等的雏形。
    作者回复

    谢谢支持,完美的诠释

    2020-02-26 12:44:06

  • 猎豹

    2020-02-21 00:19:29

    青山不改,绿水长流,后会有期~😎
    作者回复

    后会有期

    2020-02-21 07:39:32

  • windy

    2020-06-11 10:42:02

    一口气看完了所有的课程,还是很有收获的。总的来说和我们现有的测试工作内容比较接近,不同在于我们mock用在已经开发完成的系统中,但是外部接口或外部接口返回的数据不能满足测试需求时,提前把正常数据缓存下来直接用或者修改后再用。对于开发中的没有尝试过。
    接口用例的断言我们比较粗暴,直接根据响应的code来判断了。单个接口会涉及异常测试,自动化主要用在回归测试中,主要关注正常的响应。
  • smallfish

    2020-03-22 22:57:21

    老师讲的很对,应该是工作中遇到了痛点,然后利用自己已有的技术栈去解决它,然后再逐步完善自己的技术栈。学习理论知识,对于测试人员来说,并非抱着一门课程,拼命的啃,整个19年我就是这样给荒废了,伤心呀。还好现在思维转变了,感觉是打开了一扇门,学习了。期待老师继续再出点其他教程
  • Geek_0ed499

    2020-02-24 18:14:32

    老师您好,只用postman工具,串起来整个平台框架的主要接口,这样算是自动化测试吗?还有每次运行用例集合时,入参从web页面上获取和在数据库添加获取有区别吗?哪一种形式更好呢
    作者回复

    您好,谢谢支持。您如果很精于postman,那么用它解决了你很多问题,你的项目推进也很顺利。那么也很好,不用纠结那些名词术语。自动化测试没有一个权威的定义,你认为释放了你的人工,提高了质量效能,我认为都算自动化测试。后面你说的两种参数方法没有本质区别,具体看那种使用最为方便快捷,测试还是以最小投入最大收益为根本考虑。

    2020-02-24 21:43:40

  • 花生无翼

    2020-05-13 23:10:33

    从初级到高级,需要实践,需要积累。看完不是目的,学以致用才是。
  • 张喜欢

    2020-05-07 11:18:57

    你在前行的路上,永远也不孤单,你 要努力!
  • Pyel

    2020-03-29 23:48:00

    谢谢陈老师!很受教!
  • 王保安

    2020-03-29 08:30:10

    请问APP端的https 接口怎么抓包,好像安卓6之后 手机证书不支持抓包了
    作者回复

    推荐你尝试一下mitmproxy

    2020-03-29 17:15:40

  • 测试菜鸟

    2020-03-10 14:33:03

    这次的专栏中,学到了接口功能测试的测试思维。工作里经常要遇到做接口压测,会有点迷茫,至今没有理解到压测的实质。很期待老师以后可以讲解接口的性能~
    作者回复

    谢谢

    2020-03-11 01:21:55

  • 宁江孤影

    2020-02-22 10:45:36

    感谢老师的课程,有种茅塞顿开的感觉,对接口测试有了更深的了解。再问一个问题:用例多了之后,在持续集成的时候会不会影响执行速度,是不是可以采用分布式的思维去实现?希望老师点拨一下,谢谢!
    作者回复

    谢谢,您说到了一个随着case增加必须要做的一个事情就是分布式。但是这是未来发展很久以后遇见的情况,到时候你可以在寻找一种你自己可以掌握的分布式驱动技术来完成该任务。

    2020-02-22 11:58:26

  • 韩培仁

    2023-04-12 22:38:22

    测试+开发+架构师+运维+项目管理+产品 = 资深高级测开
  • 痕近痕远

    2020-10-20 10:08:43

    老师,有python进行dubbo接口测试的解决方法吗
    作者回复

    不好意思,我还没有接触过dubbo。不过我记得我在一篇文章中看到过github有对应的仓库。您可以自行查找一下,不好意思!

    2020-11-06 09:56:42

  • ddup

    2020-06-18 08:55:30

    老师,请问一下能分享一个你自己封装的接口测试框架看一下吗?理论是懂了。
    作者回复

    可以关注我的人github,我在逐渐开源里面一些关键代码

    2020-06-19 11:33:23

  • 你个小可爱

    2020-06-10 23:14:04

    作为一个毫无代码能力的功能测试来说,阴差阳错进了功能测试,听完只是懂了逻辑,实际从没有测过接口,感觉看都还是看不太懂,评论里我发现别人都是大佬,我这小白好像太难了 😭
    作者回复

    术业有专攻,所有人都是从不懂到懂的过程。加油

    2020-06-11 21:54:20

  • Achan

    2020-04-20 13:21:29

    打卡,感谢老师!
    整套课程给了我对接口测试更深刻和系统的认识,后续还要实践一下实例里的框架和代码。