软件测试的基本方法和素质分析
发表时间:2023-11-03 16:02:48
文章来源:炫佑科技
浏览次数:185
菏泽炫佑科技
软件测试的基本方法和素质分析
问题是我们如何避免错误的发生,并消除已经发生的错误,使程序中的错误密度尽可能低。 软件错误的原因有很多。 具体来说,主要包括以下几点: ①沟通不足,沟通中存在误解,或者根本没有就应用程序应该做什么或不应该做什么(应用需求)的细节进行沟通,开发不清晰。 ②. 软件复杂性图形用户界面(GUI)、客户端/服务器结构、分布式应用、数据通信、超大型关系数据库和巨大的系统规模导致软件和系统的复杂性呈指数级增长。 没有现代软件开发经验的人很难理解它。 ③. 编程错误对所有人来说都是常见的。 程序员也会犯错误。 ④. 需求变化 需求变化的影响是多方面的。 客户可能不了解需求变化的影响,或者他们可能知道但不得不这样做。 需求变更的后果可能是系统的重新设计、设计人员日程的重新安排、已经完成的工作可能需要重做或完全放弃、对其他项目的影响、硬件需求可能需要改变、如果有许多小变化或一项大变化,项目各部分之间已知或未知的依赖关系可能会相互影响并导致更多问题。 需求变化带来的复杂性可能会导致错误,也可能影响项目参与者的积极性。 ⑤. 时间压力软件项目的进度很难准确,常常需要预测和猜测。 当*后期限临近和关键时刻到来时,错误也会随之而来。
⑥. 自大的人更喜欢说:“没问题”、“这东西很容易”、“我几个小时就能想出来”,太多不切实际的“没问题”,结果只能是引入错误。 ⑦. 糟糕的代码文档。 糟糕或糟糕的文档使得代码维护和修改变得极其困难,从而导致许多错误。 事实上,许多组织并不鼓励程序员为其代码编写文档,也不鼓励程序员编写清晰易懂的代码。 相反,他们认为编写更少的文档可以导致更快的编码,并且难以理解的代码更容易理解。 工作的保密性(“写起来很难,读起来很痛苦”)。 ⑧. 软件开发工具、可视化工具、类库、编译器、脚本工具等,往往会给应用软件带来自身的错误。 众所周知,在没有良好工程基础的情况下使用面向对象技术只会让项目变得更加复杂。 为了更好地解决这些问题,软件行业做出了多方面的努力。 人们曾经认为更好的编程语言可以让我们摆脱这些烦恼,从而促进了编程语言的发展。 更多的语言开始流行。 为了使程序更容易理解软件开发,开发了结构化编程语言,如PL/1等; 为了解决实时多任务需求,开发了结构化多任务编程语言,如Ada等; 为了提高可重用性,开发了面向对象的编程语言,如等; 为了避免对需求的错误理解,描述语言的发展形式,如HAL/S等,使得基于自然语言建立描述成为可能。 人们使用形式语言来描述需求; 为了支持大型数据库应用,人们开发了可视化工具,例如Power等。
编程语言对于提高软件生产效率具有一定的积极作用,但其对软件整体质量尤其是可靠性的影响较其他因素要小。 也许是因为编程语言是基于严格的语法和语义规则的,所以人们试图用形式化证明的方法来证明程序的正确性。 通过将程序视为数学对象,可以证明该程序在数学意义上是正确的。 数学家*感兴趣的是形式化证明方法,这种方法在论文中谈论起来很有吸引力,但其实际价值却非常有限,因为形式化证明方法只能在代码写完之后才能使用,这显然为时已晚,而且对于大多数人来说人们的程序很难证明。 受到其他行业项目工程的启发,软件工程应运而生。 软件开发被视为一个项目,软件开发采用工程方法进行规划和管理。 对于需求不确定的应用,可以采用增量式、迭代式的开发模型。 还可以采用快速应用开发(RAD)和协作应用开发(JAD)技术,由软件开发商和用户代表共同参与软件规范的制定。 RAD和JAD的基本思想是开发者和用户共同设计系统中的屏幕。 开发人员快速编写*基本的功能来实现这些屏幕,然后交给用户查看。 然后用户和开发人员审查这些屏幕以确认它们满足用户的要求,这个循环一直持续到系统的基本部分被定义为止。 一旦设计被用户接受,开发人员将完成完全实现屏幕所需的代码。
RAD 与传统软件开发项目的一个基本区别是 RAD 系统中的应用程序是分阶段发布的。 传统项目一般是一次性发布,也称为“大爆炸”。 RAD方法使用高效的开发工具,开发人员可以非常快速地设计出系统的基本屏幕,让用户在开发周期的早期就看到系统未来的样子,避免了传统开发项目中漫长而无聊的讨论。 了解解释。 IBM的Mills博士提出了洁净室流程。 洁净室流程结合了正式程序验证和统计过程控制 (SPC)。 在该方法中,首先使用正确性的数学证明来防止缺陷的发生,然后使用MTBF来衡量软件质量。 洁净室流程是一种相当新的软件开发方法。 它要求软件开发的管理和技术方法发生重大变化,特别是SPC知识应用于软件,影响了它的广泛接受。 硬件成本不断降低,能够支持CASE工具运行的新型强大工作站和网络成为软件工程使用的工作平台。 CASE工具可以完成一些特定的软件开发流程。 这些工具为软件设计人员提供了以图形方式描述软件设计的能力,以便它们易于维护、易于交叉检查且易于理解。 很多人(尤其是CASE工具供应商)认为CASE工具对于解决软件危机、拯救软件行业起到了一定的作用,但实际上我们看到的是很多企业花了很多钱回购CASE工具,但是他们很少使用。 它们很少被使用,因为这些工具执行的流程与组织的软件设计流程不兼容。
在软件开发可以借助许多新技术和工具进行的今天,软件开发过程的成熟度开始引起人们的关注。 这种产品一致性问题的主要症结在于管理,因此人们把目标转向了管理的改进,一些旨在改进软件开发过程的活动也取得了积极的成果。 以下是一些典型的文本。 SEI SW- SPICE(and)-9000-事实上,软件没有灵丹妙药。 无论使用什么技术和方法,软件中仍然会存在Bug。 采用新的语言、先进的开发方法、完善的开发流程可以减少错误的引入,但不可能完全消除软件中的错误。 这些引入的错误需要测试才能找出来,软件中的错误密度也需要测试。 做出估计。 测试是所有工程学科的基本组成部分,也是软件开发的重要组成部分。 从编程被设计之日起,测试就一直伴随着它。 统计显示,在典型的软件开发项目中,软件测试工作量往往占到软件开发总工作量的40%以上。 在软件开发总成本中,测试成本占30%~50%。 如果也考虑到维护阶段,那么在讨论整个软件生命周期时,测试的成本比例可能会降低。 但实际上,维护工作相当于二次开发甚至多次开发,其中必然还包括大量的测试工作。 。
因此,测试对于软件生产是必要的。 问题是“应该使用什么方法以及如何安排测试?” 2、软件测试的目的 软件测试的目的决定了如何组织测试。 如果测试的目的是发现尽可能多的错误,那么测试应该针对软件中较复杂的部分或过去出现较多错误的位置。 如果测试的目的是为*终用户提供一定程度的质量评估可信度,那么测试应该直接针对实际应用中经常使用的业务假设。 不同的机构会有不同的测试目的; 同一机构也可能有不同的测试目的,可能是测试不同的领域,也可能是同一领域的不同级别的测试。 在谈论软件测试时,很多人都会引用J. Myers在《The Art of》一书中的观点:①。 软件测试是执行程序以发现错误的过程; ②. 测试是为了证明程序是错误的。 而不是证明程序没有错误。 ③. 一个好的测试用例是能够发现迄今为止尚未发现的错误的测试用例; ④. 成功的测试是发现尚未发现的错误的测试。 这个观点提醒我们软件测试的基本方法和素质分析,测试应该以发现错误为中心,而不是演示软件的正确功能。 然而,从字面上理解这个观点可能会产生误导,认为发现错误是软件测试的唯一目的,找不到错误的测试是没有价值的。 不是这种情况。
首先,测试不仅仅是发现错误。 通过分析错误产生的原因和错误的分布特征,项目经理可以帮助发现当前使用的软件过程中的缺陷并进行改进。 同时这种分析还可以帮助我们设计有针对性的检测方法,提高检测的有效性。 其次,没有发现错误的测试也是有价值的,完整的测试是评价测试质量的一种方式。 详细而严格的可靠性增长模型证明了这一点。 例如,Bev发现,一个经过测试并正常运行了n小时的系统,有可能继续正常运行n小时。 3. 软件测试的基本方法
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等