【愚公系列】软考中级-软件设计师 038-软件工程基础(系统测试)

举报
愚公搬代码 发表于 2024/02/23 22:41:28 2024/02/23
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。🏆《博客内容...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀前言

系统测试是一种测试方法,用于确定计算机系统或软件是否满足所需的功能和需求。在系统测试中,测试人员会执行一系列测试用例和场景,以验证系统的各个部分和功能是否正常工作。系统测试通常包括功能测试、性能测试、安全测试、兼容性测试等。这种测试方法旨在发现系统错误和问题,并为解决这些问题提供反馈和改进建议。系统测试是软件开发生命周期中的一个重要步骤,可以确保系统在投入使用之前是可靠和高质量的。

🚀一、系统测试

🔎1.意义和目的

🦋1.1 意义

系统测试的意义在于验证系统是否符合预期的功能需求和性能要求,以及发现系统中的缺陷和风险。系统测试通过模拟真实的使用环境和场景,对系统进行全面的测试和评估,以确保系统能够稳定运行并满足用户的期望。

🦋1.2 目的

系统测试的目的:就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。

信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标进行,此处所说的测试更多的是指软件测试。

软件测试是对软件系统进行验证和验证的过程。它旨在确保软件满足预先确定的需求和规范,并且能够按照预期的方式运行。软件测试的主要目的是发现软件中的错误、缺陷和问题,并提供修复和改进的机会。

软件测试的过程通常包括以下步骤:

  1. 需求分析和测试计划:确定软件的需求和测试目标,并制定详细的测试计划。

  2. 测试设计:根据测试计划,设计测试用例和测试脚本,用于执行不同的测试场景和情况。

  3. 测试执行:根据测试设计,执行测试用例和脚本,记录测试结果和问题。

  4. 问题追踪和修复:对发现的问题进行跟踪和管理,通知开发人员进行修复。

  5. 测试报告和总结:生成测试报告,记录测试的结果和发现,总结整个测试过程。

在软件测试中,可以使用不同的测试方法和技术,如黑盒测试、白盒测试、灰盒测试、功能测试、性能测试、安全测试等。每种方法都有其特定的目的和适用范围,旨在发现不同类型的错误和问题。

🦋1.3 原则

系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则:

原则 描述
尽早进行测试 测试应贯穿在开发的各个阶段,应尽早纠正错误,消除隐患。
委托专门人员进行测试 测试工作应由专门人员来进行,避免由原开发软件的人或小组承担。
设计测试方案时要确定预期输出结果 在设计测试方案时,不仅要确定输入数据,还要根据系统功能确定预期输出结果。
设计包含不合理、失效的输入条件的测试用例 在设计测试用例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件。
检验程序做了该做的事和不该做的事 在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。
严格按照测试计划进行测试 严格按照测试计划来进行测试,避免测试的随意性。
妥善保存测试计划和测试用例 妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便。
设计可重复使用的测试例子 测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便。

🔎2.测试过程

步骤 描述
制订测试计划 考虑项目开发时间、进度和人为因素,确定测试内容、进度安排、测试环境和条件、测试培训安排等
编制测试大纲 规定针对系统每项功能或特性必须完成的基本测试项目和测试完成标准
设计和生成测试用例 根据测试大纲,确定被测项目、输入数据、测试过程和预期输出结果
实施测试 将预先编制的测试大纲和测试用例应用于被测软件或设备,进行完整的测试
生成测试报告 对测试进行概要说明,列出测试结论,指出缺陷和错误,并提出修改建议,包括修改方法、工作量和责任人

🔎3.测试策略

🦋3.1 单元测试

单元测试(unit testing)是软件开发过程中的一项测试活动,用于验证一个软件系统的最小可测试单元(即单元)是否按照预期功能进行工作。单元测试的目的是对系统的各个独立部分进行测试,以确保其功能正确性。

在软件开发中,一个单元可以是一个函数、一个方法、一个类或一个模块。单元测试通常由开发人员编写,并在代码编写过程中进行。它们是自动化的测试,以确保代码的功能正常运行,并且可以方便地进行重复测试。

单元测试的主要特点是独立性、封闭性和重复性。单元测试应该独立于系统的其他部分,只关注被测试单元的功能。它们应该是封闭的,即不依赖于外部资源或其他单元的状态。而且,单元测试应该可以重复执行,确保测试结果的一致性。

通过编写单元测试,开发人员可以更早地发现和纠正代码中的错误和缺陷。单元测试可以帮助提高代码质量、可维护性和可重复性。它们还能够提供文档化的测试用例,以便将来维护和优化代码时使用。

