关于最近发现很多可耐的童鞋们都在问,“小白想转行软件测试入门,所需掌握的知识及是否需要什么工具?”,每次回答这个问题都比较匆忙,所以借此机会在博客里统一述说,希望能给在徘徊在软件测试门外的求知者们带去一点点帮助。
那么我们进入正题,现在国家互联网行业的再度崛起,互联网+思想的浪潮拍打下,越来越多的企业也在寻找自己的软件开发团队,而软件测试这个行业也是在逐步 完善,前景非常可观,而现在需求量自大,以及相对来说其入门门槛较低,引起了较多人慕名而来,这是挺好的一件事,希望国内以后的软件测试水平更上一个台 阶!说到软件测试,那么就自然是要与软件打交道了,一个高质量的测试工程师,所需要涉及的知识面会比较广(但并非要样样精通),比如有编程语言、网络、操 作系统、数据库、uml、以及最核心的软件测试知识等等,如果你是有某一方面基础的固然最好,如果你是纯纯的小白,那么先不要给自己那么大的压力,学习是一个循序渐进的过程,需要一定的实操基础,以后再工作中可以逐步提升自己。那么对于没有任何计算机课程基础的小白如果想转行软件测试工作,那么你需要达到最基本的入门要求:软件测试基础知识+数据库基本操作+(常用的Linux命令)
- 软件测试基础知识:需要掌握测试理论、测试方法和简单的工具
1.软件测试和软件缺陷的概念
2.软件开发和软件测试的流程
3.了解软件质量的评估
4.软件测试的分类
5.黑盒测试方法(等价类、边界值、因果图、判定树、错误推测法等)
6.了解如何进行需求分析
7.测试用例的设计(用例需要包含的元素、使用的黑盒设计方法、设计的原则等等,根据拿到的需求如何进行编写一份高质量的用例,这是执行测试活动的核心,所以测试用例的编写要覆盖所有的功能点,尽可能可设想到场景、异常情况、还需要考虑界面、用户体验、兼容性、系统性能等方面)
8.测试计划和测试报告可做简单了解,不要求会写,但是要知道它们主要是包含了什么内容,在什么阶段要做
9.APP测试的特点,与web端测试的区别(这里单独列出来说明,是为了引起大家多APP测试的重视,现在APP应用的广泛开发,所以要求每个测试人员也能很好地对APP进行测试,手机硬件和系统版本之多,手机操作的特性必然造成了APP测试有区别于web端系统的地方,比如对于APP我们还需要考虑它的WiFi环境、前后台切换、锁屏、不同手机的兼容、手机交叉事件的发生等等)
- 管理工具: 1.bug管理工具需要掌握其中一种,目前比较主流的有:Bugzilla、Bugfree、jira、TestDirector (Quality Center)、禅道等,禅道是国内一款优秀的开源的项目管理软件,在公司的使用率也是比较高,这些管理工具小白们需要主要掌握的是如何去提交BUG,回归bug的过程,基本操作大相径庭
2.版本控制工具SVN,这里补充说SVN也是因为很多公司会通过SVN来管理项目资料(需求文档、原型图、设计图、测试计划、测试用例等等),所以对于一个测试人员来说,要会使用它,下载服务器的数据、更新数据、提交数据等这些基本的操作
- 数据库基本语法:数据库的语法知识也是作为一个测试人员必备的,因为在测试过程中,会涉及到查询数据库数据等操作,因此不但要掌握基本的安装、配置,还要掌握SQL,对于入门学着来说要求不算高,只要懂得基本的增、删、改、查,那么对于简单的工作就已经可以应付得了啦,找工作笔试基本不成问题。目前主流的数据库管理系统有Mysql、MS Sqlserver、Oracle等。
- Linux命令:有些公司的系统是部署在Linux系统下,所以需要测试人员掌握基本的操作命令去进行相关操作,比如cd 、ls、cp、mv、rm、grep、find、head、tail、file、kill、shutdown等
具备了以上的知识后,恭喜你已经具备了敲开软件测试职位的大砖头,但是要提高市场竞争力的话还需要继续提升,下面会给大家来进一步梳理。
很多童鞋也会问到“是否需要学习什么编程语言?是不是要懂得性能和自动化测试?”
满足了上述的必备知识后,你可以找到一份普通软件测试的工作了,但是自身的竞争力肯定是不大的,接下来建议大家学习下环境的搭建,如果懂得环境搭建在面试过程中会给你加一定分数,学习网络协议的知识,xml/html、正则表达式、学习几种编程技术,至少学习一种脚本语言,Vbscript、JavaScript、Ruby/Perl、groovy等,至少一种通用的编程语言Java、C等,即使不能设计,但是简单的代码我们要能看得懂,脚本的简单维护优化也要能做到,同时这也是做接口测试、性能和自动化测试的基础,工具的使用看看操作说明学学就会了,但是里面所需要使用到的网络协议知识、脚本优化都是需要先懂得相关编程基础为前提,比如性能测试工具Lodarunder需要用到http协议的知识和C语言,接口测试工具soapui会使用到groovy脚本,也会用到正则表达式,压力测试的jmeter会使用到Java等等。
对于初学者,我建议大家先学习monkey(shell脚本)来对Android APP进行自动化测试,有兴趣的可以了解下云测做APP的兼容性测试(我个人不是很喜欢用,但是很多公司现在也有在用) 学习jmeter做web端压力测试、 也可以适当了解soapui进行接口测试和性能测试,那么有了入门基础和这些提升课程后,你将能在寻找工作的道路上脱颖而出!至于QTP等自动化的测试这些,前期我觉得没必要介入(如果你学习能力很强除外),在工作中一般性能和自动化的测试工作,公司会以有这方面经验的老员工为主,工作1-2年后有了一定项目经验累积后开始渗入比较为佳。
总结:所有的工具都是辅助,脚本、编程语言等可以帮助我们更好地实现测试目的,但不是核心,软件测试思想才是核心,所以先要将软件测试基础打牢,掌握数据库基本SQL语法,Linux的常用命令、环境搭建、然后再进一步学习相对较为简单的mokey、jmeter来提升敲门砖的重量,最后在工作中累积经验后可以阔步投向loadruner、QTP、selenium等工具的研究。
最后,祝所有正在转行或即将转行软件测试的同学们都能找到一份满意的工作!