loading
萌奶
赞赏支持
关注

软件测试的心理依据是什么?

萌奶

我能为了你拒绝所有人,可是怕终究你会负了我。

人类行为具有高度目标性确立一个正确的目标有着重要的心理学影响软件测试的心理学问题就是如何摆正测试的两个目标的关系使得测试活动更加富有成效

1.程序测试的过程具有破坏性

每当测试一个程序时人们总希望为程序增加一些价值利用测试来增加程序的价值是指通过测试找出并修改尽可能多的程序缺陷从而提高程序的可靠性或质量

因此不要只是为了证明程序能够正确运行而去测试程序相反应该一开始就假设程序中隐藏着错误(这种假设几乎对所有的程序都成立)然后测试程序发现尽可能多的错误

事实上如果把测试目标定位于要证明程序中没有缺陷那么就会在潜意识中倾向于实现这个目标也就是说测试人员会倾向于挑选那些使程序失效的可能性较小的测试数据另一方面如果把测试目标定位于要证明程序中存在缺陷那么就会选择一些容易发现程序缺陷的测试数据而后一种态度会比前者给程序增加更多的价值

事实上如果在测试某个程序段时发现了可以纠正的缺陷或者测试最终确定再没有其他缺陷则应将这次合理设计并得到有效执行的测试称作是成功的而所谓不成功的测试仅指未能适当地对程序进行检查未能找出程序中潜藏缺陷的测试因为软件中不可能没有缺陷没有找出它们当然测试是不成功的

软件测试就是证明软件不存在错误的过程对几乎所有的程序而言甚至是非常小的程序这个目标实际上是无法达到的因为即使程序完全实现预期要求仍可能包含有缺陷也就是说如果程序不按要求工作它显然有缺陷但如果程序做了不要它做的事它也有缺陷

心理学研究告诉我们当人们在干一件已经知道是不合适的或不可能做到的事时往往他们的表现就相当糟糕把程序测试定义为在程序中找出错误的过程就使测试成了可以做到的任务从而克服了心理上存在的问题虽然这看起来像是个微妙的文字游戏但对成功地进行软件测试有很大的影响

总之软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程一个成功的测试通过诱发程序发生错误可以在这个方向上促进软件质量的改进当然最终人们还是要通过软件测试来建立某种程度的信心软件做了其应该做的而没有做其不应该做的

2.程序员应避免测试自己的程序

由开发人员来测试自己的代码是一件很不妥当的事情开发和测试生来就是不同的活动开发是创造或者建立某种事物的行为如一个功能模块或整个系统而测试的重要目的是证实一个模块或者一个系统工作不正常这两个活动之间有着本质的矛盾一个人不太可能把两个截然对立的角色都扮演地很好因此应当限制开发人员在测试中的参与给他们比较合适的任务是进行最底层的测试单元测试

当一个程序员完成了设计与编写程序的建设性工作后要一夜之间突然改变他的观点设法对程序形成一个完全否定的态度那是非常困难的所以大部分程序员都由于不能使自己进入必要的精神状态(不是抱着要揭露出自己程序中错误的态度)就不能有效的测试自己的程序除了这个心理学问题之外还有一个重要的问题程序中可能包含由于程序员对问题的叙述或说明的误解而产生了错误如果是这种情况当程序员测试自己的程序时往往还会带着同样的误解致使问题难以发现

3.程序设计组织不应测试自己的程序

在宏观意义上一个程序设计组织或一个工程项目是个有生命的有机体它同样有心理学问题在大多数情况下人们都以在给定日期内以一定代价完成程序编制任务的能力来衡量程序设计组织和项目管理人员的这样做的理由是时间和成本指标便于衡量而程序的质量很难度量要程序设计组织在测试自己的程序时持客观态度是很困难的因为如果用正确的定义看待测试就不大可能按预定计划完成测试也不大可能把耗费的代价限制在要求的范围以内

软件生产的三个最重要的因素是质量进度和费用由于费用和进度的限制要开发一种高质量快速交付和低成本的软件产品并不容易也就是说要同时达到三个目标是困难的因此在软件产品的开发中要权衡它们之间的关系是软件的特性能满足用户的要求这意味着软件产品的特性的度量和预计是必要的

软件测试由独立测试机构承担有很多好处独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行独立测试可以避免软件开发者测试自己开发的软件由于心理学上的问题软件开发者难以客观有效的测试自己的软件要找出那些因为对问题的误解而产生的错误就更加困难独立测试还可以避免软件开发机构测试自己的软件软件产品的开发过程受到时间成本和质量三者的制约在软件开发的过程中当时间成本和质量三者发生矛盾时质量最容易被忽视如果测试组织与开发组织来自相同的机构测试过程就会面临来自于开发组织同一来源的管理方面的压力使测试过程受到干扰