常用的单元测试框架和工具有JUnit、PyTest、NUnit等。这些工具提供了方便的断言库和测试运行环境,使开发人员可以更容易地编写、运行和管理单元测试。

单元测试依据是软件详细设计说明书。

🦋3.2 集成测试

集成测试(Integration testing)是软件测试的一种方法,旨在测试软件系统中各个模块之间的交互和集成。集成测试的目标是确保不同模块之间的接口正常工作,并且整个系统在集成后能够正常运行。

集成测试通常在单元测试之后进行,它可以对多个模块的功能进行整体测试,以确保系统在不同模块集成后能够协调工作。集成测试可以模拟实际环境中的各种情况和交互,包括输入和输出数据的正确性、各模块之间的调用关系、数据传递和处理等。

集成测试可以帮助发现模块之间的接口问题、数据传输错误、模块之间的依赖关系问题等,从而提高软件系统的质量和稳定性。它可以帮助发现由于模块集成引起的错误,减少在系统上线后出现的问题。

集成测试可以使用自动化测试工具和手动测试的方法进行。在进行集成测试时,需要先确定测试的范围和测试策略,然后编写测试用例并执行测试,最后对测试结果进行评估和分析。

集成测试目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求

1、自顶向下集成测试。自顶向下集成测试是一种构造软件体系结构的增量方法。
2、自底向上集成测试。自底向上集成测试就是从原子模块(程序结构的最底层构件)开始进行构造和测试。
3、回归测试。回归测试有助于保证变更不引入无意识行为或额外的错误。回归测试可以手工进行,方法 是重新执行所有测试用例的子集,或者利用捕捉/回放工具自动执行。
4、冒烟测试。冒烟测试是一种常用的集成测试方法,是时间关键项目的决定性机制,它让软件团队频繁地对项目进行评估。

集成测试依据是软件概要设计文档。

🦋3.3 确认测试

确认测试(Confirmation testing)是软件测试中的一种测试技术,用于确认先前发现的缺陷是否已经修复或解决。确认测试通常在开发团队修复了一个或多个缺陷后进行,以确保这些缺陷已经被成功修复,且不会引入新的问题。确认测试的目的是验证修复操作的正确性和有效性,以确保软件在修复后能够正常工作。

确认测试主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:

  1. 内部确认测试:由软件开发组织内部按照SRS进行测试。

  2. α测试:由有代表性的最终用户在开发者的场所进行测试,在受控的环境下进行。用户在开发环境下测试软件。

  3. β测试:用户在实际使用环境下进行测试,这是软件在不被开发者控制的环境下的真实应用。接收到β测试问题报告后,开发人员会对软件进行修复,并准备向最终用户发布软件产品。

  4. 客户验收测试:针对需求规约,在交付前以用户为主进行测试,测试对象为完整的、集成的计算机系统。验收测试的目的是在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。在进行验收测试之前,需要确认被测软件系统已通过系统测试,并满足一般测试的准入条件。

🦋3.4 系统测试

系统测试是验证完成的软件配置项是否与系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求的一种测试。测试依据是用户需求或开发合同,并包括以下主要内容:

a) 恢复测试:通过各种方式强制系统发生故障,并验证系统能否按要求从故障中恢复,并在约定的时间内开始事务处理,不对系统造成任何伤害。

b) 安全性测试:验证系统内建立的保护机制是否能够实际保护系统免受非法入侵。

c) 压力测试:以非正常的数量、频率或容量等方式对系统进行测试。

d) 性能测试:测试软件在集成环境中的运行性能,可以在测试过程中的任何步骤进行性能测试。

e) 部署测试(也称为配置项测试):测试对象是软件配置项,测试目的是检验软件配置项与系统需求规范的一致性。在进行该测试之前,应确认被测软件配置项已通过单元测试和集成测试。

🔎4.测试方法

软件测试方法分为静态测试和动态测试。

🦋4.1 静态测试

静态测试是指对程序进行检测的一种方法,不需要在机器上运行被测试程序,而是通过人工检测和计算机辅助静态分析来发现逻辑设计和编码错误。静态测试包括对文档和代码的测试。对文档的静态测试主要以检查单的形式进行,通过人工审查程序或评审软件来检查文档的准确性和完整性。

对代码的静态测试包括以下方式:

  1. 人工检测:不依靠计算机,而是通过人工审查程序或评审软件进行检查。这包括代码检查、静态结构分析和代码质量度量等方法。

  2. 计算机辅助静态分析:利用静态分析工具对被测试程序进行特性分析,从程序中提取信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。

