亚利桑那州立大学计算机科学专业的软件验证、确认和测试课程介绍

作者:

日期:2023-02-05

亚利桑那州立大学计算机科学专业的软件验证、确认和测试课程介绍

profile-avatar
万物云联网2023-02-05 17:17

关于亚利桑那州立大学计算机科学专业的软件验证、确认和测试课程介绍


软件作为独立产品或嵌入在系统中,在当今世界中发挥着不可或缺的作用。因此,软件必须按预期工作。这需要软件测试,需要回答验证问题,“我们构建的产品是否正确?”和验证问题,“我们构建了正确的产品吗?”理解这些问题对于开发良好的测试用例至关重要。本课程适用于参与从代码模块到系统测试的任何级别的软件测试的任何人。介绍了用于测试软件以及规划和跟踪测试工作的策略和技术。

亚利桑那州立大学

本课程涵盖的具体主题包括:

  • 测试背景。
  • 测试过程活动。
  • 基于需求的测试技术。
  • 基于结构的测试技术。
  • 系统测试。
  • 测试工具。
  • 可靠性模型。
  • 统计测试。
  • 测试计划。
  • 跟踪测试进度。
  • 测试文档。
  • 测试过程改进。

本课程涵盖的技术包括:

  • 单元测试框架。
  • 代码覆盖率工具。
  • 静态分析器。
  • 可靠性模型。

学习本课程所需的先验知识和技能:

本课程将非常具有挑战性,因此学习者应具备所需的先验知识和技能和/或在自己的时间学习它和必要的技术。

熟练的数学技能和理论理解:

  • 离散数学。
  • 概率和统计。

较强的应用能力

  • 使用高级语言进行编程。

熟练的经验

  • 具有软件开发生命周期模型的经验。

学习成果

完成本课程的学习者将能够:

  • 解释测试活动如何适应领先的软件开发流程模型。
  • 了解并应用软件测试的最佳实践。
  • 根据常用的基于需求的测试技术创建测试用例。
  • 创建测试用例以实现基于控制和数据流结构的覆盖率。
  • 应用静态分析技术来识别代码异常。
  • 创建测试用例,证明是否满足系统级质量要求。
  • 为应用程序确定适当的测试工具。
  • 根据操作配置文件测试和可靠性模型预测软件可靠性。
  • 描述为改进测试过程而要执行的活动。
  • 分析测试需求以创建实现测试目标的计划。
  • 根据计划跟踪测试进度。

亚利桑那州立大学计算机科学专业的软件验证、确认和测试课程的参考学习书籍介绍:

《演绎软件验证:未来展望:KeY 20 周年之际的反思(Deductive Software Verification: Future Perspectives: Reflections on the Occasion of 20 Years of KeY)》

《演绎软件验证:未来展望:KeY 20 周年之际的反思》

本书介绍了20年来对KeY项目的反思,该项目专注于演绎软件验证。

自二十年前KeY项目启动以来,演绎验证领域已经有了很大的发展。通过演绎程序验证工具对现实世界编程语言的支持已经变得普遍。这需要克服重大的理论和技术挑战,以支持先进的软件工程和编程概念。社区与竞争激烈但友好和支持的环境变得更加相互联系。

本书以KeY成立20周年为契机,邀请项目内外的研究人员为一本书做出贡献,本书捕捉了该领域的一些最新发展。

本书收到了该领域公认的专家的 13 篇文章,以应对最新挑战。贡献的主题从工具开发,效率和可用性考虑到新颖的规范和验证方法。

这本书应该为读者提供关于演绎验证当前技术的最新印象,我们希望激励她为该领域做出贡献并共同努力。我们期待在下一次会议上与您见面,听取您的研究讲座以及由此产生的富有成效的讨论和合作。

《控制系统软件的形式验证》

《控制系统软件的形式验证》

本书是控制系统软件分析和验证的重要介绍;

控制系统软件的验证对于许多技术和行业至关重要,从航空和医疗技术到我们驾驶的汽车。控制器软件的故障可能会使人丧生。在这本权威且易于理解的书中,作者Pierre-Loïc Garoche 为控制工程师和计算机科学家提供了分析和验证这一重要软件类别的形式化技术不可或缺的介绍。


很多时候,控制工程师不了解围绕软件验证的问题,而计算机科学家往往不熟悉控制器软件的特殊性。Garoche提供了一种统一的方法,面向这两个领域的研究生,涵盖形式验证方法以及控制器的设计和验证。他介绍了大量新的验证技术,用于对控制器软件进行详尽分析。其中包括计算非线性不变量的新方法,凸优化工具的使用以及处理数值不精确性的方法,例如分析软件中发生的浮点计算。


