软件工程第八周

这篇具有很好参考价值的文章主要介绍了软件工程第八周。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试用例的设计

需求分析:测试功能是什么

总体设计:测试模块之间是否有调用关系

过程性分析:测试一步一步走的对不对

当设计测试用例时,首先要明确测试的目标和范围,然后根据这些目标来决定具体的测试活动和方法。以下是对三个阶段的扩展描述:

  1. 需求分析

    测试功能是什么:基本的单元功能测试与异常测试

    • 确定需要测试的特定功能和需求。这可能包括从需求文档、用户故事或功能说明中提取特定的功能和行为
    • 识别并记录所有的业务规则和限制条件。
    • 确定预期的输出或行为,以及对异常情况或错误的处理方式
    • 定义测试的优先级,确定哪些功能是关键路径或高风险区域,需要更加重点地进行测试。
  2. 总体设计

    测试模块之间是否有调用关系:Mock+Mockito测试模块之间的调度关系,加上接口设计

    • 根据系统的架构和组件关系,确定各个模块之间的依赖和调用关系。
    • 为每个模块或组件定义接口测试,确保它们在与其他模块交互时能够正确工作。
    • 确定需要模拟或存根的组件,例如,如果某个服务还没有完成,但是您需要测试与它交互的其他部分,那么可能需要一个模拟或存根来模拟该服务的行为。
    • 评估可能的集成问题,如数据不一致、通信失败等,并为这些情况设计测试用例。
  3. 过程性分析

    测试一步一步走的对不对:集成测试+Jacoco查看代码覆盖率

    • 对于每个功能或需求,定义具体的测试步骤,包括如何触发功能、提供输入和验证输出。
    • 使用边界值分析、等价类划分等技术,确定测试输入的范围和值。
    • 考虑正常情况下的工作流程,以及可能的异常或错误路径。
    • 定义预期结果和如何验证它们。这可能包括检查数据库中的值、验证UI的输出或确认与其他系统的交互。
    • 确保代码的所有逻辑路径都被测试到,这可以通过代码覆盖工具来帮助验证。
    • 对于可能的错误或异常情况,定义如何触发它们,以及系统应该如何响应。

通过这三个阶段的分析和设计,您可以确保您的测试用例是全面和有效的,能够覆盖到系统的所有关键功能和行为。


结构化程序定义

现在停留层次是代码块,而不是模块。

结构化程序设计是一种编程范式,旨在提高大型程序和系统的可理解性和质量。它是通过以下方法实现的:

  1. 有三种基本控制结构:

    • 顺序结构:程序按照代码的顺序执行指令。
    • 选择结构:根据条件决定执行哪部分代码,如if-else语句。
    • 循环结构:重复执行某部分代码,直到满足特定条件,如forwhile循环。
  2. 单入口单出口: 这意味着每个程序或子程序只有一个开始点和一个结束点。这种方法能够有效减少内容耦合,简化程序流程,并提高代码的可读性和可维护性。

结构化程序设计的目标是使代码更加清晰和有逻辑性。描述过程要保证一定只由这三种控制结构组成,这使得程序的操作变得可预测提高了代码的可读性,从而便于“一目十行”地阅读和理解代码。

结构化程序设计不仅提高了代码的可读性和可维护性,而且使得代码更易于测试和调试。通过遵循其原则和规范,开发者可以编写出高质量、易于理解和维护的软件,从而提高整体的软件开发效率和质量。

此外,结构化程序设计鼓励程序员将大型程序分解为更小、更易于管理的部分或模块。这些模块应该是高内聚的,也就是说它们应该独立地执行一个明确的任务,而不是多个不相关的任务。


break、try-catch 与 goto 的对比

