• 在给学员做入学评估和沟通过程中...等等,诸如此类问题,一一解答比较麻烦,现专门写下如下博文一篇,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求、性格要求、入职门槛、知识结构、竞争压力、职业...

    在给学员做入学评估和沟通过程中,包括在网络上很多人都在问如下相关的问题:做软件测试好,还是做软件开发好?学软件测试好,还是学软件开发好?软件测试和软件开发有什么样的区别和联系?在职业转行的过程中,如何来考虑转行做软件测试还是软件开发?等等,诸如此类问题,一一解答比较麻烦,现专门写下如下博文一篇,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求、性格要求、入职门槛、知识结构、竞争压力、职业发展、职业前景等。希望能给在选择软件测试与开发:朋友一个相对全面的解答。

    一、【基本素质要求】,这里的基本素质包括比如逻辑思维能力、分析问题能力、沟通能力、协作能力、怀疑精神等方面。

    【软件测试】:作为一名优秀的测试工程师,需要比较强的综合素质,具体包括比如“五心”,责任心、细心、耐心、专心、信心等,具体这里不阐述了,可以看我以前的相关博文;五大“学问”,逻辑学,很多公司在招聘的过程中会刻意来考察下测试工程师的逻辑思维能力。刑侦学,测试工程师需要通过分析问题的表象,借助专业的工具,良好的知识背景来分析问题背后深层次的根本原因。心理学,测试工程师,需要不仅仅站在用户的角度来测试,也需要清楚开发人员的心理,分析他们的出错模式。统计学,测试报告就是统计学知识很好的展现。经济学,好的测试一定是为了帮助提高软件质量,从而提高用户满意度,带来更多的市场,从而实现盈利。沟通能力体现在测试工程师需要跟开发人员和用户沟通。协作和怀疑精神对于测试工程师而言也是非常重要的素质。

    【软件开发】:需要说明一点的是,这里指的软件开发更多倾向于软件编码,不包含软件设计以及软件需求分析人员,这个是软件编码未来的职业方向。作为一名优秀的开发工程师,在素质方面,更偏向于某一个方面,对逻辑思维能力的要求相对测试工程师较低一点。因为在成熟的开发模式下,普通的编码人员更多地师掌握一门开发语言的语法和一个开发平台。所以在印度高中生都能编程,但是在中国行不通。从这个方面来看,对“五心”的要求和对“五大学问”的要求没有那么全面。如果说测试更强调综合素质,那么开发更看重某些方面的素质。

    二、【性格要求】,有人说性格决定命运,从某种意义上来说也是对的,性格会在一定程度上决定一个人的兴趣,一个人会喜欢那种类型的工作。

    【软件测试】:从全面性的角度来看,作为一名优秀的测试工程师,性格上最好是相对外向点,虽然这个不代表你需要像销售人员那样外向,善于与人交流。但起码你要愿意主动与开发人员,与用户沟通。另外,对于性格而言,要求测试工程师更加敏感,更具备怀疑精神,挑剔的,追求完美的性格以及刨根问底的心态也是比较重要的。从沟通的角度来看,太过于内向的人不太合适软件测试这个行业,起码不适合一线的测试工程师。

    【软件开发】:开发工程师对于性格来说,要求没有那么明显,性格的内向、外向更成为一名优秀的开发工程师关系不大。因为开发工程师更多的是面对开发环境,不断在修改代码?这里面也有不少工作是重复繁琐的。所以性格上要求是能承受寂寞的。所以写代码写得比较久的人,有时会觉得很急躁。改变这种急躁的办法有两个,一个是争取去做有思想的设计,有沟通的需求分析。另一个是该行,比如做开发管理或者是项目管理,亦或者是测试开发。

    三、【入职门槛】,这个部分是为想进入软件测试和软件开发领域的人而专门写的。网络上很多人都在说,软件测试入职门槛低,软件开发入职门槛高。其实这个观点有失偏颇。下面具体来比较。

    【软件测试】:客观上来讲,进入软件测试领域的方式更多,但不是入职门槛更低,比如有些人可以通过行业知识背景进入软件测试领域,具体比如金蝶、用友都有不少测试工程师是学财务的,而不一定是学计算机的。甚至有些人可以通过性格和基本素质进入软件测试领域,比如微软以前招过家庭主妇做软件测试。不是微软不重视测试,实际上微软比任何软件企业更重视软件测试,在微软所有产品里面,测试工程师比例比开发是要高的。还有些是从软件开发工程师转型做软件测试,所以进入软件测试领域的方式很多。正是因为方式多,就给人造成一种迹象是入职门槛低。还有从现状的角度来看,因为需求的因素,企业不经意间降低了对软件测试工程师的要求,但是这个是饮鸩止渴。很多企业慢慢发现了这个问题,所以说,以后测试工程师的要求会越来越高。

    【软件开发】:客观上来讲,进入软件开发领域方式相对较少,但也不是入职门槛更高,因为,在印度高中生都能编程。实际上掌握一门开发语言的语法,掌握一个开发平台,就可以做编码了。尤其在成熟的开发企业如此。所以国内的北大青鸟的ACCP就是为高中生准备的开发培训。但从学历的角度来看,高中生要想做软件测试还是非常困难的。只是因为,开发工程师必须要学一门编程语言,所以表面上看起来要求更高,还有一个因素是受传统因素的影响,做软件开发的人相比软件测试的人多很多,所以从竞争压力上来看,要求就更高了,是比较出来的高。

    四、【转行难度】,转行,其实最重要的原因不外乎就是以下几点:对现在的薪酬不满意、现在的职业出现了瓶颈、新的行业有更大的发展空间,喜欢新的工作方式等。这里就不讨论转行的动机,这里考虑更多的是转行的障碍,主要的障碍有,如何结合自身实际情况选择转行的方向?如何克服工作经验不足或不相关?如何克服专业知识匮乏?什么样的年龄适合?这部分是为转行做软件开发还是软件测试的人专门写的。网络上也有人不少人都在说,我只所以转行来做软件测试,是因为入职门槛低,前景好,是因为学得会,而软件开发我学不会。真的是这样吗?不一定。适合的才是做好的。

    【软件测试】:自身的实际情况,包括前面讲的基本素质、性格特点等,以及入职门槛因素,如果综合素质很全面、性格外向、沟通能力强,有不错的行业知识背景。比如有金融背景、财务背景、物流行业背景、证券背景、电子商务背景、移动通信背景等人。同时年龄在30岁以下,转行测试会比较合适。经过专业知识学习,结合行业分析加上有经验的人得指导。转行的难度还是比较小的。可行性还是比较高的。因为可以利用好自身的过去的一些东西。

    【软件开发】:转行开发的角度来看,很难只靠基本素质和性格特点就轻易地转行,这个难度比较大,从过去的知识背景的角度来看,转行开发比较难以利用上。所以过去的经历对于转行开发几乎没有帮助,从这点来看,要转行开发,就必须接受从零开始,所以,年龄超过25岁,有过两年以及以上工作经验的人,不太合适转行开发。因为要浪费两年的工作经历。

       五、【知识结构】,知识结构决定职业发展,知识结构决定行业发展,包括未来职业规划的考虑,下面从一个优秀的测试工程师应该具备的知识结构来对比软件测试与软件开发。
    

    【软件测试】:一个优秀的测试工程师需要的知识结构,从全面性角度来看,包括如下几个方面,第一是计算机知识,包括编程语言,掌握至少一门开发语言,比如c、java、C#等,一门脚本语言,比如Tcl、python、Perl、Ruby、Shell中对于测试工程师未来更广的职业发展非常有帮助。数据库知识,虽然并不是所有的测试工程师都需要掌握一门数据库,比如做移动互联网的,对数据库要求相对较低,但对于大部分大型项目,都会有数据库,所以掌握至少一门数据库,比如Oracle、DB2、Mysql等。另外操作系统,比如Linux、Unix核心命令也非常重要。对于有些涉及到网络的,网络和通信知识,比如Tcp/IP协议也非常重要。另外数据结构、软件工程等其他计算机知识也最好也具备。第二部分是软件测试核心技术,掌握软件测试核心的方法论,具体包括软件测试需求分析与软件测试用例设计核心工程方法。掌握主流的软件测试工具,比如性能测试工具LoadRunner,自动化工具典型代表QTP,测试管理工具QC、51Testing的TP、开源测试管理工具Testlink、Bugzilla、Bugfree、Jira等。掌握核心的研发流程,比如RUP,测试流程,比如双V模型,或者是现在流行的敏捷测试等,也是同样重要。方法是秘笈、工具是兵器、流程是套路。虽然测试好比武术,棍术好比黑盒测试,剑术好比白盒测试。不同的武术对知识结构要求是不一样。这个也是前面讲到的进入软件测试领域的方式相比开发要多的原因之一。第三个部分是行业知识与背景,这个对于有些行业而言,非计算机专业的人会有些相对的优势。第四部分是英语,英语好对于做好软件测试也有非常大的帮助,尤其是国际化软件测试。

    【软件开发】:一个优秀的软件开发工程师需要的知识结构,从全面性角度来看,包括如下几个方面,第一也是最重要的是精通至少一门编程语言语法,比如Java、C、C++、C#等,至少熟悉一个开发平台或工具,跟具体开发语言对应的平台,比如Eclipse、Netbeans、VC等。熟悉一门数据库,比如Oracle、DB2、Mysql等,熟悉操作系统,比如Linux、Unix包括相关的编译环境,比如gcc等。熟悉软件工程、熟悉算法、数据结构。这个方面可以多看看,设计模式方面的书籍。第二部分是英语,英语对于做好软件开发也有非常大的帮助,因为开发平台和环境都是英文为主。英语也有助于帮助理解一个编程语言的语法。

    六、【竞争压力】,竞争压力的分析有助于帮助我们选择,选择大于努力指的是,同样花5年的时间,所能达到的不同的程度。竞争压力的大小取决于行业发展现状。行业越成熟,竞争压力越大。

    【软件测试】:软件测试的发展史相对于软件开发来看,相对来说是不太成熟的,尤其是在中国。从很多猎头招聘网站包括51Testing论坛的招聘板块来看,想招一个10年左右测试经验的人,很难。原因是真正意义上软件测试的兴起基本上在2000年左右才开始。发展到今天,软件测试从业人员和软件开发从业人员的比例相比国外成熟的1:1的比例还是相差甚远。所以相对来说,竞争的压力相对较小。严格意义上来说,软件测试在中国的情况,还是乱世,所以乱世出英雄。另外,很多企业已经意识到软件测试对于软件质量的重要性,很多的软件事故迫使企业真正思考测试的核心价值。所以客观上也导致了,软件测试需求在增加,虽然对测试工程师的要求越来越高。

    【软件开发】:软件开发的发展史相比软件测试来看,相对来说还是比较成熟的,虽然相比印度等软件大国来看,远不如别人成熟。软件开发在2000年左右的时候很火,曾经有一句口号是“学好C++,走遍深圳都不怕”。当时的深圳严重缺少C++人才。但现在市面上其实不缺少初级的开发工程师了。因为初级的已经相对饱和了。另外做开发,如果3年时间内都只是做编码的工作,也会遇到职业瓶颈。另外从学习的角度来看,开发平台和语言的更新相比测试平台还是要快一点。所以客观意义上也导致软件开发的压力大些。另外在同一个企业里面,正常来讲,开发加班会比测试加班要多。

    七、【职业发展】,关于职业发展,以前也写过关于测试的职业发展的文章,51Testing网站上也有不少,但是对比开发的职业发展,还是比较少的。其实测试与开发的职业发展在有些方面是一直的,比如将来都可以往管理方向发展,也都可以考虑往需求分析方面发展。甚至也都可以往咨询和培训服务方面发展。这些是他们的共同点。

    【软件测试】:前面讲到过,软件测试从综合素质,知识结构等角度来看,要求比软件开发要更全面,这也直接导致了,软件测试的职业发展路线要广于软件开发,在测试技术领域,可以从测试执行工程师、测试设计工程师、测试系统工程师、测试架构工程师、测试专家这个道路晋升,也可以走比如自动化测试、测试开发、性能测试、易用性测试、安全性测试等专项。另外从管理的领域来看,可以从普通测试工程师,测试项目经理、测试主管、测试经理、测试总监、大部门测试总监等晋升。另外从外围IT职业,测试还可以走行业测试专家,比如金融领域测试专家,项目管理、软件测试咨询与培训等、软件质量保证(SQA)、软件销售、技术支持等只要是IT领域的职位都行。

    【软件开发】:软件开发的职业发展其实也比较广泛,在开发技术领域,可以从软件编码、软件设计与架构、软件需求等领域晋升。也可以从普通开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。另外也可以转型来做测试,通过学习测试关键技术,来做测试领域的测试开发。但从外围IT职业,开发相比测试能走的相对还是要窄些,很难走行业专家,除非先走需求分析,最后走行业专家。

    八、【职业前景】,严格意义上来讲,软件开发和软件测试都有非常不错的职业前景。因为IT服务人类,IT改变人们的生活方式,IT对于现代社会而言非常重要。但从历史的角度来看,软件测试与软件开发的职业前景还是有一些区别的。

    【软件测试】:无论从行业现状,软件测试的重要性,以及软件测试发展史来看,至少在可以预见的未来10年时间内,整个软件测试行业应该会处于蓬勃发展这样一个生命周期中。因为一项职业从孕育、发展、成熟、稳定需要一定的时间来承载。这点,大家也可以从一些官方的数据来看到。

    【软件开发】:从长远来看,还是不错的,但是相对于生命周期来看,软件开发早已经不是以前很多企业只是关注把软件做出来,就像现在要做出一个类似于淘宝的电子商城,其实从功能上,从代码实现上来看,已经很成熟了,花几千块可以买现成的模板,定制下,就可以。所以开发模式在改变,工厂化,模块化思想已经很成熟。所以将来的软件开发一定会关注,个性化、差异化。从这个意义上来看,软件开发的职业前景会受到需求的影响。另外,从行业资讯来看,比较新的开发技术会得到关注。老的慢慢会淡化。

    总体而言,如果非得要在软件开发和软件测试做一个结论性的比较,还是比较困难的,所以给每一位看到此文章的人一个建议,如果你很难选择把哪个作为自己的职业来思考。就强烈建议你可以问下这两个领域资深的人,他们的建议对于你来说应该比较关键。另外,清楚地问下如下几个问题:一个是,你的优点是什么?缺点是什么?第二个是,你想做什么样的工作?你能做什么样的工作?第三个是,有哪些事情是一定要靠自己的,有哪些事情是一定要借助外力。所以,有时我们不仅仅是要埋头干活,也需要抬头看路,另外,人生没有捷径可走,但要懂得借势而上。如果你对你的职业不满意,转行是一种选择,树挪死,人挪活。只是在挪的时候,分析下自己,因为你可以改变你自己。分析下外部的环境,因为你需要去适应环境。

    展开全文
  • 掌握软件测试的理论知识:软件测试定义、软件测试分类以及软件测试常用的方法等。(网上一搜全是理论知识,不做多说,这里可以往这个方面学习)。当然还需要有强烈求知欲,沟通流畅,追求完美:我第一就想到处女座...

    通常二选一,最残酷。选择一种必然要放弃另一种。但是对于测试和开发,你中有我,我中有你才是最高境界。到底哪款适合你呢?

    一个测试员的“宽度“

    掌握软件测试的理论知识:软件测试定义、软件测试分类以及软件测试常用的方法等。(网上一搜全是理论知识,不做多说,这里可以往这个方面学习)。当然还需要有强烈求知欲,沟通流畅,追求完美:我第一就想到处女座(非黑哈),测试员应该具备怀疑且追求完美的态度,虽然不是针对所有,但是顺畅的沟通却是必要的。

    职业发展方向:优秀的软件测试工程师不仅仅要掌握计算机知识,掌握编程语言,掌握至少一门开发语言(如C、JAVA等),对以后的职业发展来说,能具备开发的一些专业知识更有利于以后的职业发展。数据库知识:操作系统关于Linux、Unix核心命令。网络通信知识。还有一点就是掌握主流的软件测试工具:1、自动化测试工具典型代表(QTP最最经典,众人推啊),不必说很强大;2、TestWriter(不算主流,因为是免费,可以做基础的操作),UI自动化测试工具,零编码简单易进行数据维护;3、测试管理工具QC;4、还有接触的性能测试工具Jmeter,很简单自学也可以的

    软件开发:专注技术一百年

    软件开发,当然是针对以上测试人员需要了解的知识来讲,开发人员更加需要精通掌握数据库知识、精通开发语言、精通操作系统、以及网络知识等等。一般做开发的,都是很能耐住性子的,因为写代码时间很花时间以及枯燥的事情,而对于身体的硬性要求比较大,常常会遇到加班赶项目的事情,故也对身体素质有要求。职位晋升上,一般经历开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。软件开发纯纯的技术岗位啊。但是工资水平相对软件测试而言,是会高些。

    职业本就无关性别

    网上很多人问,女生适合软件测试还是软件开发。我只想说,从以上看来。职业本身是无关性别,但需要大家从能力、身体素质、个人兴趣这些客观因素去考虑哦~重点是我就是女生。

    展开全文
  • 本文主要说明的是从事软件测试行业需要必备的知识,以及该如何学习,主要给大家提供一些比较优秀的书籍,并给出学习的顺序。希望通过阅读本文,读者可以明确该如何学习测试,并学习哪些知识。由于仅是个人建

        近来,软件测试行业发展迅速,企业越来越重视测试了。越来越多的人加入了测试大军中,很多人也想通过自学来学习软件测试技术加入这个行业,但是现在软件测试的书籍越来越多,也良莠不齐,而且软件测试涉及的技术也越来越多。本文主要说明的是从事软件测试行业需要必备的知识,以及该如何学习,主要给大家提供一些比较优秀的书籍,并给出学习的顺序。希望通过阅读本文,读者可以明确该如何学习测试,并学习哪些知识。由于仅是个人建议,如有错误不妥的地方,敬请提出批评。


    一、软件测试基础知识

        要想进入测试这个行业,就必须要了解什么是软件测试,该如何测试?

    这部分的学习目标掌握软件测试的基本概念、软件测试的流程,并能熟练的应用常见的用例设计方法来设计测试用例。掌握常见的测试方法和类型,并知道如何进行每个阶段的测试。

    下面是推荐的参考书:

    1、软件测试(原书第2版) (美)佩腾(Patton,R.) 著,张小松 等译

    这本书可以用来作为进入行业的第一本书,本书讲解的都是实用的技术,通过阅读本书可以快速的去学会如何测试软件。个人建议,这本书至少要读3遍以上。

    看完这本书,自己可以去找一个项目(可以到开源中国上查找)来测一测,应用一下学的知识,找一找缺陷。在测试这个项目中要体会一下测试的流程,学习如何搭建测试环境。

    2、软件测试的艺术(原书第3版)  (美)梅耶 等

    第二本就是这本软件测试的“圣经”,这本书据说是硅谷测试人员必备的书。这本书最值得看的地方就是测试的思想。阅读这本书可以让你有豁然开朗的感觉。

    3、计算机软件测试(原书第2版) (美)卡尼尔

    这本书也是值得一读的,同样也是非常适合初学者阅读的。

    4、全程软件测试 朱少民

    上面的都是外国人写的,来本国产的。


    还有很多经典的测试书,例如:Paul C.Jorgensen的软件测试(第2版)这本书,但是笔者认为他不是很适合初学者,这本书都是用来做研究生教材的,做过一段测试的可以来看看。


      二、软件测试进阶书籍

    这部分主要是针对有过一年左右测试经验的,真正测试过几个项目的。推荐的参考书主要是提高测试效率的,一些测试的经验。

    1、有效软件测试

    这本书主要是给软件测试的各个阶段提出了一些建议,一共50条。这些建议都十分中肯,值得一读。

    2、软件测试经验与教训

    听书名也应该了解了一大半了吧,这本书一共给出了293条经验,阅读它吧。它会让你重新思考关于测试的基本理论。


      还有一些很好的书籍了,但是没有读过的就不做推荐了。


      三、自动化测试

    我们都知道,目前自动化测试是软件测试的趋势,而且目前公司在招聘的过程中都会考察自动化相关的知识。这里我们介绍一下QTP和Loadrunner等测试工具。

    目标:掌握自动化测试的概念、流程和方法。能够使用相关的工具进行自动化的测试。

    QTP部分:

    目标:掌握QTP的测试流程、工作原理和基本使用。能够使用QTP进行自动化测试。进阶需要掌握自动化框架设计的原理,并能独立设计自动化框架。

    目前网络资源很丰富,有很多前辈录制了很多视频,大家可以先来看看。

    1、IT播吧 - 小强老师零基础学习软件测试系列视频教程之QTP学习指南

    首先可以先看这套视频,这里主要讲的是QTP的基本使用。学习视频的过程中,最好能够独立的测试QTP自带的飞机订票的例子。这个最好了,QTP的基本使用就没问题了。

    2、精通QTP——自动化测试技术领航  余杰 赵旭斌 编著

    第一个视频还是讲的录制和回放,并且也是以飞机订票作为的例子,但是实际工作中,很少有录制的项目,基本上都是需要自己开发脚本的。所以这本书会给你很大帮助的。

    3、QTP自动化测试权威指南(第二版)

    这本是QTP的大牛Tarun Lalwani的经典力作,公认的QTP测试的“圣经”。无论是初学者还是使用过QTP的都应该好好的读一读。


    LoadRunner部分:

    目标:掌握性能测试的常见术语,性能测试的方法和流程。能够熟练使用Loadrunner。进阶的话需要学会分析性能报表,找到性能瓶颈,进行性能调优。但是这个过程并不是看基本书就可以达到的,需要不断的积累测试经验才能做到的。(努力吧)

    1、IT播吧 - 小强老师零基础学习软件测试系列视频教程之Loadrunner学习指南

    还是这个视频,学过这个视频基本上可以独立的使用Loadrunner执行性能测试用例了。

    2、精通软件性能测试与LoadRunner最佳实战

    在来一本入门的书,这本书基本上算是Loadrunner的百科全书了吧,各个方面都有所涉及。

    3、捉虫记——大容量Web应用性能测试与LoadRunner实战

    这部分还需要掌握,类似QC这样的测试管理工具和Mantis等缺陷管理工具。


    自动化理论部分:

    1、软件测试自动化 (美)Daniel J.Mosley 等著

    2、软件自动化测试技术与实例详解(一本很老的书)

    3、自动化测试最佳实践


    四、其他技术

    上面的是和软件测试理论相关的知识,但是真正的想做好测试这些还是不够,还有一些必须要掌握的知识,下面一一列举一下。

    1、数据的技术

    目标:掌握SQL语句,重点在增删改查上。可以参考:http://blog.csdn.net/xc5683/article/details/8678255

    2、编程语言

    这里推荐的是Java,毕竟现在Java用的比较多。而且学会一门语言,在学习其他语言也是很容易的。

    目标:掌握程序设计的逻辑和面向对象的思想。掌握一门语言。

    目前这方面的视频非常多,大家可以找来自己看看。

    3、UML

    UML还是必须要会的,至少应该能看懂。毕竟大部分需求都是用它画的啊。

    4、操作系统

    这里说的服务器的系统,以Linux为例。

    目标:能够搭建常见的服务,解决相关故障。

    推荐大家看《鸟哥的私房菜这个系列》,除此之外,还有学会Shell编程。

    5、Web技术

    如果测试Web,对Web还是需要了解的啊。主要是Html+Css+JavaScript。


    先分享这么多,欢迎大家补充。

    最后奉上一些书籍的电子版:网盘下载

    欢迎大家参考:http://blog.csdn.net/xc5683/article/details/8094552

    展开全文
  • 目录 (一)软件测试的概念 (二)为什么选择软件测试 ...软件测试是一种趋势,它将在软件开发中占据越来越重要的位置; 测试和开发是两个关注点不一样的工作。开发的目标是实现功能,测试的目标...
    目录
    (一)软件测试的概念
    (二)为什么选择软件测试
    (三)研发和测试的区别

    (一)软件测试的概念

    • 软件测试:
      软件测试的基本操作就是找bug;可以理解为在规定条件下对程序进行操作,找出错误,并对程序或者系统是否满足预期功能做出评估。

    (二)为什么选择软件测试

    1. 软件测试是一种趋势,它将在软件开发中占据越来越重要的位置;
    2. 测试和开发是两个关注点不一样的工作。开发的目标是实现功能,测试的目标是确定功能是否能够正常运作。我选择测试主要是因为在这个过程中可以“发现”和“分析",软件测试讲究的是思路,尝试各种思路去发现问题,我觉得我可以在这方面充分的利用自己的发散性思维;
    3. 就性格方面来讲我觉得我也比较适合软件测试,具有好奇心,善于怀疑,同时考虑问题也比较全面,我觉得这在测试过程中是必不可少的;
    4. 还有就是成就感,研发是一个从0到1的过程,而测试是从1到1的过程,是在原来1的基础上把1变为一个更强壮的1,前后可以有一个明确的对比,更能从中获得成就感,进而更有动力。

    (三)研发和测试的区别

    1. 目的不同:

      研发是一个无中生有过程,是从0到1;
      而测试只是一个把1变为更好的1的过程,是在一个已有的系统上确保其质量的。

    2. 参与角色不同:

      测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成,单元/集成测试主要是由开发人员执行。调试由开发人员完成。

    3. 执行阶段不同:

      测试一般贯穿整个软件开发周期;
      研发只是在开发阶段。

    4. 难易程度:

      研发广度小,专业度高;
      测试广度大,专业度低。

    5. 技能要求:

      测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力。

    6. 工作环境:

      基本类似。

    7. 发展前景:

      自动化测试、安全测试等领域发展前景和研发基本一致。

    展开全文
  • 软件测试过程中,最主要的就是要掌握好软件测试的方法,掌握好了软件测试方法,有利于测试技能的大幅度提高。 软件测试方法 软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样...

          软件测试过程中,最主要的就是要掌握好软件测试的方法,掌握好了软件测试方法,有利于测试技能的大幅度提高。

    软件测试方法

           软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。

    一、根据是否要走查代码,分为白盒测试、灰盒测试、黑盒测试;

    二、分为手工测试、自动化测试和性能测试:

    手工测试:UI测试、冒烟测试、随机测试、本地化测试、安装测试、卸载测试;

    自动化测试:

    性能测试:健全测试、衰竭测试、负载测试、强迫测试、压力测试、恢复测试;

    三、根据是否要运行程序,分为静态测试和动态测试;

    四、按测试阶段可分为:单元测试、集成测试、系统测试、回归测试、验收测试、α测试_Alpha测试、β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT);

    五、其他测试方法:端到端测试、接受测试、安全测试、兼容性测试、可用性测试、比较测试、边界测试、强力测试、装配安装测试、隐藏数据测试、等价划分测试、判定表测试、深度测试、基于设计、文档测试、域测试、接口测试、逆向测试、非功能性测试、极限测试等。

    其中一些测试方法的定义

    端到端

           端到端测试,英文是End to End Testing。

           端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。

    健全测试

           健全测试,英文是Sanity testing。

           健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。

    衰竭测试

          衰竭测试,英文是Failure Testing。

          衰竭测试是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。

    负载测试

           负载测试,英文是Load testing。

           负载测试是测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。

    负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

    强迫测试

           强迫测试,英文是Force Testing。

           强迫测试是在交替进行负荷和性能测试时常用的术语。也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。

    压力测试

           压力测试,英文是Stress Testing。和负载测试差不多。

           压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

    恢复测试

           恢复测试,英文是Recovery testing。

           恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。

           恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均恢复时间,确定其是否在可接受的范围内。

     

    可用性

           可用性测试,英文是Practical Usability Testing。

           可用性测试是对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。

    比较测试

           比较测试,英文是Compare Testing。

           比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。来取长补短,以增强产品的竞争力。

    强力测试

           强力测试,英文是Mightiness Testing。

           强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机。

    装配安装

           装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的 Microsoft Office 2003安装在韩文版 的Windows Me 上,再验证所有功能都正常运行。

    隐藏数据

           隐藏数据测试在软件验收和确认阶段是十分必要和重要的一部分。程序的质量不仅仅通过用户界面的可视化数据来验证,而且必须包括遍历系统的所有数据。

           假设一个应用程序要求用户两条信息-----用户名和密码来创建帐户。这个用户输入这两条数据后保存。最后,一个确认窗口将通过数据库中找到这条数据来显示用户名和密码给用户。为了验证所有的数据保存是否正确,一个QA测试人员会在这个确认窗口简单的查看下用户名和密码。如果他们成功了?假设数据库记录了第三条信息----创建日期,它可能不会出现在确认窗口,而只在存档中才出现。如果创建日期保留的不正确,而QA测试人员只验证屏幕上的数据,那么这个问题就不可能被发现。创建日期可能就是一个bug,由于一个用户帐户保存了一个错误的日期到数据库中,这个问题也不可能会被引起注意,因为它被用户界面所隐藏。这只是一个简单的例子,但是它却演化出了一点:隐藏数据测试的重要性。

    判定表

           判定表的英文是decision table,是指一个表格,用于显示条件和条件导致动作的集合。

           定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

           判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

           在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题

    深度测试

           深度测试的英文Depth test ,是指执行一个产品的一个特性的所有细节,但不测试所有特性。

          当比较函数返回真的时候才显示出效果来。必须启用“#深度测试”,才能执行测试。不使用的时候需要关闭。

    基于设计

           基于设计的测试的英文是design-based testing,是根据软件的构架或详细设计引出测试用例的一种方法。

           一种基于设计模型的测试方法(Model Based TestIng System,MATIS).该方法利用用户界面自动生成方法,把设计模型中的类属性定义和实现中的控件属性组织在一起,构建描述界面的逻辑对照表,辅助测试脚本引擎执行自动测试脚本.借助设计模型中扩展的类定义,MATIS方法可以自动生成测试用例和测试数据。

    域测试

           域测试的英文是domain testing,定义参考等价划分测试(equivalence partition testing);

           一般分为单域测试和多域测试,其中单域测试包括设备测试和业务测试,设备测试包括测试某个系统的软交换设备、中继媒体网关设备、信令网关设备、接入媒体网关和IAD等设备。

           等价类划分有两种不同的情况:有效等价类和无效等价类。设计时要同时考虑这两种等价类,因为软件不仅要能接收合理的数据,也要能经受意外的考验。

           一有效等价类:是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

           二无效等价类:与有效等价类的定义恰巧相反。

    逆向测试

           逆向测试/反向测试/负面测试的英文是Negative Testing,测试瞄准于使系统不能工作。

           负面测试与正面测试的比较:

           负面测试(Negative testing)是相对于正面测试(Positive testing)而言的。它们也是测试设计时的两个非常重要的划分。简单点说,正面测试就是测试系统是否完成了它应该完成的工作;而负面测试就是测试系统是否不执行它不应该完成的操作。形象一点,正面测试就象一个毕恭毕敬的小学生,老师叫我做什么,我就做什么;而负面测试就象一个调皮捣蛋的孩子,你叫我这样做,我偏不这样做,而且和你对着干。开发人员也是最讨厌修改此类bug的。

    非功能性

           非功能性需求测试的英文是non-functional requirements testing ,是与功能不相关的需求测试,如:性能测试、可用性测试等。

           为什么非功能性需求很重要?

           在您设计解决方案的过程中满足功能性需求当然是很重要的。但是,如果没有考虑非功能性需求,您的解决方案则很难取得实效。

           非功能性需求特点:1.不要脱离实际环境;2.可靠性;3.可用性;4.有效性;5.可维护性;6.可移植性。

    极限测试

    简介

    极限测试本质上是为了满足极限测试的思想和流程而设计的一套测试策略和流程,其本身并不局限于使用特定的测试技术和方法。

    过程

    1.单元测试

    2.验收测试

        要熟记各个测试方法的意义,并且,灵活的运用它,这样,测试技能,将能更上一层楼。 

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 软件测试随着时间的发展,越来越受欢迎了。那么,你了解过软件测试吗?软件测试工程师工作累吗?跟随千锋一起来了解一下吧。  1、其实IT行业都需要经常加班的,所以软件测试和软件开发其实都一样。当然了,一般来说...
  •   软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...
  • 究竟什么是软件测试工作的相对稳定的内在特质呢?和开发有什么区别? 首先,我觉得还得从专职软件测试的产生说起。首先,软件行业最初是没有专职的测试人员和测试团队的,这个分工是后来形成的。其次,现在很多...
  • 问:软件测试的原则? 答:https://blog.csdn.net/weixin_30363263/article/details/102986878 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 1、将问题提交到缺陷...
  • 最近,我从一名软件测试人员正式成为了一名软件开发人员,我觉得这个角色转变的过程还是有一些值得分享的想法和意见的,希望能够对想成为软件开发人员的童鞋们有所帮助。 制定计划 当你有成为一个软件开发人员的...
  • 软件测试职业规划

    2017-10-15 16:24:01
     公司开发的产品专业性较强,软件测试人员需要有很强的专业知识,现在软件测试人员发展出现了一种测试管理者不愿意看到的景象:  1、开发技术较强的软件测试人员转向了软件开发(非测试工具开发);  2、业务能力...
  • 敏捷开发:包含各个工程师并发进行... (比如淘宝的开发,分为商品的浏览,添加购物车购买商品,支付,个人中心等等模块,都可以分别对一个模块同时进行开发测试使得一个模块能够正常使用) 传统和敏捷开发比较 ...
  • 软件测试类型按开发阶段分为单元测试,集成测试,确认测试,系统测试,验收测试 (1)单元测试:  单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作,单元测试需要从程序...
  • 软件测试人员能力素质要求一、基本素质要求1、良好的沟通能力2、扎实的工作作风3、全面的技术基础4、高级的综合素质二、对软件测试工程师的误区1、软件测试不可能发现所有错误,没必要较真2、软件测试工作琐碎而枯燥...
  • 如何在较短时间内熟悉软件测试的基础知识、并掌握一定的软件测试基本方法,读书就是一个比较好的办法。  因此小编整理了几本软件测试方面的书籍,本文首先介绍了软件测试书籍三步曲,分别是基础知识类、进阶类以及...
  • 千锋教育软件测试:敏捷测试流程 千锋教育的王晓军老师在对敏捷测试做出介绍的时候与现行的瀑布式测试流程做出过对比: 对于一个三个月的项目说,产品把需求分析完了给开发,然后产品就没事儿了;开发开发完成之后...
  • 序:这里的软件开发是狭义的定义, 也是一般...软件测试主要是设计测试计划和测试用例”(摘自网络)。根据软件工程对于开发流程的一般步骤:需求分析, 设计, 编码, 测试, 部署, 维护。按照这个流程,我们自然...
  • 通常二选一,最残酷。因为选择了一个就意味着必然要放弃另一...那对于测试开发,究竟你更适合哪一款呢? 其实要搞清楚怎么解决这个问题,最起码要先搞明白它们各自的工作职能是什么。 下面...
  • 1、软件测试的艺术(原书第3版) 从第1版付梓到现在已经30余年,是软件测试领域的经典著作:第一章以一个小测试作为引子,第二章阐述全书的核心思想,后面各章就讨论了详细的方式方法。所谓详细也是相对而言,能...
1 2 3 4 5 ... 20
收藏数 389,230
精华内容 155,692