采用独立测试方式无论在技术上还是管理上对提高软件测试的有效性都具有重要意义

客观性对软件测试和软件中的错误抱着客观的态度这种客观的态度可以解决测试中的心理学问题既能以揭露软件中错误的态度工作也能不受发现的错误的影响经济上的独立性使测试有更充分的条件按测试要求去完成

专业性独立测试作为一种专业工作在长期的工作过程中势必能够积累大量实践经验形成自己的专业知识同时软件测试也是技术含量很高的工作需要有专业队伍加以研究并进行工程实践专业化分工是提高测试水平保证测试质量充分发挥测试效应的必然途径

权威性由于专业优势独立测试工作形成的测试结果更具信服力而测试结果常常和对软件的质量评价联系在一起专业化的独立测试机构的评价更客观公正和具有权威性

资源有保证独立测试机构的主要任务是进行独立测试工作这使得测试工作在经费人力和计划方面更有保证不会因为开发的压力减少对测试的投入降低测试的有效性可以避免开发单位侧重软件开发而对测试工作产生不利的影响

软件测试使用什么工具?

TestPlatform软件测试平台,简称TP,是业界唯一的对软件测试全过程进行支撑的软件测试工具。业界已有的软件测试工具基本上都局限在测试执行阶段,只能支撑测试执行阶段的活动,而测试分析、测试设计、测试实现这三个前期阶段的活动缺乏有效的测试工具支撑,直接影响了软件测试的完整性和……阅读全文 >>

软件测试专业有什么优势?

就业竞争小人才供不应求让软件测试人员的就业竞争压力明显小于同类其它职业,有利于从业者的身心健康。另外,由于软件测试在我国起步较晚,独立设置测试部门、对测试人员有强烈需求的多为独具慧眼的大中型IT企业。软件测试人才不需要在小企业积累经验就能获得知名企业的入门通行证,工作起点高于同类……阅读全文 >>

软件测试适合哪些人,价格多少

哪些人适合学软件测试,多少钱?软件测试是非常适合年轻的人互联网技术。首先工作岗位多,软件测试是互联网企业“质量官”,生产软件产品的企业都需要软件测试工程师,一些使用软件产品的企业也需要软件测试工程师,在成都软件测试工程师常年紧缺,并且就业薪资非常可观,毕业的软件测试学生每年都是毕……阅读全文 >>

软件测试有哪些分类?

从是否关心软件内部结构和具体实现的角度划分A.白盒测试B.黑盒测试C.灰盒测试从是否执行程序的角度A.静态测试B.动态测试从软件开发的过程按阶段划分有A.单元测试B.集成测试C.确认测试D.系统测试E.验收测试*测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发……阅读全文 >>

软件测试面试题是什么?

1.保证产品质量2.测试计划、测试用例设计、测试执行、提交Bug、追踪Bug、验证Bug、验收测试3.黑盒:不需要知道内部逻辑,正确的输入有正确的结果,错误的输入系统给出相应的报错白盒:需要知道内部结构,强调代码覆盖率4.增删改查5.前提条件,测试环境,预期结果,实际结果,报告人……阅读全文 >>

软件测试可以做什么工作?

软件测试工程师定义软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件测试工程师(SoftwareTestingEngineer)的主要工作职责是,理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Rob……阅读全文 >>

软件测试工具有哪些?

开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、WebApplication……阅读全文 >>

学习软件测试需要什么基础?

现在中国大学对软件测试的课程几乎没有,只有有限几本翻译错误很多的国外教材。没办法,软件测试在中国还很不受重视。先要对自己进行定位,如果自己对各种程序都了如指掌,熟悉开发过程中的每个环节,能看懂各种模型图不论是面向对象的还是面向过程的。而且对于数据库,软件配置管理甚至于各种操作系统……阅读全文 >>

软件测试应该具备哪些素质?

一个有竞争力的测试人员要具有下面三个方面的素质:计算机专业技能计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业……阅读全文 >>

软件测试的方法和规范

软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。本文主要介绍的是软件测试方法和规范,跟随小编一起来了解一下具体的测试流程及规范吧。软件测试基本流程图软件测试的规范测试代码和项目开发代码应该利……阅读全文 >>

2019-07-08
软件测试
软件测试
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。具有人工操作或者软件自动运行两种方式。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)、完全度(completeness)和质量(quality)的软件过程;是SQA(softwarequalityassurance)的重要子域。
¥22.34
总资产
3922
获点赞
472
关注者
「真诚赞赏,手留余香」
赞赏支持
还没有人赞赏,支持一下吧
发布讨论

网友评论

还没有用户评论

相关链接

写评论
0
0
0
打赏