![[��ǩ:����] [��ǩ:����]](https://www.xuefen.net//file/upload/img/7/274.jpg)
软件测试是很多小白转行IT行业的首选,那么软件测试到底是做什么的呢?今天就跟着四川优就业的小编来了解一下。
软件测试是对开发人员提交的软件进行测试,模拟用户使用,发现问题。它是一个系列过程活动,包括软件测试需求分析,测试计划设计、测试用例设计、执行测试等。它贯穿于软件测试项目的整个生命过程,在软件项目的每一个阶段,都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试工程师需要通过白盒测试、黑盒测试、等价类划分法、边界值方法等手段来找出程序错误,并提交给程序员修改。
那么白盒测试呢就是通过直接看代码来找bug,黑盒测试也就是手工测试,也就是在不看代码的情况下来测试功能有没有问题。灰盒测试则介于两者之间。单元测试、集成测试、系统测试则是通过不同单位进行测试。回归测试是二次测试,验收测试则是通过用户反馈来进行测试。等价类划分法、边界值方法、因果图法、判定表法、正交排列法、错误推算法、场景法编写测试用例属于功能测试,负载测试、压力测试则属于性能测试。
想要了解更具体的测试方法,来优就业学习软件测试吧。优就业的软件测试课程还是不错的。它的师资都是具备多年项目经验的精英,跟着他们学习,不用愁发展。另外,优就业采用的教学方式,使你的学习效率更高。
1、软件生产不能满足日益增长的软件需求;
2、软件生产率随软件规模与复杂性的提高而下降;
3、软件开发进度与成本失控;
4、软件系统实现的功能与实际需求不符;
5、软件难以维护;
6、软件文档配置没有受到足够的重视;
软件危机产生的原因可以从两个方面加以认识:一是软件产品的固有特性( 软件的不可见性和软件的规模和逻辑复杂性 ),二是软件专业人员的自身缺陷( 没有掌握正确的软件开发方法,对软件的开发与维护存在许多模糊、错误的认识,不可避免地导致许多软件错误 )。
软件生存周期包括 软件定义、软件开发、软件测试、软件使用、软件维护 等几个阶段
软件的可维护性是与软件设计密切相关,因此在软件的开发过程中应该重视对软件可维护性的支持。
软件生命周期的最后一个阶段是终止对软件系统的支持,即软件停止使用。
软件测试其实就是找代码的bug,发现软件的错误。那么软件测试工程师具体是怎么找bug的呢?
第一步.依据需求文档及设计文档,编写测试用例
软件测试工程师的第一大要务就是写测试用例,测试用例也是测试工作当中的重中之重,不管是执行测试还是评估测试,都需要有测试用例作为依据,所以作为软件测试工程师必须要会编写测试用例。编写测试用例的前提条件就是需求文档和设计文档。测试用例是执行测试的依据,也是评估测试的完整程度、漏测率的依据。
第二步.完成产品的集成测试与系统测试
软件测试分四个阶段:单元测试、集成测试、系统测试、验收测试。把各段或各模块的代码合成到一个组合当中,合成之后就叫做集成。集成测试就是测合成之后的诊断代码以及整个模块,更重要的是要测合成之后的数据传输,也就是测两者之间的接口有没有完成正确的数据传输。系统测试是把软件放在PC端或硬件系统上,看在哪种环境能够运行。
第三步.根据测试计划,搭建测试环境
测试不能单独依附于一个软件产品,需要在一定的测试环境中运行。也就是说后台一定要有流程和数据才可以测试,所以搭建测试环境也是很重要的一步。
第四步.依据测试用例执行手工测试,反馈跟踪产品BUG及用例缺陷
根据写好的测试用例,针对测试对象也就是软件来进行测试。测试的目的就是发现错误或软件的缺陷,及时地把问题和bug提交到软件缺陷管理工具上。
第五步.测试工具/系统的研究和应用
即使是手工测试,也需要有一定的测试工具,比如串口工具CQCRP。性能测试和自动化测试更需要测试工具,比如Loadrunner和QTP,集成测试和接口测试则需要用到postman。所以一定要会安装和使用测试工具,除此之外还需要掌握Linux的命令。
那么以上就是优就业小编介绍的软件测试工程师具体要做的一些工作。
在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他摸款的功能之间没有相互依赖关系。因此,有可能把每个模块作为一个单独的实体来测试,而且通常比较容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。在这个测试步骤中所发现的往往是编码和详细设计的错误。
二、子系统测试子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此,这个步骤着重测试模块的接口。
三、系统测试系统测试是把经过测试的子系统装配成完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。
不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。
四、验收测试验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试。验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。验收测试也称为确认测试。
五、平行运行关系重大的软件产品在验收之后不立即投入生产性运行,而是要再经过一段平行运行时间的考验。所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。这样做的具体目的有如下几点。
(1)可以在准生产环境中运行新系统而又不冒风险。
(2)用户能有一段熟悉系统的时间。
(3)可以验证用户指南和使用手册之类的文档。
(4)能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。
以上集中讨论了与测试有关的概念,但是,测试作为软件工程的一个阶段,他的根本任务是保证软件的质量,因此除了进行测试以外,还有另外一些与测试密切相关的工作应该完成。
软件测试 是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
Glenford J.Myers曾对软件测试的目的提出过以下观点:
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
(4)测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
(5)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
(6)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
(7)另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。一,测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
二,程序员应该避免检查自己的程序,软件测试应该由第三方来负责。
三,设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断、电源断电等。
四,应该充分注意测试中的群集现象。
五,对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。
六,制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
七,妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。1.发现一些可以通过测试避免的开发风险。
2.实施测试来降低所发现的风险。
3.确定测试何时可以结束。
4.在开发项目的过程中将测试看作是一个标准项目。第一步:对要执行测试的产品/项目进行分析,确定测试策略,制定测试计划。该计划被审核批准后转向第二步。测试工作启动前一定要确定正确的测试策略和指导方针,这些是后期开展工作的基础。只有将本次的测试目标和要求分析清楚,才能决定测试资源的投入。
第二步:设计测试用例。设计测试用例要根据测试需求和测试策略来进行,进度压力不大时,应该设计的详细,如果进度、成本压力较大,则应该保证测试用例覆盖到关键性的测试需求。该用例被批准后转向第三步。
第三步:如果满足“启动准则”(EntryCriteria),那么执行测试。执行测试主要是搭建测试环境,执行测试用例。执行测试时要进行进度控制、项目协调等工作。
第四步:提交缺陷。这里要进行缺陷审核和验证等工作。
第五步:消除软件缺陷。通常情况下,开发经理需要审核缺陷,并进行缺陷分配。程序员修改自己负责的缺陷。在程序员修改完成后,进入到回归测试阶段。如果满足“完成准则”(ExitCriteria),那么正常结束测试。
第六步:撰写测试报告。对测试进行分析,总结本次的经验教训,在下一次的工作中改。
软件测试过程管理,主要包括软件测试是什么样的过程,如何评价一个软件测试过程,如何进行配置管理和测试风险分析以及测试成本的管理。人类行为具有高度目标性,确立一个正确的目标有着重要的心理学影响。软件测试的心理学问题就是如何摆正测试的两个目标的关系,使得测试活动更加富有成效。
1.程序测试的过程具有破坏性
每当测试一个程序时,人们总希望为程序增加一些价值。利用测试来增加程序的价值,是指通过测试,找出并修改尽可能多的程序缺陷,从而提高程序的可靠性或质量。
因此,不要只是为了证明程序能够正确运行而去测试程序。相反,应该一开始就假设程序中隐藏着错误(这种假设几乎对所有的程序都成立),然后测试程序,发现尽可能多的错误。
事实上,如果把测试目标定位于要证明程序中没有缺陷,那么就会在潜意识中倾向于实现这个目标。也就是说,测试人员会倾向于挑选那些使程序失效的可能性较小的测试数据。另一方面,如果把测试目标定位于要证明程序中存在缺陷,那么就会选择一些容易发现程序缺陷的测试数据。而后一种态度会比前者给程序增加更多的价值。
事实上,如果在测试某个程序段时发现了可以纠正的缺陷,或者测试最终确定再没有其他缺陷,则应将这次合理设计并得到有效执行的测试称作是“成功的”。而所谓“不成功的”测试,仅指未能适当地对程序进行检查,未能找出程序中潜藏缺陷的测试。
“软件测试就是证明软件不存在错误的过程”。对几乎所有的程序而言,甚至是非常小的程序,这个目标实际上是无法达到的。因为即使程序完全实现预期要求,仍可能包含有缺陷。也就是说,如果程序不按要求工作,它显然有缺陷,但如果程序做了不要它做的事,它也有缺陷。
心理学研究告诉我们,当人们在干一件已经知道是不合适的或不可能做到的事时,往往他们的表现就相当糟糕。把程序测试定义为在程序中找出错误的过程,就使测试成了可以做到的任务,从而克服了心理上存在的问题。虽然这看起来像是个微妙的文字游戏,但对成功地进行软件测试有很大的影响。
总之,软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然最终人们还是要通过软件测试来建立某种程度的信心:软件做了其应该做的,而没有做其不应该做的。
2.程序员应避免测试自己的程序
由开发人员来测试自己的代码是一件很不妥当的事情。开发和测试生来就是不同的活动。开发是创造或者建立某种事物的行为,如一个功能模块或整个系统。而测试的重要目的是证实一个模块或者一个系统工作不正常。这两个活动之间有着本质的矛盾。一个人不太可能把两个截然对立的角色都扮演地很好,因此应当限制开发人员在测试中的参与,给他们比较合适的任务是进行最底层的测试——单元测试。
当一个程序员完成了设计与编写程序的建设性工作后,要一夜之间突然改变他的观点,设法对程序形成一个完全否定的态度,那是非常困难的。所以,大部分程序员都由于不能使自己进入必要的精神状态(不是抱着要揭露出自己程序中错误的态度),就不能有效的测试自己的程序。除了这个心理学问题之外,还有一个重要的问题:程序中可能包含由于程序员对问题的叙述或说明的误解而产生了错误。如果是这种情况,当程序员测试自己的程序时,往往还会带着同样的误解致使问题难以发现。
3.程序设计组织不应测试自己的程序
在宏观意义上,一个程序设计组织或一个工程项目是个有生命的有机体,它同样有心理学问题。在大多数情况下,人们都以“在给定日期内,以一定代价完成程序编制任务的能力”来衡量程序设计组织和项目管理人员的。这样做的理由是时间和成本指标便于衡量,而程序的质量很难度量。要程序设计组织在测试自己的程序时持客观态度是很困难的,因为如果用正确的定义看待测试,就不大可能按预定计划完成测试,也不大可能把耗费的代价限制在要求的范围以内。
软件生产的三个最重要的因素是:质量、进度和费用。由于费用和进度的限制,要开发一种高质量、快速交付和低成本的软件产品并不容易。也就是说要同时达到三个目标是困难的。因此在软件产品的开发中要权衡它们之间的关系,使软件的特性能满足用户的要求,这意味着软件产品的特性的度量和预计是必要的。
软件测试由独立测试机构承担有很多好处。独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行。独立测试可以避免软件开发者测试自己开发的软件,由于心理学上的问题,软件开发者难以客观、有效的测试自己的软件,要找出那些因为对问题的误解而产生的错误就更加困难。独立测试还可以避免软件开发机构测试自己的软件,软件产品的开发过程受到时间、成本和质量三者的制约,在软件开发的过程中,当时间、成本和质量三者发生矛盾时,质量最容易被忽视,如果测试组织与开发组织来自相同的机构,测试过程就会面临来自于开发组织同一来源的管理方面的压力,使测试过程受到干扰。
客观性——对软件测试和软件中的错误抱着客观的态度,这种客观的态度可以解决测试中的心理学问题,既能以揭露软件中错误的态度工作,也能不受发现的错误的影响。经济上的独立性使测试有更充分的条件按测试要求去完成。
专业性——独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量实践经验,形成自己的专业知识。同时软件测试也是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效应的必然途径。
权威性——由于专业优势,独立测试工作形成的测试结果更具信服力,而测试结果常常和对软件的质量评价联系在一起,专业化的独立测试机构的评价,更客观、公正和具有权威性。
资源有保证——独立测试机构的主要任务是进行独立测试工作,这使得测试工作在经费、人力和计划方面更有保证,不会因为开发的压力减少对测试的投入,降低测试的有效性可以避免开发单位侧重软件开发而对测试工作产生不利的影响。
以上就是一款软件的生产,为什么要进行软件测试的全部内容了,希望对大家有所帮助。愿我们如花绽放,不负韶华,学员们,加油!(本文共8549字)

微信扫码关注公众号
获取更多考试热门资料