软件测试和软件开发是产品研发中同样重要的两个板块,无论在哪个领域发展都可以给你实现价值的空间。而且从目前的行业发展情况来看,测试人员必须要懂一些开发知识,而开发人员也必须要会一些基本的测试,并且在软件测试领域中的“测试开发“岗已经变得越来越重要,所以它们之间并无太大区分。
所谓的好与不好,与行业无关,与你个人有关。做不好软件测试,你也不一定就能做好软件开发。
但是目前IT行业里,大多数人的看法是软件测试没有软件开发更有前景,也没有开发需求大。大家有这种疑问也并非没有道理。据统计,在国外的研发公司中,测试与开发的人员配比基本为1:1。但在国内的研发团队中,开发的比例永远高于测试,最高约为5:3,这类情况大多出现在金融、保险、证券、P2P贷款等一些更注重安全类的项目中,其他行业的中小项目中测试的比例约在5:1甚至是8:1,大部分企业10人以下的研发团队只配置1-2个测试人员,他们主要就是做一些功能性测试,以及测试执行的工作。
虽然国内测试人员的需求量少于开发,虽然软件测试入门相对简单,但是,相对简单,并不代表普通人就能做好,需求量少,也不代表就没有“钱”途。
这里分享一份 2019 年最新基于Python的测试开发学习路线和导图,希望对目前正在考虑和已经踏入软件测试学习行列的朋友们有所帮助。
测试开发学习路线图,禁止盗用。
软件测试并非外界理解的的“点点点”,而需要学习和掌握的东西会有很多,包括并不局限与:
专业基础知识
1、Web页面元素,布局,CSS样式,盒模型,JavaScript程序设计,函数,基础算法,正则表达式。
2、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为软件测试和测试开发打下基础。
3、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境部署,Shell编程Linux作为一个主流的服务器操作系统,是每一个测试开发工程师必须掌握的重点技术,并且能够熟练运用。
4、Python编程基础,语法规则,函数,数据类型,PDBC,培养扎实的Python编程基本功,同时对Python核心对象编程有熟练的运用。
5、Python面向对象,异常处理,文件IO,多线程,网络编程,PyQT界面开发,深入理解面向对象编程,异常处理机制,多线程原理,网络协议知识,并熟练运用于项目中。
专业核心知识
1、软件工程,软件质量,系统测试流程,方法,专业术语,测试用例设计,禅道管理工具,测试报告,缺陷管理理解软件工程的各类实际问题,理解系统测试的理论、方法与过程,熟练运用测试用例设计方法高效设计测试用例。
2、测试需求分析,测试方案设计,测试用例设计,测试项目实施,缺陷报告与测试报告,深入理解系统测试各个过程和关键环节,熟练完成系统测试项目。
3、SikuliX框架,UIAutomation框架,Selenium WebDriver框架,基础框架,Android应用,Monkey测试,Appium移动端测试框架,UIAutomator2移动端测试框架综合运用各类应用操作平台,完成各种自动化测试框架的学习和应用,深入理解GUI自动化测试技术及相应框架的测试开发。
4、Python单元测试框架,网络通信协议,HTTP与HTTPS协议,WebService与WebSocket协议,Python的接口测试库,PostMan与SoapUI接口测试工具通过对代码级接口测试和协议级接口测试的测试开发实战,灵活运用Python开发接口测试脚本,熟练运用各类接口测试工具。
5、性能测试原理,指标体系,场景设计,实施过程,JMeter工具应用,BeanShell脚本开发,Python+Locust性能测试框架深入理解性能测试技术体系和方法论,熟练运用JMeter性能测试工具和Locust性能测试框架实施对任意系统的性能测试。
综合实战项目
1、测试需求分析,同行评审,测试计划,测试方案,测试用例,配置管理,持续集成。通过对大型企业级应用系统的测试项目实战,强化理解系统测试项目的实施过程与技术细节。
2、接口测试设计与实施,回归测试,冒烟测试,安全性测试,RobotFramework框架应用,UI自动化实战将各类自动化测试技术结合项目实战演练,强化对自动化测试技术的运用,同时掌握更多的测试框架。
3、性能测试项目实战,LoadRunner性能测试工具,总结通过综合项目实战,将全套测试技术融入到项目中,强化学习效果和项目经验。
4、Python原生测试框架开发,包括Monkey,UI,图像识别,云测试平台,HTML测试报告,持续集成,KDT关键字驱动框架开发等原生技术实现通过大量的Python原生代码开发,深入理解自动化测试开发技术的底层实现原理,完全抛弃对工具的依赖,做到真正的测试开发技术。
5、基于测试框架的设计思路和实现手段,自主实现一套测试框架能够独立完成一套自动化测试框架,并能够直接用于实际项目中。
6、持续集成与Jenkins,安全性测试原理与工具,Python爬虫开发与Scrapy框架,提升软件测试其它类技术,增强知识面,提升竞争力,助力职业发展。
后期补充知识
1、算法进阶,图像处理,视频处理,加密解密,压缩算法。
2、UML统一建模语言、五种图、类图、类图详解、用例图、时序图。
3、Dubbo分布式开发框架,Oracle关系型数据库管理系统,MongoDB非关系型数据库管理系统。
4、大数据开发框架Hadoop/MapReduce/Spark。
5、Android与iOS的原生应用开发与WebApp开发。
6、OpenCV图像处理框架、TensorFlow深度学习框架,Lucene全文搜索引擎与中文分词框架Ik-Analyzer,视频处理算法与框架等。
看了这些,你还会觉得软件测试真的跟你了解的和外面流传的很简单和没有技术含量吗?
当然,很多人在转行做技术前,都会纠结是选开发,还是选测试。那开发是不是就真的比测试薪资高、比测试更有发展前景、比测试更好呢?
1、IT行业都需要经常加班的,所以软件测试和软件开发其实都一样。如果你真正做过软件测试,会发现测试人员比开发人员头发更多一些(轻松一些),并且测试人员不会被产品气到吐血;
2、目前国内软件测试的待遇相比软件开发不相上下,如果你能做测试开发或者是性能测试、自动化测试,那么测试的工资甚至比开发的还可能要高;
3、软件测试的发展比软件开发更广一些,开发大多与产品经理打交道,但测试因为需要把控整个产品,则需要跟很多岗位的同事沟通,包括产品、开发、运维、售前、售后、客服等等,后期可发展成全面型人才;
4、软件测试的岗位需求越来越多,而且高校还没有普及相关的专业和课程,所以竞争压力想多而言,也会更小一些;
关于开发和测试,还是那句话,无所谓哪个好哪个不好,适合自己的才是好的。你也可以先做开发,然后有兴趣了在转行测试,这样提升也会快点,未来纯粹的功能性测试人员迟早会被淘汰,所以即便要做测试,也一定要做一名懂开发的测试。