首页 > 其他分享 >聊一聊软件测试的基本原则有哪些

聊一聊软件测试的基本原则有哪些

时间:2024-09-28 18:48:55浏览次数:3  
标签:测试 原则 哪些 错误 程序 测试用例 聊一聊 软件 软件测试

目录

原则1:测试用例中一个必需部分是对预期输出或结果的定义。

原则2:程序员应当避免测试自己编写的程序。

原则3:编写软件的组织不应当测试自己编写的软件。

原则4:应当彻底检查每个测试的执行结果。

原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况。

原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”。

原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件。

原则8:计划测试工作时不应默许假定不会发现错误。

原则9:程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比

原则10:软件测试是一项极富创造性、极具智力挑战性的工作。


原则1:测试用例中一个必需部分是对预期输出或结果的定义。

这条显而易见的原则在软件测试中是最常犯的错误之一。同样,这个问题也是基于人们的心理的。如果某个测试用例的预期结果事先没有得到定义,由于“所见即所想”现象的存在,某个似是而非、实际上是错误的结果可能会被解释成正确的结论。换句话说,尽管“软件测试是破坏性”的定义是合理的,但人们在潜意识中仍然渴望看到正确的结果。克服这种倾向的一种方法,就是通过事先精确定义程序的预期输出,鼓励人们对所有的输出进行仔细检查。

原则2:程序员应当避免测试自己编写的程序。

任何作者都知道或应该知道,亲自编辑或校对自己的作品确实是个不好的做法。作者清楚某段文字要说明的是什么,实际表达出来的意思却南辕北辙,而自己可能却意识不到。况且实际上也不会想在自己的作品中找出什么错误来。对程序员而言,也存在相同的问题。

原则3:编写软件的组织不应当测试自己编写的软件。

这里的论据与前面的论据相似。从很多方面来讲,一个软件项目或编程组织是一个有机的机构,具有与个体程序员相似的心理问题。而且在大多数情况下,主要是根据其在给定时间、特定成本范围内开发软件的能力来衡量编程组织或项目经理。其中的一个原因是,度量时间和成本目标比较容易,而定量地衡量软件的可靠性则极其困难。即便是合理规划和实施的测试过程,也可能被认为降低了完成进度和成本目标的可能性,因此,编程组织难以客观地测试自己的软件。

原则4:应当彻底检查每个测试的执行结果。

这个原则可能是最显而易见的原则,但也同样常常被忽视。我们见过大量的例子,即便错误的症状在输出清单中可以清楚地看到,但还是没有找出那些错误来。换言之,在后续测试中发现的错误,往往是前面的测试遗漏掉的。

原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况。

在测试软件时,有一个自然的倾向,即将重点集中在有效和预期的输入情况上,而忽略了无效和未预料到的情况。比如,在本书第1章三角形程序的测试中,总是出现这个倾向。

原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”。

这条原则是上条原则的必然结果。必须检查程序是否有我们不希望的负作用。比如,某个工资管理程序即便可以生成正确的工资单,但是如果也为非雇员生成工资单或者它覆盖掉了人员文件的第一条记录,这样的程序仍然是不正确的程序。

原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件。

这个问题在采用交互式系统来测试软件时最常见。人们通常会坐在终端前,匆忙地编写测试用例,然后将这些用例交由程序执行。这样做的问题在于,饱含我们宝贵投入的测试用例,在测试结束后就消失了。一旦软件需要重新测试(例如,当改正了某个错误或作了某种改进后),又必须重新设计这些测试用例。

原则8:计划测试工作时不应默许假定不会发现错误。

项目经理经常容易犯这个错误,这也是使用了不正确的测试定义的一个迹象—也就是说,假定“测试是一个证明程序正确运行的过程”。我们再一次重申,所谓测试,就是为发现错误而执行程序的过程。

原则9:程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比

这种现象如下图所示。乍看上去,这幅图似乎没有什么意义,但很多程序都存在这种现象。例如,假如某个程序由两个模块、类或子程序A和B组成,模块A中已经发现了五个错误,而模块B中仅仅找到了一处错误。如果模块A所经过的测试并不是故意设计得更为严格,那么该原则告诉我们,模块A与模块B相比,存在更多错误的可能性要大。

图片

该原则的另一个说法是,错误总是倾向于聚集存在,而在一个具体的程序中,某些部分要比其他部分更容易存在错误,尽管没有人能够对这种现象给出很好的解释。

原则10:软件测试是一项极富创造性、极具智力挑战性的工作。