随着关键系统的自主性不断提高——自动驾驶汽车、无人机、卫星和着陆器证明了这一点——这些系统中的数值功能变得越来越先进。这里介绍的技术对于支持对这些新兴技术中使用的控制器软件进行形式分析至关重要。

《嵌入式软件验证与调试》

《嵌入式软件验证与调试》

本书全面介绍了嵌入式软件的验证和调试技术,这些技术经常用于安全关键应用(例如汽车),在这些应用中,故障是不可接受的。由于复杂系统的验证需要包括硬件和嵌入式软件模块的验证,本书重点介绍具有硬件依赖关系的嵌入式软件的验证和调试方法。

本书覆盖范围包括嵌入式软件的整个设计、验证和调试流程,以及调试、动态、静态和混合验证的所有关键方法。

本书讨论了当前的工业嵌入式软件验证流程,以及新兴趋势,重点是形式化和混合式验证和调试方法。

《Google 的软件工程:从编程中学到的经验教训 》

《Google 的软件工程:从编程中学到的经验教训 》

今天,软件工程师不仅需要知道如何有效地编程,还需要知道如何开发适当的工程实践,使他们的代码库可持续和健康。本书强调了编程和软件工程之间的这种区别。

软件工程师如何管理一个动态的代码库,该代码库在其生命周期中不断发展并响应不断变化的要求和需求?基于他们在谷歌的经验,软件工程师Titus Winters和Hyrum Wright以及技术作家Tom Manshreck坦率而有见地地介绍了一些世界领先的从业者如何构建和维护软件。本书介绍了 Google 独特的工程文化、流程和工具,以及这些方面如何有助于提高工程组织的效率。

您将探索软件组织在设计、架构、编写和维护代码时应牢记的三个基本原则:

  • 时间如何影响软件的可持续性以及如何使代码随时间推移具有弹性
  • 规模如何影响工程组织内软件实践的可行性
  • 典型的软件工程师在评估设计和开发决策时需要做出哪些权衡

《建立 SRE 基础:在软件交付组织中引入站点可靠性工程的分步指南》

《建立 SRE 基础:在软件交付组织中引入站点可靠性工程的分步指南》

利用 SRE 提高服务的可扩展性和可靠性

站点可靠性工程 (SRE,Site Reliability Engineering) 由 Google 率先创建更具可扩展性和更可靠的大规模系统,现已成为当今最有价值的软件创新机会之一。 《建立 SRE 的基础》是一份简明实用的指南,展示了如何在您自己的组织中推动 SRE 的成功采用。 Vladyslav Ukis 博士介绍了一种循序渐进的方法,以建立正确的文化、组织和技术流程基础,快速实现“最小可行 SRE”并从中不断改进。

Ukis 博士广泛借鉴了他在一家大型医疗保健公司领导 SRE 转型之旅的亲身经历。在整个过程中,他回答了组织提出的有关 SRE 的具体问题,确定了陷阱,并展示了如何避免或克服它们。无论您在软件开发、工程或运营中扮演什么角色,本指南都将帮助您应用 SRE 来改善最重要的方面:用户和客户体验。

本书的主要内容介绍:

  • 了解 SRE 的工作原理、其在软件运营中的作用以及 SRE 转型的挑战
  • 评估组织的当前运营情况和 SRE 转型的准备情况
  • 实现组织支持并启动基础活动,包括 SLO 定义、警报、待命轮换、事件响应和基于错误预算的决策
  • 调整组织结构以支持全面的 SRE 转型
  • 衡量 SRE 计划的进展和成功
  • 在基础之外维持和推进您的 SRE 转型

“SRE的技术和原理不仅在这里有明确的定义,而且它们背后的基本原理也以一种坚持下去的方式进行了解释。这不是一些枯燥的定义,这是实用的、可用的理解。我可以毫无保留地全心全意地推荐这本书。这是一本关于一个重要主题的非常好的书,有助于推动我们学科的游戏向前发展!“

--摘自Continuous Delivery Ltd.创始人兼首席执行官David Farley对本书的评价

《面向实际应用的软件可靠性技术》

《面向实际应用的软件可靠性技术》

本书讲述适用于实际应用程序的软件可靠性技术,权威资源,提供分步指导,用于生成针对特定项目量身定制的可靠软件;

《面向实际应用的软件可靠性技术》是一个实用的、最新的首选资源,可以反复引用,以有效地防止软件缺陷,在出现缺陷时发现并纠正缺陷,并在软件产品中建立更高级别的信心。从内容开发到软件支持和维护,作者对项目中每个阶段的描述,如设计和编码、运营和维护、管理、产品生产和概念开发,并描述了每个阶段所需的活动和产品。

