软件测试与开发的发展选择问题

请问,我感觉软件方面的工作主要分为开发和测试,不能说测试不好,因为这一行可以一直做下去,但是最好能够有一定的开发经验作为背景,会令自己可以在测试这一行当做的长远做的更好。所以想问一下各位前辈我的想法是否正确,如果正确的话,请问做多久的开发转为测试比较合适
手机终端测试和软件测试应该技术宏观上来讲应该是相通的吧?那么做手机终端测试的前景如何呢?
如果只是开发出身,但是做过的相关实际项目,是不是不太合适呢?听说测试是越老越吃香啊!!

测试越老越吃香,这句话说的不错。但是“老”指的可不是年龄,而是我们的经验老到,并且强调一下,测试经验和开发经验是不一样的。
我们先拿微软公司的测试工作内容来看看,基本了解一下软件测试是干什么,你就好选择了。
微软的软件测试工作
1. 基本情况
测试在微软公司是一项非常重要的工作,微软公司在此方面的投入是非常巨大的。微软对测试的重视表现在工程开发队伍的人员构成上,微软的项目经理、软件开发人员和测试人员的比例基本是1:3:3或1:4:4,可以看出开发人员与测试人员的比例是1:1。对于测试的重视还表现在最后产品要发布的时候,此产品的所有相关部门都必须签字,而测试人员则具有绝对的否决权。
测试人员中分成两种职位,Software Development Engineer in Test(测试组的软件开发工程师)实际上还是属于开发人员,他们具备编写代码的能力和开发工具软件的经验,侧重于开发自动化测试工具和测试脚本,实现测试的自动化。Software Test Engineer(软件测试工程师)具体负责测试软件产品,主要完成一些手工测试以及安装配置测试。
2. 测试计划
测试计划是测试人员管理测试项目,在软件中寻找Bug的一种有效的工具。测试计划主要有两个作用,一是评判团队的测试覆盖率以及效率,让测试工作很有条理的逐步展开。二是有利于与项目经理、开发人员进行沟通。有了测试计划之后,他们就能够知道你是如何开展测试工作的,他们也会从中提出很多有益的意见,确保测试工作顺利进行。总之,有了测试计划可以更好的完成测试工作,确保用户的满意度。
测试人员在编写测试计划之前,应获得以下文档:
1)程序经理编写的产品功能说明书或产品开发计划;
2)程序经理或开发人员提供的开发进度表。
根据产品的特性及开发进度安排,测试人员制定具体的测试计划。测试计划通常包括以下内容:
1)测试目标和发布条件:
a. 给出清晰的测试目标描述;
b. 定义产品的发布条件,即在达到何种测试目标的前提下才可以发布产品的某个特 定版本。
2)待测产品范围:
a. 软件主要特性/功能说明,即待测软件主要特性的列表;
b. 特性/功能测试一览,应涵盖所有特性、对话框、菜单和错误信息等待测内容,并列举每个测试范围内要重点考虑的关键功能。
3)测试方法描述:
a. 定义测试软件产品时使用的测试方法;
b. 描述每一种特定的测试方法可以覆盖哪些测试范围。
4)测试进度表:
a. 定义测试里程碑;
b. 定义当前里程碑的详细测试进度。
5)测试资源和相关的程序经理/开发工程师:
a. 定义参与测试的人员;
b. 描述每位测试人员的职责范围;
c. 给出与测试有关的程序经理/开发工程师的相关信息。
6)配置范围和测试工具:
a. 给出测试时使用的所有计算机平台列表;
b. 描述测试覆盖了哪些硬件设备;
c. 测试时使用的主要测试工具。
此外,还应列出测试中可能会面临的风险及测试的依赖性,即测试是否依赖于某个产品或某个团队。比如此项测试依赖性WindowsCE这个操作系统,而这个系统要明年2月份才能做好,那么此项测试就可能只有在明年5月份才能完成,这样就存在着依赖关系。如果那个团队的开发计划往后推,则此项测试也会被推迟。
3. 测试用例开发
一个好的测试用例就是有一个合理的概率来找到Bug,不要冗余,要有针对性,一个测试只针对一件事情。特别是功能测试的时候,如果一个测试是测了两项功能,那么如果测试结果失败的话,就不知道到底是哪项功能出了问题。
测试用例开发中主要使用的技术有等价类划分,边界值的分析,Error Guessing Testing。
等价类划分是根据输入输出条件,以及自身的一些特性分成两个或更多个子集,来减少所需要测试的用例个数,并且能用很少的测试用例来覆盖很多的情况,减少测试用例的冗余度。在等价类划分中,最基本的划分是一个为合法的类,一个为不合法的类。
边界值的分析是利用了一个规律,即程序最容易发生错误的地方就是在边界值的附近,它取决于变量的类型,以及变量的取值范围。一般对于有n个变量时,会有 6n+1个测试用例,取值分别是min-1, min, min+1, normal, max-1, max,max+1的组合。边界值的分析的缺点,是对逻辑变量和布尔型变量不起作用,还有可能会忽略掉某些输入的组合。
Error Guessing Testing完全靠的是经验,所设计的测试用例就是常说的猜测。感觉到软件在某个地方可能出错,就去设计相应的测试用例,这主要是靠实际工作中所积累的经验和知识。其优点是速度快,只要想得到,就能很快设计出测试用例。缺点就是没有系统性,无法知道覆盖率会有多少,很可能会遗漏一些测试领域。
实际上在微软是采用一些专门的软件或工具负责测试用例的管理,有一些测试信息可以被记录下来,比如测试用例的简单描述,在哪些平台执行,是手工测试还是自动测试,运行的频率是每天运行一次,还是每周运行一次。此外还有清晰的测试通过或失败的标准,以及详细记录测试的每个步骤。
4. Bug跟踪过程
在软件开发项目中,测试人员的一项最重要使命就是对所有已知Bug进行有效的跟踪和管理,保证产品中出现的所有问题都可以得到有效的解决。一般地,项目组发现、定位、处理和最终解决一个Bug的过程包括Bug报告、Bug评估和分配、Bug处理、Bug关闭等四个阶段:
1)测试工程师在测试过程中发现新的Bug后,应向项目组报告该Bug的位置、表现、当前状态等信息。项目组在Bug数据库中添加该Bug的记录。
2)开发经理对已发现的Bug进行集中讨论,根据Bug对软件产品的影响来评估Bug的优先级,制定Bug的修正策略。按照Bug的优先级顺序和开发人员的工作安排,开发经理将所有需要立即处理的Bug分配给相应的开发工程师。
3)开发工程师根据安排对特定的Bug进行处理,找出代码中的错误原因,修改代码,重新生成产品版本。
4)开发工程师处理了Bug之后,测试人员需要对处理后的结果进行验证,经过验证确认已正确处理的Bug被标记为关闭(Close)状态。测试工程师既需要验证Bug是否已经被修正,也需要确定开发人员有没有在修改代码的同时引入新的Bug。
5. Bug的不同处理方式
在某些情况下,Bug已处理并不意味着Bug已经被修正。开发工程师可以推迟Bug的修正时间,也可以在分析之后告知测试工程师这实际上不是一个真正的Bug。也就是说,某特定的Bug经开发工程师处理之后,该Bug可能包括以下几种状态。
已修正:开发工程师已经修正了相应的程序代码,该Bug不会出现了。
可推迟:该Bug的重要程度较低,不会影响当前应提交版本的主要功能,可安排在 下一版本中再行处理。
设计问题:该Bug与程序实现无关,其所表现出来的行为完全符合设计要求,对此应提交给程序经理处理。
无需修正:该Bug的重要程度非常低,根本不会影响程序的功能,项目组没有必要在这些Bug上浪费时间。
五、成为优秀测试工程师的要求
要成为一名优秀的测试工程师,首先对计算机的基本知识要有很好的了解,精通一门或多门的编程语言,具备一定的程序调试技能,掌握测试工具的开发和使用技术。同时要比较细心,会按照任务的轻重缓急来安排自己的工作,要有很好的沟通能力。此外,还要善于用非常规的方式思考问题,尽可能多的参加软件测试项目,在实践中学习技能,积累经验,不断分析和总结软件开发过程中可能出错的环节。这样,一名优秀的测试工程师就从软件测试的实践中脱颖而出了。
结束语:微软的软件开发经验积淀深厚,微软工程师们的授课生动溢彩,其中有些内容是结合编程代码所作的详细讲解,较难用介绍性文字加以概括提炼,加之笔者受能力和精力所限,只能撷取部分精华内容整理成文以飨读者,因此难免是挂一漏万,甚至会有失误之处,敬请对本系列文章的关注者谅解及指正。最后对微软老师们的辛勤付出再表由衷谢意!
测试专业知识很多,学习主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
说这么多的意思希望楼主能够明白,好好考虑一下,如果真想在测试这条路上发展下去应该付出怎样的努力,不要看网上那些测试不需要基础,容易上手,职业寿命长等等的话,首先提高自身的水平,去学习,去充电才是最重要的
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-23
做过开发的话做测试就会很容易!我个人认为还是做软件开发比较实在,做的多了有 经验了还可以自己做一些实用的软件。从某种意义上来说做软件开发的经验多了的话自己就能做出好的程序,最好和网络相结合!其实发开的过程中就包括了测试,而专业的软件测试就是找到发开过程中还没有找到的BUG。至于做多长时间转测试没有一个具体的时间!
学海无涯啊!
第2个回答  2019-08-19
  软件开发是通过写代码来生成一个软件,也就是从无到有的过程。而软件测试则是测试一个软件有没有问题,能不能上线,也就是把软件变得更好,起到把关质量的作用。软件开发是有产品产出的,而软件测试则没有,但是这并不影响软件测试的重要性。
  软件开发需要写大量的代码,要有很多的创造力,比较费脑。软件测试代码则较少,相对来讲轻松一些,只要耐心、细心就可以胜任。软件开发从业者随着年龄的增长,可能会因为脑力和体力跟不上而被迫转行。但软件测试则不会,因为它是一个需要很多经验,越老越吃香的行业。
  软件开发行业通常以男性为主导,软件测试行业则没有性别歧视,男女比例基本相当。软件开发人员有时为了赶项目进度常常需要加班熬夜,软件测试人员则不需要加班,正常跟着进度工作就可以了。
  从以上的对比可以看出,软件测试是个不错的从业选择。国外企业软件开发与测试人员的比例为1:1到1:2.5,国内企业的比例却是4:1甚至是10:1,可见软件测试行业的人才缺口相当大。软件测试的薪资水平相比于开发也不低,刚入行的软件测试人员起薪一般都在8000元左右。
  一般来说高校里都会设置软件开发相关的课程,但是不太会设置软件测试相关的课程,所以要想学习软件测试的话,要多方比较,找到靠谱的机构。