使用静态测试能够有效地发现程序的逻辑设计和编码错误,估计可以发现30%-70%的错误。通过结合人工检测和计算机辅助静态分析,可以提高测试的效率和准确性。

🦋4.2 动态测试

动态测试是指通过运行程序,发现并纠正错误。在对软件产品进行动态测试时,可以使用黑盒测试法和白盒测试法。

黑盒测试也被称为功能测试,是在不考虑软件的内部结构和特性的情况下,测试软件的外部特性。常用的黑盒测试技术包括等价类划分、边界值分析、错误推测和因果图等。

白盒测试也被称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,以检查是否满足设计需求。白盒测试常用的技术有逻辑覆盖、循环覆盖和基本路径测试。

在这里插入图片描述

🔎5.黑盒测试

黑盒测试是一种软件测试的方法,其中测试人员只关注测试对象的输入和输出,而不考虑内部的代码和结构。在黑盒测试中,测试人员不了解被测试的软件系统的内部实现细节,而只是根据软件的规格说明书和功能需求来设计测试用例。测试人员通过输入特定的测试数据,观察系统的输出结果,并分析其是否符合预期。黑盒测试主要关注软件的功能、性能和安全等方面的验证,以确保软件在各种情况下都能正确运行。

黑盒测试可以帮助发现软件系统中的错误、缺陷和漏洞等问题,以及确认软件是否按照客户需求和设计规范进行开发。它可以增加软件的可靠性和稳定性,并提高软件的质量和用户体验。

与白盒测试相比,黑盒测试更加注重用户的角度,通过模拟用户的使用场景和操作行为,验证软件系统是否能够正常运行。同时,黑盒测试也可以提供一些优化建议和改进方案,以提升软件系统的性能和安全性。

常用的黑盒测试技术有等价类划分、边界值分析、错误推测和因果图

🦋5.1 等价类划分

☀️5.1.1 等价类划分规则

等价类划分是一种测试设计技术,主要用于确定测试用例。

下面是等价类划分的步骤:

  1. 识别输入域:首先,确定程序的输入域,也就是程序接受的所有可能输入的范围。

  2. 划分等价类:将输入域划分为若干个等价类,每个等价类包含具有相同特征和行为的输入。等价类应该被选取以揭示潜在的错误或异常条件。

  3. 选择代表性数据:从每个等价类中选择一个代表性数据作为测试用例。这些代表性数据应该能够有效地检测每个等价类的特征和行为。

举个例子,假设有一个程序接受一个数字作为输入,并根据数字的大小返回不同的结果。输入域可以是所有可能的数字。

等价类划分可以将输入域划分为三个等价类:负数、零和正数。这是因为程序对这三类输入数字的处理方式可能不同。

然后,从每个等价类中选择一个代表性数据作为测试用例。例如,选择-5作为负数的代表性数据,选择0作为零的代表性数据,选择5作为正数的代表性数据。

通过这种方式,我们可以有效地覆盖输入域,同时最大限度地减少重复测试的数量。

☀️5.1.2 等价类划分情况

等价类划分有两种不同的情况:有效等价类和无效等价类。

有效等价类是指具有相同的功能需求和期望输出的测试用例组成的等价类,即这些测试用例应该产生相同的结果。无效等价类是指具有相同的功能需求但期望输出不同的测试用例组成的等价类,即这些测试用例应该产生不同的结果。

在等价类划分中,将输入域划分为若干互不相交的等价类,然后从每个等价类中选择一个测试用例进行测试。这样可以大大减少测试用例的数量,同时保证了测试用例的覆盖率。

在进行等价类划分时,需要考虑以下因素:

  1. 有效等价类的划分:将输入域划分为可以产生相同结果的等价类,通常选择一些常见的典型输入,覆盖主要的功能需求。
  2. 无效等价类的划分:将输入域划分为可以产生不同结果的等价类,通常选择一些边界值或异常情况的输入,覆盖非法的输入或错误的输入。

例如,对于一个用户登录系统,可以将用户名和密码作为输入,有效等价类可以是正确的用户名和密码组合,无效等价类可以是错误的用户名和密码组合。然后从每个等价类中选择一个测试用例进行测试,例如正确的用户名和密码、错误的用户名和密码等。

☀️5.1.3 等价类划分设计原则

等价类测试用例的设计原则:

  • 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类, 重复这一步,直到所有的有效等价类都被覆盖为止;

  • 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止 。

🦋5.2 边界值分析

边界值分析是一种测试技术,用于选取测试用例的方法。它基于以下观点:在一些情况下,边界上的值和接近边界的值更有可能导致错误。因此,边界值分析旨在选择这些边界和接近边界的值作为测试用例。