实际应用程序的软件可靠性技术介绍了了解软件可靠性每个过程的明确方法,并解释了如何有效可靠地管理它。本书由大量详细的示例和系统方法支持,涵盖了硬件和软件可靠性之间的类比,以确保清晰的理解。总的来说,本书帮助读者对软件产品建立更高的信心。

在实际应用程序的软件可靠性技术中,读者将找到以下方面的特定信息:

  • 缺陷,包括缺陷进入项目系统的位置、影响、检测和缺陷原因,以及如何处理缺陷
  • 项目阶段,包括概念开发和规划、需求和接口、设计和编码以及集成、验证和确认
  • 路线图和实用指南,包括在项目开始时,作为组织成员,以及如何处理陷入困境的项目
  • 技术,包括一般技术介绍,以及按组织划分的技术(系统工程、软件和可靠性工程)

《真实世界应用的软件可靠性技术》是一本关于软件可靠性的实用文本,提供了超过 65 种不同的技术和分步指导,用于生成可靠的软件。对于软件开发人员、软件维护者和软件生产者来说,它是关于该主题的重要且完整的参考学习资源。

《软件工程基础》

《软件工程基础》

本书为本科生,1学期课程编写,《软件工程基础》为学生提供软件工程原理和方法的系统工程方法。新版本书籍全面而简洁,涵盖了技术和工具的一些最新改进,同时减少了变得不那么相关的领域。
本书对关键问题的深入报道,加上对软件质量的强烈关注,使《软件工程基础》成为进入快速增长和利润丰厚的软件开发领域的学生的完美参考学习书籍。本书包括对编程概念、系统分析和设计、软件工程原理、开发和支持流程、方法、软件测试、质量保证和产品管理的全面概述,同时贯穿始终的真实示例。

本书的主要内容包括:

  • 提供软件工程领域的广泛覆盖,非常适合入门课程。
  • 清楚地区分和解释软件工程与软件过程、软件开发和软件管理的子主题。
  • 扩大了持续集成和敏捷方法的覆盖范围。
  • 新涵盖当代设计和开发理念,包括 SOA、微服务、虚拟化和容器化。

《汽车系统软件工程:原理与应用》

《汽车系统软件工程:原理与应用》

《汽车系统软件工程:原理与应用》讨论了汽车系统软件工程领域的发展。

本参考书籍详细讨论了关键概念,包括时序分析和可靠性、汽车系统的验证和验证、电动汽车的 AUTOSAR 架构、用于联网汽车的汽车级 Linux、汽车软件行业的开源架构以及汽车软件开发过程中的通信协议。

针对电气工程、电子与通信工程以及汽车工程领域的高年级本科生和研究生,本书包括以下主要内容:

  • 提供汽车软件架构的基础知识。
  • 讨论汽车系统的验证和验证。
  • 涵盖汽车软件开发过程中的通信协议。
  • 讨论电动汽车的 AUTOSAR 架构。
  • 研究汽车软件行业的开源架构。

《敏捷软件、软件开发和测试研究选集》

《敏捷软件、软件开发和测试研究选集》

这套四本参考书选集涵盖了软件开发和测试的新兴趋势,讨论了敏捷软件的最新发展及其跨多个行业的应用,本书涵盖了全球软件工程、知识管理和产品开发等主题;

《有效的软件测试:开发人员指南》

《有效的软件测试:开发人员指南》

超越基础测试!出色的软件测试使整个软件开发过程更加高效。本书揭示了一种系统而有效的方法,可以帮助您自定义测试覆盖率并在棘手的极端情况下捕获错误。
在《有效的软件测试》中,您将学习如何:

  • 设计测试,发现错误的机会要高得多
  • 读取代码覆盖率指标并使用它们来改进测试套件
  • 了解何时使用单元测试、集成测试和系统测试 使用模拟和存根来简化单元测试
  • 考虑前置条件、后置条件、不变量、 和合同实施
  • 基于属性的测试
  • 利用依赖注入和六边形架构等编码实践,使您的软件更易于测试
  • 编写良好且可维护的测试代码

《有效的软件测试》教您一种系统的软件测试方法,以确保您的代码质量。

本书充满了从软件工程中经过验证的研究中提取的技术,每一章都将一项新技术付诸实践。遵循真实世界的用例和详细的代码示例,您很快就会进行工程测试,发现边缘情况中的错误和您从未想过要测试的代码部分!在此过程中,您将培养一种测试的直觉,可以通过反复试验来节省多年的学习时间。


