软件测试人员到底该如何提高自己的能力?
![[��ǩ:����] [��ǩ:����]](https://www.xuefen.net//file/upload/img/7/260.jpg)
在软件测试中再次迷茫! 最近随着项目接近尾声,一个个CREW都陆续exit了,我们的工作量也越来越小了。以前总是抱怨工作量太大,没有时间学自己的东西,没有时间去提高自己。可如今,时间有了却不能静下心来认真地学,更痛苦的是面对如此多的测试方面的资料,却不知该从哪儿开始。再次陷入了迷茫之中。以前就听说,测试会使人懒散,没想到如今自己也变为了懒散之人。从内心里说,我很喜欢写代码,尽管写的代码质量不高,可我就是喜欢,似乎只有写代码才能让我完全集中精神,甚至可以让我忘记时间。我不知道这是否说明我真的就适合做开发而不是测试。但是考虑到做开发需要掌握很多很深层次的知识,而我掌握的都是一些很肤浅的东西,而且遇到难题解决问题的能力还不够强,所以感觉不适合干开发。最初是打算干几年开发,然后转测试,去年换工作时当有SDET的工作给我时,我考虑了一下,最终还是选择了走测试这条路,只是最初还信以为真,以为SDET真的是也会做点开发,可实际上完全就是STE。开始干这行转眼已经半年多了,一直以来都在努力让自己喜欢上测试这行,可这么长时间了,似乎学到的东西及其有限。考虑到自己还是喜欢写代码,而如今又已经步入了测试这个行业,所以想结合二者,打算往白盒测试方面发展。也不知道我的考虑是否合理。看到网站上的测试方面的东西,太泛太杂,面对如此之多的测试资料,可我不知从哪儿开始,真的很迷茫!我到底该怎么办?难道真的就这样在这里得过且过,虚度时光?时间已经不容我这么虚度了!以上是我的一个朋友发给我的一个他的个人感受,我觉得软件测试不是这样的,它应该是这样的。为了更好地服务于客户和规避操作风险,近年来软件测试工作越来越受到重视。尽管软件测试的作用与传统工业的产品质量检验目标一致,但自上世纪60年代以来,软件测试理论在整个IT中发展相对缓慢。软件测试工具尽管在管理能力、易用性方面有了很大提高,在实际应用中仍旧不能从根本上提高软件测试生产率。在对软件测试的要求和期望越来越高,而软件测试的方法和工具没有长足发展的情况下,全面提升测试团队和测试人员的能力,就成为了进行有效测试并尽可能提高测试效率的重要基础。一、关于能力的浅析 测试团队的能力由个人能力和团队能力两个方面构成,两者相辅相成。为了有效提高能力,首先对个人能力和团队能力进行一些浅显的分析。1.个人能力 (1)个人能力的概念 中国大百科全书《心理学分册》说,能力是“作为掌握和运用知识技能的条件并决定活动效率的一种个性心理特征”。通俗地说,我们可以认为个人能力是达到优异绩效所需的知识、技能和素质的组合,这里的素质包含了大百科全书所说的个性心理特征,是比较难以量化衡量的。(2)个人能力培养现状浅析 ●对知识的培训 软件测试工作来说,所需专业知识可分为基础工作知识和专门工作知识两类。基础工作知识包括软件测试的基本技术和方法、软件测试的文档规范等在专业内通用的知识,一般可使用专门教材进行培训。这些培训可以由内部专家完成,也可以由外部专家完成。相对来说,学习的成果也比较容易客观衡量。专门工作知识是在更小的范围、特定的时间内适用的知识。很多知识往往是处于经验的积累阶段,且具有时效性。例如对于开发中的应用系统的认识和了解,在目前业界文档编制、评审和版本管理的状况下,一般只能通过“师父带进门,修行在个人”的方法进行培训。在这样的情况下,如果测试人员有比较深厚的IT和业务经验,将缩短专门工作知识培训的周期,提高培训的效率。如果测试人员是新学生,则培训的难度较大。●对技能的培训 技能在很多场合也被称为“动手能力”,对于软件测试来说,技能的培训也很复杂。对于原来具有业务背景和软件开发、维护背景的人员来说,在软件测试工作中,肯定会优先使用已经掌握的技能,这样能够使得测试工作比较快地上手。了解业务、了解技术实际上是对被测对象不同角度的了解,是软件测试技能的重要组成部分,只有结合了专业的软件测试技能,才能够实现全面、协调、可持续的软件测试效果。仅仅从技术和业务角度进行测试,则往往在测试的彻底性、测试的效率和回归测试等等方面难以达到银行业软件测试发展的要求。根据目前我国IT人员和金融财会人员学历教育情况,本科生的技能与银行业软件测试的实际需要相比显薄弱。研究生在学历教育期间会有不同程度的培训,但是由于我国银行IT系统及其使用状况的复杂与庞大,学生较少有机会在类似的环境中接受相应技能的培训。以往对技能的培训,往往与专业工作知识培训采取相同的做法。很多情况下,专业工作知识与技能的培训是交织在一起的。实际上,很多人是通过自己的领悟了解到了工作的方法,但也形成了对于技能只能意会、不能言传的状况。●对素质的培训 素质可以通过多个方面展现,例如演绎思维、归纳思维、进取精神、人才培养意识和能力、灵活性、主动性、人际理解能力、人际影响能力、合作能力等。归根到底,就是一个人的世界观、价值观和处事哲学、基本习惯在各个方面的展现。实际上,素质对于高质量地完成软件测试工作,往往比知识和技能占据了更重要的位置。
在软件测试这条职业之路上 如何能拿到高薪?
身为一名合格的测试工程师,是需要具备以下技能的:
测试基础理论/测试设计能力
业务知识
行业技术知识
数据库
掌握编程语言
搞定自动化测试
质量流程管理
测试基础理论/测试设计能力
对于一个测试工程师,核心的竞争力有哪些?
专业技能:毋庸置疑,吃饭立足的根本,随着你的测试技术的不断深挖,你一定会觉得自己曾经的测试想法是非常浅显的,先要走管理也好,甚至转岗也好,技术的深挖都是非常重要的;
管理技能:能够带领团队高效的运作,高效的完成任务,测试核心王道,当然也要保证团队内部氛围的和谐,促进团队健康发展。你的技术到了一定的程度,自然会担起一定的管理责任的。
学习能力:软实力中最重要的一环,或许听到的比较多了,但是作为过来人建议一点,人的精力有限,把你的有限精力聚焦在最重要的方向;
沟通能力:是不是听起来有些上头,耳朵都听出茧子了,自古套路得人心,但是真诚永流传;
影响力:测试这个行业,越往上,圈子越小,北京、深圳、上海、杭州这些的测试开发、架构师类的,如果有一定影响力的,相互之间交流和学习都是非常容易的。往往越是顶尖,越乐于分享。比如19年年初的MTSC测试大会,很多地方的测试开发都踊跃参会。当然,相互之间的内推也是非常的简单了啦。
软件测试工程师出路怎么样?
其实我觉得软件测试工程师是个非常有前途的职业.现在软件测试工程师的缺口非常的大.
程序员跟测试员是相互对应的.以前国内认为只要有好的程序员就行了,其实还要有好的测试员.现在国内的软件厂商越来越注重测试员.
软件测试工程师
一提到软件测试工程师,很多人就会想到那些反复使用软件,试图在频繁操作中寻找到错误发生的低层次人员或者软件用户。其实这是一种错误的概念,软件测试早已超越了用户使用来发现Bug的基本测试阶段。
陈宏刚介绍说,微软的软件测试工程师分为三种:测试执行者(Basic Software Tester)、测试工具软件开发工程师(Software Development Engineer in Test)和高级软件测试工程师(Ad_hoc Tester)
测试执行者负责理解产品的功能要求,然后根据测试规范和测试案例对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,属于最低级的执行角色。
测试工具软件开发工程师负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后的性能测试、提交测试等过程,都有可能要用到开发的测试工具。对技术要求最强的是这些人,因为它们要具备写程序的技术。“因为不同产品的特性不一样,对测试工具要求也是不同的,就像Windows的测试工具不能用于Office,office的也不能用于SQLserver,微软很多测试工程师就是负责专门为某个产品写测试程序的。”
而Ad_hoc Testet属于比较有经验,自己会找方向并做的很好的测试工程师,这要求具有很强的创造性。刚进入微软时,老板也是只给陈宏刚一个操作流程,每天就按照这个规程去做,几天下来,一个Bug都没有发现。陈宏刚也很沮丧,觉得这样挺对不起公司,后来自己问自己:为什么非要这样做!于是换了其他的方法试试,令他吃惊的是,一下就找到很多严重的Bug,当时也不敢声张。有一天,他找到10多个非常严重的Bug,开发经理一下就惊呆了,怒冲冲的跑到陈宏刚面前问:“你是不是改变了测试方式和测试步骤?”陈宏刚有些吓住,说道:“可能改变了一点。”对方说:“我非常生气,但我不是生你的气,而是因为以前测试人员水平太差,或者以前的测试方面有问题,软件中有些Bug存在了半年甚至一年,但直到现在才发现,现在修补这些错误要困难很多!”后来陈宏刚得到了老板的赞许,可以按照自己的想法去做测试。对此,陈宏刚感受颇深:“一方面我体会到了微软非常鼓励创造的文化,同时也感到只遵守教条不是好的测试人员,就和用户一样了。做软件测试工程师同样需要开拓和创造性。”
在开发管理上,测试不应该归属于项目管理,也不应该归属开发人员。这三个部门应该是并驾齐驱,相互协作,测试工程师最终决定产品是否能够发布。
软件测试工程师的素质
因为软件测试仍然处在发展阶段,还没有上升到理论层次。对人员的评测,包括微软在内,都还没有一个统一标准,因此评定软件测试工程师只能根据工作实践进行自然淘汰。
软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。陈宏刚介绍说,在五六个人的测试小组时,一半以上的Bug都是他找到的。他认为这同自己数学专业的背景关系密切,数学中有逻辑思维的培训,要善于找出来各方面的因素。比如要证明一个定理,各个方面都考虑到,一个条件不满足就无法证明;但如果证明其不成立,最常用的就是找到一个反例,只要有一点证明不成立就可以了,软件测试也是找这一点。
做测试还要考虑到所有出错的可能性,还要做一些不是按常规做的、非常奇怪的事。除了漏洞检测,测试还应该考虑性能问题,也就是要保证软件运行得很好,没有内存泄漏,不会出现运行越来越慢的情况;在不同的使用环境下,考虑软件的兼容性同样重要。软件测试同产品的规模也有很大的关系,因为软件的bug往往出在大型软件的连接处。
做软件测试工程师需要对软件抱有怀疑态度。这是因为开发人员喜欢想当然,总是找一些有利于自己程序执行的数据,有些开发人员甚至认为不利于程序执行的数据是对代码的玷污和亵渎。而软件测试却要策略性的准备各种数据,从每个细节上设计不同的应用场景,不去想当然的假定任何一个数据是可行的。
在职业素质和交际方面方面,并不是测试工程师爱挑别人毛病才好,反而这个工作要求很强的沟通能力。经常的和开发人员进行沟通,说话办事要很得当,不能指责别人,否则会事倍功半。性格随和才能和开发人员顺畅的沟通,对人和对事是完全不同的两个问题。
如何培养优秀的软件测试工程师
朗川软件测试工程师张建阳从北大力学系毕业之后,曾开发流体力学分析软件,软件缺少测试而产生的问题给她留下了很深的印象。后来去大唐电信做UIM(统一消息管理系统),她发现尽管公司为了鼓励员工找bug采取了很多奖励方法,但还是很少人愿意去做系统测试。而张建阳却从那时查阅翻译了很多国内外的资料,对软件测试产生了浓厚的兴趣。
像张建阳这样在工作中自己定位在软件测试领域的开发人员并不多见,因为程序员更愿意去做开发而不是测试,从大环境上,测试人员收入水平低也是原因之一。而在微软,测试人员和开发人员的工资水平是相同的。
如何改变这种现状呢?有人说可以可以派人去先进的国外软件企业学习,但这种方式因为牵涉到商业秘密,可操作性不大。陈宏刚博士认为更好的方法是引进人才,把在国外大型软件公司工作过、有经验的人才引进来,甚至要高薪聘请。他表示,这不仅仅是一个人的问题,关键是能够把整个软件测试的水准提高一个层次。
引进人才只是开始,更重要的是培养一批软件测试人才。软件开发的教育培训都是比较正规的,各个学校也都设有专业,但软件测试还没有正规的专业毕业生,而且没有评判的标准。陈宏刚博士给很多软件学院建议,开设四方面的软件测试专业基础课:软件测试基础、软件测试开发、高级软件测试案例和行业软件特色测试方法。国内现在已经有了一些软件测试基础的教材,但其他的教材还没有。高级软件测试案例主要是大型软件测试案例,大型软件出现的问题具有很强的代表性。而行业特色软件测试的课程可以开阔学生的视野。陈博士介绍说,在国外,也是极少的高等院校开设测试专业,但可以借鉴民间的培训机构课程。在有一批专业的测试人才出现之后,人们会认识到他们的重要性。
如果你已经开始从事软件测试工作,千万不要认为软件测试没有什么发展的潜力和前途。刘忠从1995年接下IBM的OS2汉化版本的测试开始到现在,他一直工作在软件测试领域,并升到了公司高级副总裁的位置。和腾软件也培养了一批测试工程师,它们从对测试职业将信将疑到明确自己的测试方面的职业目标。刘忠介绍说:“很多人开始做测试执行工作时会说很麻烦、很枯燥,只是一味的埋怨,而不是主动的去学习,他没有看到软件测试背后所隐藏的知识。因为学习可以做这些工作,不学习也可以做这些工作,但质量是不同的。有些人自学和请教了很多测试技术和管理方面的知识,公司自然就会在下个项目中去培养他。”
因此对于一个新手,要在各方面培养自己的能力。首先是要理解各种测试流程,并在理解的基础上转化为自己的知识,以后遇到相似的问题能自己去解决。在测试技能上,要知道测试有那些手段,比如压力测试有哪些方法,哪些工具可以辅助做测试。从专业技能上,面向不同的技术方向,像操作系统、网络、通信等都要从专业上深入了解。这三方面要同步去成长。
软件测试工程师未来的发展
从事软件测试有没有前途,未来的职业发展方向怎样呢?
陈宏刚博士表示,软件测试工程师在微软的发展有几种途径:一种走技术路线,成长为高级软件测试工程师,这时他能够独立测试很多软件,再向上可以成为软件测试架构设计师。第二种就是向管理方向发展,从测试工程师到组长(Lead),再到项目经理(Manager),到更高的职位。第三种可以换职业,做项目管理,做开发人员都可以,很多测试工具软件开发工程师在写测试软件的过程中,因为开发方面积累了经验,同时对软件产品本身产生了自己的看法,很容易转去做产品编程。
陈宏刚博士现在还带着一个测试小组,两个清华软件学院的学生,一个南开的专门做软件测试的博士生,一个北邮的学生,他们负责总部一个产品的测试。陈博士表示,在自己简单的讲讲思路,共同探讨之后,他们一星期就找出了70多个Bug,也感觉学了很多知识,并表示以后专注于软件测试专业,因为他们感觉软件测试真的是一门很深的学科,有很多可以研究的课题。其实微软的测试人员很多也都是硕士、博士,他们同样在做创造性的工作,保证着程序质量,推动着软件的进步。
软件测试是正在快速发展,充满挑战的领域。尽管现在单机版桌面软件的测试已经成熟了很多,但对于网络时代的到临,包括微软在内的公司对基于网络的测试也没有一套完整的体系,也是处于探索中,网络中被攻击的可能性太大,这就是为什么黑客在网络上能兴风作浪的原因。网络测试是一个新环境,而且是很大的挑战。
软件测试未来的发展空间很大,软件测试工程师的职业之路同样充满希望。
软件测试的核心价值
软件测试作为一个工作有很多的价值,因为大家的工作内容都会包含很多东西,而且对产品和项目都是有价值,这里只说说和测试直接相关的所谓的核心的价值吧。我把它人为的分为了三个层次。
第一个层次:职位本身带来的价值。
这个有点类似于工厂里的QC, 需要有专人来做检验的工作,这种价值和设立这个专门的职位有关。就像很多职业的分工,一旦设立了这个专门的职位,这个职位上的人就需要按照设定的要求去驱动某些事情会被做到,对测试而言就是产品在出去之前会被检验到,对项目经理而言就是会按照计划来驱动项目往前走。绝对的来讲是不需要通过这样的职位设定来驱动某些事情被落实的,因为开发人员也可以自测,产品集成好了之后也可以从用户的角度来完整的测试,但是实际上如果没有这样的分工和专职的安排,很多事情不会真的被做。还是那上面提到的项目经理来举例,理论上产品的开发者应该也可以按照几乎把事情做了,为什么要一个专职的人来把握项目的进度了(当然项目经理还要做很多别的事情)。
从这个角度,这有点像是通过分工来确保落实。而且因为设立了这样的专职的工作,那么自然就有job responsibility,需要对质量负责,而因为有这样的要求,测试人员会跳出来报出问题,提出不同的意见。一个是制度上的安排,一个是心理上的。反过来可以设想一下,如果在一个正式的商业产品中,没有测试人员或者类似的工种,很多时候对质量的要求会流于形式,质量很容易被进度的压力compromise掉,而且因为测得够不够本身就是个很模糊的概念,大家可能简单用一用觉得没有问题就出去了。
上面提到的其实是一个很基本的层次,有而且做了而已,至于做得怎么样,那是另一回事。
第二个层次:做得更专业,更好。
这里换一个例子,拿做饭为例,好的酒店里的厨师和那些只在家里做做饭的人区别是什么。当然,这里说的是通常的情况,个别另类除外。如果按照上面的层次,两者都能做出还可以的能吃的饭,可以达到这个工作的基本的要求。但是如果只停留在家庭主厨的要求,就不会有专业的厨师这个职业,还有什么几级认证之类的。那么专业的厨师的更进一步的价值在哪里?我想简单来说大概是做得更专业,更好吧。
同样,对于测试这个职业,也是一样,如果只是把功能都用到了,发现了bug,那和普通的用户有什么区别呢?
那什么是更专业,更好呢?我想用两个词来概括,效果和效率。
先说效果,下面列了两个方面:
a. 发现更多的bug,而且很多是简单用用无法发现的bug,甚至非常难以发现的bug。这也好比专业勘探和去山里玩的驴友,驴友可以发现奇怪有趣的露在外面的石头,而专业的勘探人员能找出埋在地下的有价值的东西。
b. 有些测试需要专业的技能,比如性能测试,稳定性测试,安全性测试等需要专业的技能和工具。
对于这类测试,普通用户是难以发现的,因为等他们发现那就不是找到bug,而是不幸遭遇到bug。这一部分是非常体现测试人员的技术和专业能力的地方,有很多地方值得深入的研究。
再说说效率,这个放在后面并不表示没有效果重要。很多时候我们的思考和努力都花在这上面,在现在这个对软件和服务的推出速度要求越来越高的年代,效率有时候显得更加重要。因为根据二八原则,很多时候大家宁愿花20%的时间发现80%的bug,然后就以beta的名义把产品推出去,然后再来改进,因为毕竟大部分的软件产品,特别是需要严格测试的产品都是有商业价值的,而time to market就是一个很重要的因素。
所以从这个角度来讲,对一个专业的测试人员的要求还包括更快的发现问题。这个可能是对工具和能力的要求,也有对测试方法和流程的要求,比如自动化测试,敏捷测试等等。举个例子来说,就好比大家可以在家里做手工,但是如果超市里卖的日常生活用品用这个效率做出来估计就没有什么商业竞争力,不是吗?
呵呵,说了这么多,突然想到其实意思简单的就是,专业的就是要把事情做得又快又好。
如果能做到上面的两个层次,基本上已经是一个优秀的测试人员了,但是如果只是有这些显然不够,总要有些别的追求嘛。
现在说说我理解的第三个层次,那就是:提高整体产品的quality。
为什么这么说呢,因为的两层都是在找bug,这样有两个问题,一是事后才发现,二是很多东西已经晚了,甚至没法修补。
发现bug是一个事后的过程,是在代码已经写好了之后去测试,发现了问题需要修改原来的代码,其实可以做得更好。
a. 将发现bug变得更早,在单元测试(有时是developer来做)的时候就发现,或者产品的build一出来就发现,比如和auto build系统集成的测试。
b. defect prevention
再往前走,在有缺陷的代码被写出来之前就发现问题。比如detail design,requirement specification,甚至产品的spec制定的时候就发现问题,这类问题有很多,比如很多场景可能没有被考虑到,有些可能和原来的客户或者产品的需求不一致,甚至有些地方不具有可测性。那么在这个时候,需要及时的讨论和调整。因为这个时候的调整可能比产品出来之后发现几个bug更有价值,因为早期的错误可能到后面很难改,或者改的代价很大。
c. 协助建立质量的文化。
之所以说协助,是因为觉得这个可能不只是靠测试人员就能做到,需要和开发人员以及产品的管理人员等等一起来创建。
garbage in,garbage out。越来越觉得quality本身是写出来的,是设计出来的,是规划出来的,而不是测出来的。产品的架构,设计,使用的模块,代码的质量都会,甚至深远的影响到质量,其实你会发现这个已经超出了测试人员最基本的工作的要求,但是却是能发挥更大价值的地方。
关于这方面怎么做,可能没有前面的两个层次那么清晰,但是是可以做的,比如a和b提到的,c的要求可能更高,需要更大的能力和影响力。
软件测试工程师发展规划路线
1. 软件测试工程师发展规划路线
1.1. 测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
爱码小士 测试基础
测试计划 / 测试用例 黑盒用例设计等价类 / 边界值 / 场景分析 / 判定表 / 因果图分析 / 错误推断
缺陷 缺陷生命周期 / 缺陷分级 / 缺陷管理工具禅道 / Jira
数据库 Mysql / 环境搭建 / 增删改查 / 关联查询 / 存储过程
Linux 系统搭建 / 基本指令 / 日志分析 / 环境搭建
1.2. Linux 必备知识
Linux 作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有 Linux 能力。
爱码小士 Linux 必备知识
Linux 系统简介与准备 Linux 作为现在最流行的软件环境系统,一定得会,从 CenterOS 版本系统进行介绍,安装,目录结构等基础内容学起,也为后续自建测试环境准备。
Linux 远程工具 Xshell 详细介绍如何入门使用 Linux,并进行常规的远程管理,文件传输操作,涉及其中的工具 Xshell,Xftp
Linux 文件属性与管理 Linux 文件,目录基本属性,文件操作,文件管理,目录操作,目录管理。切忌自毁行为操作,如何预防意外操作
Linux 用户与组管理 如何在 Linux 中新增,删除,修改用户与组,并赋予相应权限,不再因为权限问题而卡壳
Linux 文件编辑器 Linux 文件编辑器 vi 的使用,命令模式,输入模式,操作实例,快捷键,管道命令,使用心得。在一个没有图形化的系统下到底如何编辑的呢?
Linux 常用系统设置 网络设置,环境变量,磁盘管理,时间设置,系统资源,防火墙,应有尽有,不用担心毫无头绪。
Linux 安装软件 Linux 安装命令,以及如何通过 tar,gz 等网络上下载的安装文件进行安装,如 MySQL 数据库安装。
Linux Docker 容器 Docker 容器技术讲解,image 镜像管理,仓库,容器创建,启动,操作,镜像打包,赶上行业流行技术
1.3. Shell 脚本
掌握 Shell 脚本: 包括 Shell 基础与运用、Shell 逻辑控制、Shell 逻辑函数
爱码小士 Shell
Linux Shell 基础与应用 shell 脚本编程介绍,环境类型,变量,参数,运算符,数组的使用,零距离接触脚本
Linux Shell 逻辑控制 shell 逻辑应用,test 命令,流程控制,数据输入与输出,脚本逻辑不再单调,玩出花样
Linux Shell 函数 shell 脚本函数写法,文件互相调用,脚本实战应用,懂得开发,测试,运维都可以做什么
Windows 脚本批处理 Linux 玩够了,再来看看 Windows 常规命令用法,批处理脚本写法,实战应用,并不是到哪都是 Linux,Windows 脚本也是常用脚本之一,看到这里可能你就用的 Windows
1.4. 互联网程序原理
自动化必经之路: 前端开发基础知识以及互联网网络必备知识四、互联网程序原理
爱码小士 互联网程序原理
Web 前端开发基础 HTML、CSS 基本内容学习。为什么测试课程有开发? 对不起,如果不会,自动化可能不欢迎,很多自动化测试问题都出自于开发基础
Web 前端开发脚本 Javas
cript 最主流的脚本学习,同样的,这也会在自动化测试中涉及,在一些工具中其实也经常用到动态脚本,也是 Javas
cript 语言
开发者调试工具测试应用 虽然浏览器的 F12 被命名为开发者工具,但实际上测试不管在功能测试还是自动化测试中,都起到了很关键的作用。如解析 HTML,定位元素,调试脚本,监控网络抓包等等
互联网程序网络架构 通过网络架构详细理解互联网程序的诞生,逻辑细节,互联网通讯原理又是如何将数据传递到其他计算机的,TCP,UCP,HTTP,等等协议的关系又是什么。
HTTP 协议数据结构分析 完整解析 HTTP 协议数据结构,包括 Request、Respo
nse 数据格式,Header 的定义和用法各种状态代表什么,如何辨别错误。分析协议中参数的位置,rest 结构,各种常见的 body 数据形式,解析方式,常见数据解析错误的原因。
coo
kie 与 Session 机制 解读 coo
kie 到底是什么,和 Session 存在什么样的关系,如何测试 coo
kie 与 Session,需要注意什么
1.5. MySQL 数据库
软件测试工程师必备 MySQL 数据库知识,不仅仅停留在基本的 “增删改查”。
爱码小士 MySQL 数据库
MySQL 数据库测试应用 MySQL 环境搭建,客户端 Navicat 的基本使用与数据操作,学习并巩固基本的 SQL 语法,增删改查缺一不可,掌握各种条件的使用方法
MySQL 高级查询 查询升级,掌握多表查询,子查询,查询分组,统计函数的使用,并对经典面试题进行学习与分析
MySQL 自定义函数 既然有内置函数,当然也不缺自定义函数的位置,也是经常会使用到的,这就好比任意一种开发语言一样都离不开函数的定义与使用
MySQL 存储过程 SP 数据库必不可少的存储过程,通常也叫 SP,如何定义? 如何测试? 怎么样使用更安全,测试到底用存储过程还能做什么更多便于测试的内容
MySQL 事物与编程 数据库事务使用案例,索引的原理与使用,数据库 SQL 编程在测试中的应用,如何用其快速精准的产生大量指定的测试数据
1.6. 抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump 各种抓包工具适用于各种项目,总有一款适合你的
爱码小士 抓包工具
抓包原理与方式 只有了解抓包的原理,才能真正去用好一个适合的工具,选择合适的方向和方法,否则都是徒劳的
抓包工具选择 抓包工具的分类与功效,什么样的项目适合哪种工具,如何去辨别工具的优势
Fiddler 基础功能 作为专业的 HTTP 体系的抓包工具,详细介绍其工具原理,如何过滤数据,如何搜索想要的数据,如何对 web,非 web,手机,HTTPS 协议等各种环境进行抓包
Fiddler 高级功能 学会使用其进行接口测试,断电,脚本等方式进行数据的修改,替换,模拟数据进行接口 Mock 测试,创建自己定义的菜单功能
Wireshark 与其说是抓包,更是一种抓包后的分析工具,在各个系统下利用其它与系统一体化的抓包工具进行数据抓取整理并展示,有着强大的过滤和分析功能
Sniffer 黑 科技 抓包工具,有多种版本,非常专业的抓包工具
Tcpdump Linux、Android 系列的系统中的抓包插件神器
1.7. 接口测试工具
接口测试神器,你绕不开的强大工具: Jmeter。小巧灵活: Postman
爱码小士 接口测试工具
Jmeter 接口测试入门 Jmeter 简介,环境准备,目录结构介绍 ,如何录制脚本,以及基础组件的使用,线程、作用域、HTTP 请求、定时器、断言等等
Jmeter 接口测试进阶使用 Jmeter 逻辑控制、前置处理器、后置处理器、监视器、结果树,如何参数化、正则表达式关联、事务、检查点等等。并带领大家对带有 token 等动态数据的项目进行实战演练
Jmeter 接口测试高级功能 Jmeter 脚本思考时间、随机时间、线程启动间隔、并发集合点、联机远程调用,webservice、websocket、jdbc、命令调用等等
Postman 接口测试工具使用 行业标准 HTTP、rest 接口测试神器,基本请求、分组保存、动态变量、脚本、数据关联、参数化、自动断言、批量运行、持续集成。思路类似其他接口工具,避免泛滥学习
1.8. Web 自动化测试 Java&Python
了解自动化的目的,熟练掌握 TestNG&unittest 自动化框架,以及断言与日志处理
爱码小士 Web 自动化测试 Java&Python
自动化框架思路引导 我们做自动化到底为了什么? 节省人力、加快速度、还是让机器代替手动、还是提升自我。应该如何建立思路,而非无脑进坑任机器摆布
Java&Python3 开发环境及基本语法 Java&Python 开发环境搭建,基础语法入门,让不会代码的以最快速度入门,方便适应后续自动化测试开发内容学习,代码够用即可,并不是学得越多越好
Java&Python3 集合类型与面向对象开发 Java&Python 各种基本类型、集合数据类型的理解与操作,循环语句、判断语句,面向对象的开发,函数的使用,类的使用
Selenium3 环境与浏览器驱动配置 基于 selenium3 的 web 自动化环境搭建,正确的浏览器配置,不再为起不了浏览器而烦恼。支持 IE、Firefox、Chrome 等等
Selenium3 多种定位及动态操作 selenium3 常见定位方法,属性和值的获取,如何动态判断不一定存在的元素,复杂的网页结构,需要多步骤操作的元素等等
特殊情况处理 (js、特殊控件等) selenium3 自动化测试中,常见的特殊情况处理,如日期、控件、智能等待、文件上传下载、网页嵌套结构,各种弹窗的处理方式,coo
kie 处理,Javas
cript 脚本调用等
TestNG&unittest 自动化框架使用 Python unittest、Java TestNG 自动化框架的使用,环境处理、基本使用逻辑,数据驱动模型,数据库数据载入等
自动化框架断言与日志处理 自动化中最重要的是什么? 作为测试当然是断言,没有断言的自动化毫无用处,如何展示日志与结果是自动化测试的根本
PageObject 框架设计模式 PageObject 框架设计模式,到底是做什么的? 如何更好的快速管理控件,从此做起
1.9. 接口与移动端自动化
专业接口调用、测试解决方案。组建完整的 web 和接口自动化框架,Appium 整体使用
爱码小士 接口与移动端自动化
接口自动化方案 Requests Python Requests、Java HTTPclient 接口框架,都是专业的接口调用、测试的解决方案,使用简单快速,结合工具的使用方式和功能,快速上手并对其操作,解决其中的疑难杂症
web + 自动化框架整合 自动化测试是相通的,如何将 web 与接口、甚至更多的测试类型和方向结合起来,组成完整的自动化框架
Appium 环境搭建 Appium 环境相对复杂,针对 Android 系统进行完整的环境搭建演练,解决环境上的问题,并进行基本的自动化操作
Appium 自动化实战与框架结合 Appium 整体使用与 web 自动化类似,引导使用典型功能,并针对一款 APP 进行实战操作
1.10. 敏捷测试 & TestOps 构建
揭开 TestOps 的神秘面纱,持续集成 Jenkins 框架烂熟于心
爱码小士 敏捷测试 & TestOps 构建
构建敏捷测试运维架构体系 敏捷测试是什么? 为什么需要敏捷,行业都提到的 devops 又是什么? TestOps 能做什么
持续集成 Jenkins 框架实战 持续集成最常见的一套框架,介绍 Jenkins 操作、权限、系统管理等,常用构建与运行实例讲解
静态扫描测试 So
nar 一款自动化的代码扫描工具,便捷式快速扫描代码中的问题,做到提前发现,统一规范,自动化中的代码测试神器
1.11. 性能测试 & 安全测试
软件测试的彼岸: 性能测试和安全测试,选个方向努力爬坑吧!
爱码小士 测试基础
性能测试学习路线 如何学习性能测试,性能测试到底该怎么学习,使用什么工具? 工具并不代表性能,接口的基础对性能测试非常重要,而工具只是辅助,更多的是思路和策略。你不会并不是分析而是准备阶段
loadrunner 脱离浏览器录制专题 IE 无法启动被测网站? 打不开浏览器? 程序无法在浏览器中被打开? 这些都没关系,还是一样能录制,但录制是偷懒专用的,对于学习有一定的辅助作用,也会带入无法脱离的坑
性能测试工具操作实践 loadrunner、jmeter,有了前面的基础使用,看懂脚本不是问题,带上关键的参数化、动态数据关联、事物、日志,大部分的脚本都可以搞定进行实践
系统监控方案实施 工具自带监控? 系统监控? JVM 内部监控? 数据库监控? 各种监控的意义何在,如何在各种情况下精准监控数据
安全测试起源与工具介绍 应该如何进行安全测试,安全测试都有哪些分类? 都会用到什么样的工具,各自的作用又是什么,如 web 漏洞扫描,端口扫描,系统扫描等
web 安全测试手工实战 接口测试在安全中的作用,不会手动的安全测试,那就永远无法理解自动化以后产出的结果
安全扫描工具测试实践 实际介绍以及使用 APPscan、awvs 等专业安全扫描工具
企业安全建设 (SDLC) 企业应该如何进行安全建设,制定更安全的软件生命周期。从哪些方面进行着手
软件测试的前景如何?
软件测试工作有前途。
软件测试就业前景挺好的,目前IT行业对于软件测试方面的人才需求是非常大的,软件产品的质量对于一个软件来说是攸关生死的,各企业越来越重视软件产品质量,而软件测试的工作就是让软件质量越来越好,还有就是软件测试的工资待遇是非常好的,和其它职业相比,月入上万要简单的多,随着时代的发展,软件也越来越普及,所以人才需求量和前景都是不错的。
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的功能或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。最直观的目的肯定是通过对软件系统或程序的测试,发现其中的错误,也是目前和未来比较热门的一个行业。
微信搜索学分高考添加关注,随时了解更多艺考、留学、等教育资讯!文章共16182字