测试一个大型软件所需要的创造性很可能超过了开发该软件所需要的创造性。我们已经看到,要充分地测试一个软件以确保所有错误都不存在是不可能的。

标签:测试,原则,哪些,错误,程序,测试用例,聊一聊,软件,软件测试
From: https://blog.csdn.net/qd_lifeng/article/details/142561332

相关文章

  • RabbitMQ中交换机(Exchange)的类型有哪些及其特点是什么?
    RabbitMQ中的交换机(Exchange)是消息路由的核心组件,它决定了消息如何从生产者路由到队列。RabbitMQ支持多种类型的交换机,每种类型都有其特定的路由逻辑。以下是几种主要的交换机类型及其特点:直接交换机(DirectExchange)特点:直接交换机会将消息发送到绑定键(bindingkey)......
  • 软件测试基础知识(自用)
    1.软件1.1软件的定义软件是运行在硬件上,一段指令的集合1.2软件的分类系统软件:系统自带的软件应用软件:移动端(APP)软件电脑端(PC)软件平板电脑端(pad)软件前端C/SPCexe--- 指Windows操作系统下的可执行文件APPIPA--- 指iOS应用程序包文件,扩展名为.ipa,包含了iOS应......
  • ISO/IEC/IEEE 29119-1:2022(E) 系统与软件工程软件测试第1部分:概念和定义
    0前言国际标准化组织(ISOtheInternationalOrganizationforStandardization)和国际电工委员会(IECtheInternationalElectrotechnicalCommission)构成了世界标准化的专门体系。作为国际标准化组织或国际电工委员会成员的国家机构通过各自组织设立的技术委员会参与国际标准的......
  • Java中有哪些集合类?常用的几种java集合类总结 详细解读 Java 的集合类
    Java提供了丰富的数据结构选择,用以处理和存储对象,这些对象通过Java的集合类框架(JavaCollectionsFramework)来组织和管理。集合类使得开发者能够更加高效地处理数据,如排序、搜索、迭代等操作。本文将系统地介绍Java的集合类,包括其核心接口、常用实现类以及使用示例。......
  • 建筑的抗震等级与建筑资质中哪些项目有关?
    在地震多发地带,建筑物的抗震性能是保障人民生命财产安全的关键因素。抗震等级作为建筑设计中的一个重要指标,与建筑资质紧密相关。建筑的抗震等级与建筑资质中以下项目有关:1.工程设计资质:抗震设计是建筑设计的重要组成部分,设计单位必须具备相应的设计资质,以确保其设计的建......
  • DAB认证是什么,检测标准有哪些?
    DAB认证是一项广泛应用于数字广播领域的认证。该认证由数字音频广播联盟(DAB)所制定,旨在确保数字广播设备的质量和性能达到一定的标准。下面将从多个方面详细介绍DAB认证的相关信息。DAB认证:DAB认证是由数字音频广播联盟(DAB)所制定的认证,旨在确保数字广播设备的质量和性能达到一定的标......
  • 设备卡的套餐有哪些?顶鸿物联官网
    联通设备卡套餐,联通设备卡套餐在数字化时代,通信设备卡套餐的选择对于保持网络连接和数据使用至关重要。本文将探讨如何根据个人需求选择合适的联通设备卡套餐,以及套餐中包含的不同服务。联通设备卡套餐概览随着科技的发展,通信设备卡已经成为我们日常生活中不可或缺的一......
  • 软件测试学习笔记丨curl命令发送请求
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32332一、简介cURL是一个通过URL传输数据的,功能强大的命令行工具。cURL可以与ChromeDevtool工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。也可以单......
  • 软件测试学习笔记丨Mock的价值与实战
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32331一、Mock的价值与意义1.1简介测试过程中,对于一些不容易构造或获取的对象,用一个虚拟的对象来替代它,达到相同的效果,这个虚拟的对象即Mock。当做测试时,如果后端某些接口还不成熟,所依赖的接口不稳定,所依赖的接口为第三方......
  • GitLab 中文发行版最新的 17.4 发布了哪些与代码托管、CI/CD、安全合规相关的功能?
    沿袭我们的月度发布传统,极狐GitLab发布了17.4版本,该版本带来了当所有检查通过就会自动合并、WebIDE中的扩展市场现已可用以及获取Kubernetes资源事件等几十个重点功能的改进。下面是部分重点功能的详细解读。极狐GitLab为GitLab的中文发行版,中文版本对国内用户更友好、......