break,try catch等语句本质上保留了goto语句的特点,但是同样弱化了GOTO语句自由自在的缺陷。

  • 共同点
    • 所有这些控制结构都允许程序在非线性的方式中改变执行流程。具体来说,它们都可以导致程序从一个点跳到另一个点,跳过中间的某些代码段。
  • 差异
    • goto 是低级别的、非结构化的控制流语句,而 breaktry-catch 是高级别的、结构化的控制流机制。goto 的使用可能会导致所谓的"spaghetti code"(意为代码逻辑复杂、难以追踪),因此在现代编程中通常不鼓励使用。
    • break 通常用于跳出循环或 switch 语句,使代码的读者能够快速理解为什么执行流程被中断。
    • try-catch 是异常处理的机制,它使开发者能够明确地处理异常情况,而不是简单地跳过它们。

判定表的应用

  • 需求分析
    • 判定表可以帮助需求分析师识别和理解系统应该如何响应各种条件或输入的组合
  • 软件工程性设计
    • 设计师可以使用判定表来帮助他们确定如何实现特定的功能或行为。
  • 测试
    • 测试人员可以使用判定表来确保测试覆盖了所有可能的输入组合,这有助于发现软件的潜在缺陷。判定表确保了系统的每个部分都经过了彻底的测试,从而增加了软件的质量和可靠性。

判定表就是一组判定条件,在测试中,根据判定表制定测试用例,要考虑到判定表的所有情况。


系统设计注意点

1.常用的快捷键不要替换,红色字体表示警示:符合用户的使用习惯。

2.用户对系统的反应应该在意料之中,保证意外最小化

3.对破坏性操作要确认:退出未保存/系统格式化/撤销。

在许多应用程序中,特定的操作可能导致不可逆的更改或数据丢失。这些被称为“破坏性操作”。为了避免意外的数据丢失或更改,最佳做法是在执行这些操作之前向用户提供确认提示。

很多语言都有undo包:

  • "Undo" 功能允许用户撤销上一次或多次操作,从而恢复到先前的状态。这对于用户误操作或改变决策时非常有用。

  • 有一些编程库和框架为"Undo" 功能提供了支持,但并不是所有编程语言都内置了这样的功能。

  • 为了实现"Undo",通常需要保存先前的状态,这样就可以在需要时恢复它。

4.用户指南,在F1中给出说明,始终站在用户的角度。敏捷过程:以用户为中心,在故事中表示“作为管理员,应该……”。有一些工具能够帮助开发用户指南。

5.用户差异性:考虑到用户熟练/不熟练,ctrl c ctlv 和 右键复制。


其他

1. 可以在提示错误的时候提供错误的解决办法,就能把user-friendly变成user-helpful类型。

2. UI部分:

1. 原型法是最常用的UI设计方法,在课程设计中必须要用。比如在纸上画出,也可以尝试使用UI设计的工具。(要求使用实践工具)

2. UX / UE 用户体验岗位 :游戏岗位会有心理学背景的成员

3. Web无障碍设计原则

3. 颜色的变化可以体现系统状态的变化,作者认为可以根据心情改变颜色,进而更换系统主题和信息。


McCabe复杂性度量(程序还没设计出来)

基本概念

McCabe复杂性度量是通过控制流来判断程序的复杂性。它的核心思想是将程序简化为一个流图,由节点和边组成。这种方法变换程序为一个强连通图,并使用图论来判断图的复杂性。不过,需要注意的是,该方法不直接考虑程序本身的代码复杂性,而是通过其控制流来进行评估。

在这种流图中,主要有两种节点:单流程节点多分支节点,其中多分支节点,也称为判定节点,是最关键的部分,因为它进行决策判定。

圈复杂性

圈复杂性反映了流图中所有的边或执行路径。每一条边代表程序的一个特定的执行流程。为了进行有效的测试,测试人员应确保测试覆盖了流图中的所有边。这确保了对程序的每个可能执行路径都进行了测试。

处理复合条件

在程序中,复合条件和简单的判断条件并不相同。因此,对于复合条件,应将其视为新增的节点,确保每个节点内的判定复杂性是相同的。每一个简单条件在流图中对应一个判定节点。通常,为了确保代码的可维护性和可读性,推荐的复杂性值应该不超过10文章来源地址https://www.toymoban.com/news/detail-733907.html