关于技术:
《有效的软件测试》可确保您交付高质量的软件。对于软件工程师来说,测试是开发过程的关键部分。掌握基于规范的测试、边界测试、结构测试和其他核心策略对于编写好的测试并在错误投入生产之前捕获它们至关重要。


关于本书
《有效的软件测试》是创建无错误软件的实践指南。它专为开发人员编写,可指导您完成从单个单元到整个组件的所有不同类型的测试。您还将学习如何设计有助于测试的代码,以及如何编写易于维护的测试代码。本书提供了一种彻底、系统的方法,包括带注释的源代码示例、现实场景和合理的解释。

《软件开发活动周期:协作开发、持续测试和用户验收》

《软件开发活动周期:协作开发、持续测试和用户验收》

本书的主要好处是提供了整个软件开发过程的整体和可理解的视图,包括持续的演变和支持。它将开发视为测试人员、程序员和用户社区代表或主题专家 (SME) 之间的协作工作。在继续活动的下一步之前,通过用户在每个周期中的接受程度来衡量进度。DPAC 模型中没有测试阶段:连续测试在每个活动周期的回摆(检查阶段)中表示。

这种方法假设存在一些“快乐的道路”,它代表了愿景声明的目标所宣布的项目意图,并且这条道路可以通过“将雕像从石头中解放出来”的迭代和增量过程来揭示。随着这条道路的形象展开,在保持概念完整性的同时,消除了更多的浪费。

这里介绍的示例引导读者完成模型的应用。对于刚接触精益敏捷开发工作概念的产品和项目经理,以及所有敏捷方法的从业者或正在考虑或刚刚开始敏捷之旅的人,本书应该非常感兴趣。

通过本书你将学到什么:

  • 了解构成软件开发过程的各个学科如何结合在一起
  • 了解在开发过程管理中的哪个位置,您可以对进度和控制进行衡量
  • 审查质量工程计划将如何对开发过程的质量产生积极影响
  • 检查开发过程的质量如何深刻影响软件系统的质量

这本书是为谁而写的

经理,从C-Suite(CEO,CXO,CIO)到直线经理(包括项目经理),以及包括程序员,测试人员和中层经理(技术项目经理,软件质量工程师和教练)在内的从业人员。此外,敏捷爱好者正在寻找一种软件开发方法。

《优化软件测试过程的人工智能方法:通过实际示例和练习》

《优化软件测试过程的人工智能方法:通过实际示例和练习》

《优化软件测试过程的人工智能方法:通过实际示例和练习》提出了不同的基于人工智能的解决方案,以克服许多初始测试问题中发现的不确定性。智能决策的概念被呈现为一项多标准、多目标的工作。本书提供了有关如何通过智能决策管理各种类型的不确定性的指南,可以帮助许多行业的主题专家以更有效的方式改进各种流程。

由于测试产品所需的测试用例数量可能很大(在行业中,通常会创建 10,000 多个测试用例)。在没有任何特定顺序的情况下执行所有这些测试用例会影响测试执行的结果,因此本书满足了对有关如何,是什么和为什么的主题的综合资源的需求。

本书的主要内容:

  • 提出该领域最早的实证研究之一,将真实工业环境中创新的理论假设与来自各个大型行业的已开发和开发测试流程的大量用例进行了对比
  • 探索具体的比较方法,重点是开发和开发基于人工智能的解决方案
  • 作为在人工智能和软件测试领域进行工业研究的指南
  • 通过真实的工业案例研究解释所有提出的解决方案

《全栈测试:交付高质量软件的实用指南》

《全栈测试:交付高质量软件的实用指南》

对于任何希望交付高质量软件的组织来说,测试都是一门至关重要的学科。这本实用的书为软件开发人员和QA工程师提供了全面的一站式指南,介绍了10个不同类别的测试技能。您将学习适当的策略,概念和实际实施知识,您可以从Web和移动应用程序的开发和测试角度应用它们。
作者Gayathri Mohan提供了40多种工具的示例,您可以立即使用。通过学习本书您将获得执行探索性测试、测试自动化、跨职能测试、数据测试、移动测试和可视化测试以及性能、安全性和可访问性测试的技能。你将了解如何将它们集成到持续集成管道中,以获得更快的反馈。深入了解本指南后,您将能够处理具有挑战性的开发工作流程,重点关注质量。
通过学习本书,您将能够:
• 学习如何采用各种测试类型来为您的项目提供最高质量

• 遵循本书的策略和概念,探索新的测试方法

• 通过以下详细示例学习如何在工作中应用这些工具

• 通过广泛接触测试最佳实践来提高您的技能和工作前景