软件开发和软件测试哪个好
两者在软件开发周期中都是不可或缺的。软件开发是创造的过程,而软件测试则是保证创造物质量的关键环节。两者都需要专业技能和持续学习,并且都有广阔的职业发展前景。选择哪个领域更好取决于个人的兴趣、技能和职业目标。如果你喜欢编程、热衷于解决技术问题,并愿意不断学习和挑战自己,那么软件开发可能更...

软件测试和软件开发哪个好
软件测试是软件开发过程中的关键环节,它确保软件的质量和稳定性。测试人员需要细致入微地检查软件的功能、性能、安全性等,确保用户可以正常、稳定地使用软件。这一岗位更注重对细节的把握和严谨的态度。如果喜欢发现问题、解决问题,并且有耐心、善于沟通,软件测试是一个很好的选择。随着软件行业的快速发展...

Java软件开发和软件测试哪个好?
如果您对创建应用程序、系统和解决实际问题感兴趣,Java软件开发可能是一个不错的选择。Java是一门广泛使用的编程语言,可以用于开发各种应用,包括桌面应用、移动应用和企业级应用。软件开发人员通常负责设计、编码、测试和维护应用程序。这个领域的职业发展路径可以包括高级开发人员、架构师、技术领导等。软件...

软件测试和开发哪个好
选择软件测试还是开发,很大程度上取决于个人的兴趣和职业规划。如果你喜欢发现问题、善于做细节工作,那么软件测试可能更适合你。如果你热衷于编程、善于创新解决问题,那么软件开发可能是你的不二选择。无论是测试还是开发,都需要不断学习和掌握新技术,以适应快速发展的行业趋势。最终,无论是软件测试还是...