具体而言,边界值分析的步骤如下:

  1. 确定输入范围:首先,要明确待测程序的输入范围。例如,如果我们需要测试一个接收整数输入的函数,那么输入范围可能是-99到99之间的整数。

  2. 确定边界:在输入范围内,边界是指范围的起始点和结束点。在上述的例子中,边界为-99和99。

  3. 选择上点:选择边界上的点作为测试用例。在本例中,我们可以选择-99和99作为测试用例。

  4. 选择离点:选择接近边界的值作为测试用例。在这种情况下,我们可以选择-100、100、-98、98作为测试用例。

  5. 选择内点:选择范围内的值作为测试用例。在本例中,我们可以选择50作为测试用例。

判断输入的数据是否小于-99或者大于99,如果小于-99或大于99给出错误提示
在这里插入图片描述

🦋5.3 错误推测

错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试。错误推测法的思想是根据经验列举出可能出现问题的清单,根据清单分享问题可能原因,推测发现缺陷。

适合的场景:

  • 时间紧任务量大时,根据之前项目类似经验找出易出错的模块重点测试。

  • 时间宽裕通过该方法列出之前出现问题较多的模块再次复测。

🦋5.3 因果图

黑盒测试的因果图,是指通过一个结果来反推出导致该结果的原因。这种方法可以帮助测试人员分析系统的功能和逻辑,以确定可能导致问题的潜在原因。

在构建因果图时,可以考虑以下步骤:

  1. 确定系统的输出结果:首先需要明确要测试的系统或功能的输出结果是什么。

  2. 收集可能的因素:根据系统的特性和功能,收集可能对输出结果产生影响的因素。这些因素可以是输入值、系统配置、环境条件等。

  3. 分析因果关系:根据收集到的可能因素,分析它们与输出结果之间的因果关系。考虑每个因素是否可能导致特定的输出结果,或者是否与其他因素存在依赖关系。

  4. 构建因果图:根据分析的因果关系,将因素和结果绘制在因果图中。可以使用箭头表示因果关系,指向导致特定结果的因素。

  5. 分析结果:通过观察因果图,可以根据输出结果来推测可能导致该结果的原因。这样可以帮助测试人员更有针对性地设计测试用例,以验证系统中可能存在的问题。

因果图的构建过程是根据具体的系统和功能来进行分析和推测的,并没有固定的方法或模板。

🔎6.白盒测试

白盒测试是一种软件测试方法,其中测试人员具有对被测试软件的内部结构和代码的详细了解。与黑盒测试相比,白盒测试更加关注测试对象的内部逻辑和结构。

白盒测试的目的是验证软件的内部逻辑是否正确,并且最大限度地覆盖测试对象的代码路径。测试人员通常会使用静态分析和动态调试等技术来检查代码的正确性和执行路径的覆盖率。他们还可以在代码级别进行单元测试、集成测试和系统测试。

白盒测试的优点是可以发现代码层面的问题,如逻辑错误、边界条件错误和无效输入等。它还可以提供对程序性能的深入了解,并帮助改善代码质量和可维护性。

白盒测试也有一些限制。首先,测试人员需要具备深入的编程和代码理解能力。其次,白盒测试无法完全模拟真实环境中的所有情况,因此可能无法发现与外部系统和硬件交互相关的问题。

白盒测试常用的技术是逻辑覆盖、循环覆盖和基本路径测试

🦋6.1 逻辑覆盖

逻辑覆盖是通过测试数据来检查被测程序对程序逻辑的覆盖程度的方法。主要有六种逻辑覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

覆盖标准 描述
语句覆盖 选择足够的测试数据,使每条语句至少执行一次。语句覆盖对程序逻辑的覆盖程度较低,被视为较弱的逻辑覆盖。
判定覆盖 设计足够的测试用例,使得每个判定表达式条件的真假分支都要执行一次。判定覆盖也被称为分支覆盖,比语句覆盖更强。
条件覆盖 构造一组测试用例,使每个判定语句中每个逻辑条件的各种可能的值至少满足一次。
判定/条件覆盖 设计足够的测试用例,使得每个判定中每个条件的所有可能取值至少出现一次,并使每个判定本身的结果也至少出现一次。
条件组合覆盖 设计足够的测试用例,使得每个判定中条件的各种可能值的组合都至少出现一次。满足此覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。
路径覆盖 覆盖被测试程序中的所有可能路径。路径覆盖是最强大和全面的逻辑覆盖标准,能发现更多的错误和潜在问题,但测试用例数量较多,测试工作量较大。

