刚入行的测试工程师如何自学软件测试？
回答这个问题前，我们可能需要先理一下测试工程师是什么。 度娘说： 测试工程师，软件质量的把关者，目前传统的软件行业还是以软件测试工程师为主，但是在新兴的互联网行业大多还是以QA来命名这个职位，也就是质量保证。 以互联网产品的工作流程图为例 可以看到，测试的工作在开发之后，是产品上线前的最后一步。一般来说，当开发按照产品需求、交互设计、视觉设计完成软件开发后，就把完成版本提交给测试，测试人员再根据既定的测试用例进行功能测试、兼容性测试、性能测试等，逐渐收敛BUG，最后才能正式上线。 测试的工作主要由四部分组成 功能测试：功能测试就是对产品的各功能进行验证，根据功能测试用例，逐项测试，检查产品是否达到用户要求的功能。 兼容性测试：指对所设计程序与硬件、软件之间的兼容性的测试，包括软件能否在不同操作系统、不同机型、不同应用软件上、以及向前向后等兼容性能。 性能测试：通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试，以保证产品在大流量前提下都能正常运行，像我们熟知的负载测试和压力测试都属于性能测试， 安全测试：以发现安全隐患为目标，防止产品上线后被攻击。 完成这些测试的步骤后，一款互联网产品就可以正式上线了。 因此，测试既是产品的第一个体验者（最早从开发手中接过成型的产品），也是产品质量的最后一道防线守卫者（做各种测试，保证用户拿到的最终成品可用、易用）。因为测试的工作特性，他需要从用户的角度出发体验产品，这也决定了测试与开发、策划、设计等岗位交流、沟通的时间也会成为工作的一部分，甚至承担起整个产品的协调工作。这样看来，把测试称为QA（质量保证人员）也就一点不奇怪了。 测试无用论？ 即使前面废话了很多，对测试有偏见的人依然会说， “测试的工作其实开发也能做啊，何必再设一个测试呢？” 或者“为什么互联网公司不开除测试，转而让大众来测，找到一个bug给100元？” （为什么互联网公司不开除测试，转而让大众来测，找到一个bug给100元？ - 信息技术（IT）） 会产生这种想法也并不奇怪，毕竟隔行如隔山，不过这里我还是要指出，上面的论述的错误之处在于 （1）完全割裂了测试与开发工作 （2）测试的工作被简化成找BUG 事实上，找BUG只是测试最初级的阶段，虽然必须承认，测试的门槛低于开发，但优秀的测试人员工作量之大，专业度之高，绝非一般用户能替代。 就像我们每个人都会接触到的kpi指标一样，测试的每块工作内容也都有不同的能力等级划分： （1）手工测试，发现BUG （2）通过各种手段，确认这个BUG是一个需要解决问题，然后确定该BUG的重现步骤并尽可能简化 （3）了解被测产品框架，能从代码中定位BUG源头，并能给出可能的解决方法 （4）尝试找出该BUG发生的原因，并能找出检测同类BUG的方法（标准化） （5）能在保障产品质量的基础上，协调起整个项目上线的时间和流程 以上能力，是从授人以鱼向授人以渔递进的。 当你在执行前人的测试用例时，找BUG固然是工作要求，但最主要的用意是学习用例的编写思路和方法，从案例中总结出规律，进而开始自己编写标准化测试用例，以免同类问题生出千万条不同用例。 一个测试的能力，能达到的层级越高，团队中的开发、策划就能节省更多时间，团队运行也会更高效。而专业的测试，正常来说应该比开发对产品有更深入的理解，对于可能影响测试的因素，像Tomcat配置、数据库索引、多线程等都会有丰富的经验。 从入门到精通测试，距离有多远？ 我始终认为，每个专业的学习与进步，都有赖于三个因素： （1）坚持 （2）资源 （3）天赋 以第一个最重要，但第一个和第三个都不是外部可控因素，全靠自己，所以这边也只能列一些可以参考的资源。 1、书 《软件测试》 软件测试 (豆瓣) 这本书可以帮你快速了解测试的工作内容，像理论概念、测试流程、Bug管理、自动化测试等书中都有详细讲解，看完后应该会对“测试人员の一天”有大致了解，入门级必备吧。 《软件测试经验与教训》 软件测试经验与教训 (豆瓣) 测试界领军人物James Bach写的，从测试的角色入手，全方位剖析测试的方法技巧、职业发展，文中有很多话都被奉为测试界的经典箴言，不愧是一路被坑之后撰写而成的血泪史，不仅是测试入门的读物，更适合搭配实际工作经验一起食用，字字珠玑，常看常新。 《鸟哥的Linux私房菜.基础学习篇（第三版）》 鸟哥的Linux私房菜.基础学习篇（第三版） (豆瓣) 前面也提到，因为测试的特殊性，必须对开发环境、程序语言也了解透彻，因此除了了解测试之外，也可以去看看其他著作。《鸟哥的Linux私房菜.基础学习篇（第三版）》作为遐迩闻名的 Linux 中文入门教材，行文浅显生动，深入浅出，读之往往令人欲罢不能，对于不喜欢啃晦涩大部头巨作，但又想入门Linux操作系统的，都可以去尝试。 《深入浅出Java》 深入浅出Java (豆瓣) 别看近700页的大部头，但因为是基础书籍，翻来覆去都在用简单通俗的语言将概念理清楚。能把书写长不难，但能风趣幽默地把一堆概念准确明白的告诉小白读者，这才是最厉害的，对于JAVA初级入门者，强推此书。 2、网络资源 TesterHome：https://testerhome.com/ 51testing：51Testing软件测试论坛 测试之道：软件测试网-测试之道 三个测试交流的社区论坛，TesterHome更专注于移动App自动化测试，51testing比较老，有很多老牌测试，但不免与老版论坛一样变得平庸化，测试之道比较新。论坛的好处在于可以分享交流，还有很多经验之谈，虽然测试用例在变，在努力的方式往往相似。 如果想快速上手，可以直接去网易云课堂、慕课网等搜索测试课程，前者的《测试工程师》微专业（http://mooc.study.163.com/smartSpec/detail/1001122002.htm?utm_source=2045618&utm_medium=cps&utm_campaign=affiliate）是网易自己出品的，课程编排成体系化，授课老师是一线测试工程师，强调实践能力，而且会定期考核节课，有预算、且缺乏自制力的同学可以考虑。后者上的课程都是免费的，但比较零散，适合想要长线作战的同学入手。 另外，大公司的测试部门和测试大牛的博客都推荐大家去关注，大公司规范的流程、经验大部分都是经过了项目锤炼，能让新人学会很多。而大牛，也有很多经验之谈，避免走弯路，已经是成功的捷径了。 谷歌测试部门博客（英文）：http://googletesting.blogspot.com/ 网易测试部门博客：http://qa.blog.163.com/ 阿里测试专家公直博客：All about Testing 51testing优秀版主陈永达博客：陈永达的软件测试 51CTO博客之星柳记：http://eilfei2000.blog.51cto.com/ 著名测试专家邰晓梅博客：taixiaomei 专注于ios单元测试的优秀国外独立博客（英文）：iOS Unit Testing 3、多练勤思 这大概是小学教师前经常会贴的一句话，但用在测试入门上也分毫不差，对于接受能力强的年轻人来说，本身门槛较低的测试入门不是难事。 有计算机基础的可以先去啃啃书考个软考，也可以去投投简历实习，大小公司都先可以，对重复的手动的测试工作上点心，总结规律，逐步提高，也跟前辈多多学习。 先入门，再入行就不难了。