软件测试和软件开发哪个好呢
相对来说,测试在我国发展时间比较短,也随着产品功能越来越复杂,企业对于测试人员的技能要求也越来越高,因此就有了测试开发的概念,也是目前测试领域技能最全面的技术种类,因为数量比较少,所以学历只要在大专以上就可以。千锋官网每日更新最新软件测试基础知识内容,巩固日常学习中的基础技能。更有免费的...

学软件开发与软件测试哪个好
软件开发和软件测试是两个不同方向的工作,软件测试主要为软件开发做服务。主要就要看你的发展方向了。软件开发主要倾向于对技术有要求,对技术有爱好逻辑思维能力理解能力比较强。而软件测试,主要就是软件测试的经验,以及对不同程序的快速理解能力。还有更重要的一个就是细心,当然一个好的软件测试工程师...

软件开发与软件测试哪个强?
三、从职业发展上来看。测试人员后期更容易转到管理岗,因为测试人员对软件整理的把控能力较强,会从各个角度去思考问题。所以假如你之后想晋升到管理岗,那么选择软件测试,职业发展可能会更加顺畅。如果你想成为技术大牛,那么软件开发则更适合你。以上就是四川优就业小编整理的关于软件开发和软件测试哪个更...

学习软件测试和软件开发哪个好?
软件测试和软件开发哪个好?对于这个问题,不同的人有不同的见解。从职业发展前景上面来说,不少人会认为由于目前培养、从事了不少软件开发人员,而软件测试在国内尚处于新兴阶段,目前各大高校并未开设类似的专业,从事这一方面的竞争力将会小一些,并且企业将会更加注重软件产品的质量。但是从工资待遇上面...

测试好呢,还是开发比较好
从以上的对比可以看出,软件测试是个不错的从业选择。国外企业软件开发与测试人员的比例为1:1到1:2.5,国内企业的比例却是4:1甚至是10:1,可见软件测试行业的人才缺口相当大。软件测试的薪资水平相比于开发也不低,刚入行的软件测试人员起薪一般都在8000元左右。一般来说高校里都会设置软件开发相关的...

软件测试和软件开发有什么区别?
严格意义上来讲,软件开发和软件测试都有非常不错的职业前景。因为IT服务人类,IT改变人们的生活方式,IT对于现代社会而言非常重要。但从历史的角度来看,软件测试与软件开发的职业前景还是有一些区别的。【软件测试】:无论从行业现状,软件测试的重要性,以及软件测试发展史来看,至少在可以预见的未来10年...

相似回答