到了这里,关于软件工程第八周的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件工程】山东大学软件工程复习提纲

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 本提纲可以完全摘抄,考试命中率100%,先上考试带的A4纸: 1. 软件工程三要素 方法:为软件开发提供了“如何做 ”的技术,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计等; 工具:为软件工

    2024年02月13日
    浏览(30)
  • 【软件工程】软件工程期末考试复习题

    软件工程期末考试试题及参考答案 一、单向选择题 1、软件的发展经历了(D)个发展阶段。 一 二 三 四 2、需求分析的任务不包括(B)。 问题分析 系统设计 需求描述 需求评审。 3、一个软件的宽度是指其控制的(C)。 模块数 层数 跨度 厚度 4、当模块中包含复杂的条件组

    2024年02月10日
    浏览(39)
  • 【软件工程】为什么要选择软件工程专业?

    个人主页:【😊个人主页】 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。就当下主流趋势来看,其有着无限的未来。接下来我将以六个方面来谈谈我对软件工程专业的看法: 软件工程是一门研究用工程化方法构建和维护有效、实用和高质

    2023年04月19日
    浏览(35)
  • 【课程】算法设计与分析——第八周 题解笔记

    给定一个单峰函数f(x)和它的定义域,求它的极值点 该单峰函数f(x)保证定义域内有且只有一个极值点,且为极大值点 本题感觉和dp关系不大,主要思路是三分法,和二分法非常类似,但没有二分法常用,主要用途是用来求单峰函数的极值 对于任意一个上凸函数,选取函数上任

    2024年02月05日
    浏览(42)
  • 【软件工程】自动化测试保证卓越软件工程能力(3)

    对照目标系统,如下:  给出自动化测试平台目标如下: Case level Case brief Report send to OVERALL User 1 - Process - Customer 1 Boss Level 1 User 1 - Process - Customer 1 User 1 - Process - Customer  2 User  2  - Process - Customer 1 ... Manager, Some users, Developers, Testers Level 2 User 1 - Igeress - Process - Router - Sender 1

    2024年02月04日
    浏览(42)
  • 经典软件工程复兴?大模型驱动的软件工程实践标准化

    简单来说,本文探讨了大模型驱动的软件工程实践标准化,以及如何将需求和设计规范化为 DSL 格式。通过这种方式,可以让 AI 更自动化、高效地编写代码。 随着大语言模型在软件开发中的应用越来越广泛,传统的软件工程实践开始被重新关注和提及。在诸如于编写清晰的文

    2024年02月12日
    浏览(29)
  • 【软件工程】软件测试

    软件=程序+文档 测试对象:各个阶段产生的源程序和文档。 基于不同的立场,对软件测试的目的存在着两种完全对立的观点。 (1)一种观点是通过测试暴露出软件中所包含的故障和缺陷(从用户的角度); (2)另一种是希望测试成为表明软件产品中不存在错误的过程,验证该

    2024年02月13日
    浏览(45)
  • 软件与软件工程

    软件的概念以及特点: 软件是计算机系统中不可或缺的一部分,与硬件共同构成特定的系统功能。 人们通常把各种不同功能的程序,包括系统程序、应用程序、用户自己编写的程序等称为软件 软件的概念: 软件不仅包括程序,还包括程序的处理对象——数据,以及与程序开

    2024年02月11日
    浏览(32)
  • 软件测试03:软件工程和软件生命周期

    软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 基本软件危机对于计算机发展的阻碍,1968年,在联邦德国召开的国际会议,北大西洋公约组织的计算机科学家讨论软件危机问题。提出了 软

    2024年02月08日
    浏览(45)
  • 软件设计师——软件工程(四)

    本文主要是【软件工程】——软件设计师——软件工程的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见 21.某开发小组欲为一公司开发一个产品控制软件,监控

    2024年01月24日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包