🦋6.2 循环覆盖

循环覆盖是白盒测试中的一种技术,用于确保被测试的软件中的循环结构被充分执行和覆盖。循环覆盖的目标是测试循环中的所有可能情况,包括循环条件为真、为假以及循环体被执行的不同次数等。

循环覆盖的基本原则是通过设计测试用例来驱动循环执行,以便覆盖循环的各个可能路径。具体的循环覆盖策略可以分为以下几种:

测试策略 目标 测试用例示例
简单循环覆盖 保证循环至少被执行一次和至少不被执行一次 1. 循环条件为真的情况下执行一次
2. 循环条件为假的情况下不执行
边界循环覆盖 关注循环的边界情况 1. 循环次数为最小值的情况下执行
2. 循环次数为最大值的情况下执行
3. 循环次数为中间值的情况下执行
全循环覆盖 覆盖循环的所有可能路径 1. 循环条件为真的情况下执行一次
2. 循环条件为假的情况下不执行
3. 循环体被执行0次
4. 循环体被执行1次
5. 循环体被执行多次

在进行循环覆盖时,需要结合其他白盒测试技术,如路径覆盖、条件覆盖和分支覆盖,来确保循环中的各个分支和条件也得到充分测试。循环覆盖的目的是找出可能存在的循环错误和效率问题。

🦋6.3 基本路径测试

基本路径测试是白盒测试中的一种测试技术,旨在检查程序中所有可能的路径。它基于控制流图,通过选择测试用例来覆盖控制流图中的所有基本路径。

控制流图是一个图形化表示程序控制流程的图,其中节点表示程序的基本块(即一组连续的语句),边表示控制流转的可能路径。

基本路径是控制流图中的一条路径,从一个节点到另一个节点,期间经过的所有边都只经过一次。

基本路径测试的目标是选择测试用例来覆盖控制流图中的所有基本路径,以确保程序的所有路径都被测试到,并尽可能地发现潜在的错误。

基本路径测试的步骤如下:

步骤 目标 示例
绘制控制流图 根据源代码绘制控制流图 控制流图包含多个基本块,每个基本块标记为一个节点,用边连接各个基本块
确定基本路径 从控制流图中确定所有可能的基本路径 1. 从起始节点到结束节点的路径
2. 经过特定条件节点的路径
选择测试用例 选择一组测试用例,以覆盖所有基本路径 1. 选择测试用例来覆盖从起始节点到结束节点的路径
2. 选择测试用例来覆盖经过特定条件节点的路径
执行测试用例 根据选择的测试用例,执行测试,并记录测试结果 1. 执行测试用例来验证从起始节点到结束节点的路径
2. 执行测试用例来验证经过特定条件节点的路径
分析结果 分析测试结果,检查程序的行为和潜在错误 1. 检查程序是否按照预期路径执行
2. 检查是否存在潜在的错误

基本路径测试是一种比较全面的测试技术,可以有效地发现程序中的错误。它也有一些限制,比如在复杂的程序中,基本路径的数量可能很大,难以覆盖所有的基本路径。基本路径测试仅关注程序的控制流程,对于数据流和其他方面的问题可能无法完全覆盖。

在这里插入图片描述
在这里插入图片描述

🔎7.调试

测试是发现错误,调试是根据测试时所发现的错误找出原因和具体的位置,进行改正。

调试需要确定错误的准确位置,确定问题的原因并设法改正;改正后要进行回归测试。

调试的方法有:试探法、回溯法、原因排除法(对分查找法、归纳法、演绎法)。

方法 描述 适用情况
试探法 分析错误症状,猜测问题位置,通过设置输出语句、分析寄存器和存储器等手段逐步试探和分析错误所在 结构比较简单的程序
回溯法 从错误症状的位置开始,沿着程序的控制流程往回跟踪代码,直到找到错误根源 小型程序,大规模程序的路径较多时不适用
对分查找法 缩小错误的范围,通过逐步的二分查找来定位问题的位置 -
归纳法 从测试所暴露的问题出发,收集正确和不正确的数据,分析它们之间的关系,提出错误原因的假设,用数据证实或反驳来查出错误所在 -
演绎法 根据测试结果列出所有可能的错误原因,分析已有的数据排除不可能和矛盾的原因,选择可能性最大的假设来解释测试结果 -

🔎8.软件度量

软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量,一般为性能指标。内部属性指软件产品本身的属性,如可靠性,只能间接测量。

McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2p

注意m和n点的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支变(连线)就有一条有向边,每一条语句(语句框)就是一个顶点。

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。