测试、测开完整学习路线(纯干货)
迟到了半年的测试学习路线今天也是给大家双手奉上了,今天就以我个人的找工作经历已经工作一年的经验来说说测试都需要学习哪些东西呢,以及如何准备。
一、计算机基础
注意:其实无论你是招开发岗位还是测试岗位又或者是其它计算机相关的岗位基本上都是离不开计算机基础的知识的,之所以我把这个归纳到计算机基础的部分就是因为绝大多数计算机技术岗都会考。
- 计算机网络:七层网络模型,常见的网络协议比如TCP、UDP、HTTP、HTTPS这些无论是开发还是测开是都常考的东西。
- 数据结构:栈、队列、二叉树等等,学数据结构的主要目的是为了刷算法而准备的,一些mid题或者hard的题基本都是用上一些数据结构。
- 算法:首先推荐必须掌握的就是排序算法,例如冒泡排序、快速排序(给大家透露一下,我旁面的面试官每次的算法题都是快排)。
- 操作系统:说到操作系统主要分两大块吧一部分是操作系统的基础知识,例如线程进程这些,再然后就是Linux也是面试常考的,原因就是我们的服务都是部署在Linux系统上的,所以一些常见的命令肯定是要掌握的,比如怎么去查询日系。
- 数据库:严格来说数据库不算是计算机的基础,之所以我归类在这里也是因为面试常考。不同的岗位考察的难度不一样,对于测开或者测试大概率会考察你一些基本的sql语句,测开难一些的话就会考察你mysql索引数据结构呀这种还有就是一些慢查询的排查。
二、编程语言的选择
很多同学其实还是比较执着编程语言,觉得学测试应该用python,然后自己的技术栈是java觉得自己要放弃java再去学py有一点自废武功的感觉,这个问题其实不用太担心。语言只是工具能不能找到工作取决于你的综合技术能力。
- java:java的生态还是非常的完善的,无论是UI自动化还是接口自动化都能够比较好的支持。特别是开发转测开的同学,如果对java掌握的很好了完全可以直接用java来投测开。写简历的时候可以加上一些开发包括java的技术栈,这样会让你的简历更加有优势。
- python:python的语法简单,并且相关的库比较多,同时也方便开发一些脚本,所以python在测试这个市场里面所占的比重还是比较高的。很多的中小企业都挺喜欢用python来搭建测试框架,比如经典的pyhton+pytest。
- C++:对于这个编程语言我之前是不相信谁投测开能用这个语言的,直到我当时在某手实习的时候遇到一个用c++语言成功入职的兄弟,原因是因为他负责质量保障的产品是用C++代码开发的。并且进去干活的时候其实用的是java,所以这也印证了我上面的话,语言并不是特别重要,重要的是你的综合能力。
- 啥也不会:如果对上述的编程语言你都不熟悉的话,短期速成的话还是推荐学python更加的合适。
三、测试部分
核心:测试部分的内容主要分为测试理论、测试工具、自动化、测试框架、性能测试这几个部分,当然这些并不是全部往深了说还是测试平台的开发,精准测试等等,不过这些东西对校招生的要求并不是很大,能把我上面说的那几个东西给搞定基本就OK了。
3.1 测试理论
所有干测试的人都绕不开的这个,测试理论在测试中的地位相当于408在计算机中的地位。它是保证你能够较为全而准设计出测试用例的关键。90%以上的测试面试都会考你设计测试用例,或者白盒测试考验你对代码设计测试用例,这个时候就会用到测试理论中设计测试用例的方法以及一些思想。
测试理论中常考的问题如下:
- 测试的流程大概是什么样子的
- bug的描述与bug的管理
- 常见设计测试用例的方法
- 常见的测试用例场景:登录界面,水杯,购物车等等。
3.2 自动化
随着行业日益内卷掌握传统的基础已经不足以找到工作了,所以现在得加一些自动化的东西,目前主流的自动化主要分为三大块:UI自动化、接口自动化、APP自动化。个人推荐最少掌握一项,当然掌握的越多越好。
- UI自动化:selenium比较流行的Web UI自动化框架,支持多种编程语言(Python、Java等)和浏览器。
- 接口自动化:接口自动化大家可以理解成简单的爬虫,就是请求一个接口,拿到接口返回的东西然后做一个校验。
- app自动化:常见的就是appium,一个跨平台移动端自动化框架,支持iOS和Android,也兼容多种编程语言。
3.3 测试工具
测试工具这块其实主要掌握一些主流的测试工具的使用就能够应付校招面试以及简单的工作了,其中常见的测试用具主要有postman(这个干开发的应该都用过),抓包工具fiddle或者charles都可以,个人比较推荐charles,jmeter主要用作性能测试。
- postman:主要用来而测试发送HTTP请求(GET/POST/PUT等)、调试接口、自动化测试。
- fiddlef或者charles:主流的两个抓包工具,适用于移动端的抓包,其中charles可以做一些代理,也是用的人多的原因。当然说到抓包肯定少不了我们的F12了。
- jmeter:一般用来模拟高并发请求,测试接口/Web服务的负载能力,说实话我从我实习到现在还没有实战用过这玩意,大公司很少让实习生或者新人去做性能测试。
3.4 测试框架
主流开源的测试框架主要有两个一个是python领域的pytest框架,还有一个是java领域的testng框架。具体学什么可以参考你目前的编程语言。
- pytest:Python项目的单元测试、接口自动化、UI自动化(如Selenium),适用需要快速编写和扩展测试用例的轻量级项目。
- testng:Java项目的单元测试、接口自动化、大规模测试套件。适用于需要分组测试、优先级控制或与企业级工具链集成的场景。
两者均可与Selenium、Appium等UI/App自动化工具结合使用,但语言生态不同。
import pytest @pytest.fixture def setup(): return "初始化数据" def test_example(setup): # 使用fixture assert setup == "初始化数据" @pytest.mark.parametrize("a,b,expected", [(1, 2, 3), (4, 5, 9)]) def test_add(a, b, expected): assert a + b == expected
import org.testng.annotations.*; public class TestNGExample { @BeforeSuite public void setup() { System.out.println("全局初始化"); } @Test(groups = "smoke") public void test1() { Assert.assertEquals(1 + 1, 2); } @Test(dependsOnMethods = "test1") public void test2() { Assert.assertTrue(true); } }
四、进阶内容
其实如果你把上述内容都给掌握了已经很强了,但是没有最强只有更强,总有一些佬想要卷si大家,所以下面就给大家说说一些进阶内容。
- 基于 Python+Django/Flask 或 Java+Spring Boot 开发测试管理平台,集成 用例管理、自动化调度、报告分析。目前的大公司都有自己的测试平台,会集成一些常见的测试能力,例如接口测试性能测试等等。
- 精准测试:所谓的精准测试就是指的是能够精准的测试到每一行代码,那么如何保证呢?可以通过代码染色(例如java的jacoco以及Python的Coverage.py),例如我发送一个请求,这个请求走了这个服务的哪些代码都会给你标记出来,事后会有报告告诉你哪些代码你覆盖到了哪些代码你没有覆盖到,然后就可以通过调整参数的请求去覆盖所有或者指定的代码。
- AI测试:我在这里可以大胆的预言一下,AI测试大概率会是测试工程师下一个必须要掌握的技术,就像当年自动化对传统功能测试的冲击一样,利用大模型等编写测试用例。此外AI测评目前也是各大互联网公司正在做的东西,AI测评岗应该也会在近几年兴起并且待遇肯定不低。
五、最后
#测试开发学习路线##牛客创作赏金赛#以上就是本期分享的 所有内容了,终于完成了半年前的承诺了,同时感觉自己的文档水平也是有一定的提升了。如果觉得煮波写的好的可以一键三联送朵小花花,其它相关问题也可以发在评论区或者找我。最后还想再说一句,大家其实可以大胆的投递面试以及面试,很多时候勇气所带来的收益远远大于努力。