软件工程导论(5)软件编码测试与维护

news2024/11/17 21:57:56

一、软件编程

2.1良好的编程习惯

变量命名有意义并且使用统一的命名规则
编写自文档代码(序言性注释 or 行内注释)
提前进行可维护性考量(可以用常量的方式存在的数值最好以变量的方式存在)
良好的视觉安排可以提高代码的可读性(缩进/空行)

2.2代码集成

2.2.1一次性集成

驱动模块和存根模块

在这里插入图片描述

问题:

  1. 格外的驱动存根编写
  2. 错误隔离

2.2.2系统集成(SQA团队)

自顶向下集成

bfs和dfs的过程都是可以的
bfs更加方便控制系统的逻辑结构
dfs能够尽早的实现某一个分支的功能在这里插入图片描述

在这里插入图片描述

广度优先:控制整个系统的逻辑结果

深度优先:能尽早实现某个功能

优点:

  • 错误隔离
  • 存根模块不被浪费
  • 逻辑正确
  • 能够尽早发现设计(顶层)的错误
  • 逻辑组件的测试更加充分

缺点:

  • 较低层的软件测试的比较晚,而且测试不够充分

自底向上

bfs和dfs的过程都是可以的

优点:

  • 充分测试底层的重用概论非常大的操作组件
  • 驱动模块不用编写
  • 错误隔离

缺点:

  • 设计错误可能会发现的比较晚

三明治集成

逻辑组件自顶向下集成
操作组件自底向上集成
最终二者在接口处集成

面向对象过程中对对象进行自底向上,其他进行自顶向下

二、软件测试

2.1软件测试分类

  • 黑盒测试

按照规格进行测试 (数据驱动、功能性测试或输入/输出驱动测试),忽略代码 - 使用规范来选择测试案例

  • 白盒测试

测试到代码 (逻辑驱动、结构化或面向路径的测试)- 忽略规范 - 使用代码来选择测试案例

通过工件的每个路径必须至少执行一次

检测了所有路径也不能证明程序就是正确的

结论

规格测试,代码测试,随机测试都不可靠

2.2黑盒测试(用户)

避免数据覆盖带来的庞大测试量(单元测试)

  • 等效值测试
  • 边界值分析测试

基于黑盒测试进行功能测试

2.3白盒测试(开发者)

  • 语句覆盖

选择足够多的测试数据,被测试程序中的每条语句至少执行一次

  • 分支覆盖

不仅每个语句至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次

  • 条件覆盖

不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果

  • 分支+条件覆盖

选择足够多的测试数据,使判定表达式中的每个条件都取到各种可能的结果,而且每个判定表达式也都取到各种可能的结果。它同时满足判断覆盖和条件覆盖

  • 条件组合覆盖

选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。满足条件组合覆盖,也一定满足判定覆盖、条件覆盖和判断/条件覆盖

  • 路径覆盖

选取足够多的测试数据,使程序的每条可能路径都至少执行一次,如果程序图中有环,则要求每个环至少经过一次

总结

原则上进行语句覆盖,即每个处理数据的语句都覆盖一遍

语句覆盖和分支覆盖都不能检查出逻辑判断存在的问题

用例满足能条件覆盖又能分支覆盖,但是还是不能检查出逻辑判断存在问题

2.4测试管理

SQA软件质量保证小组

  • GUI测试:鼠标点击、键盘输入
  • 产品测试:从用户的角度对整个产品进行测试,基于模拟数据
  • 验收测试:基于真正的用户数据(正确性、健壮性、性能、文档)(有效性

在这里插入图片描述

三、软件维护

3.1移交后的维护

广义上:整个软件声明周期过程中的维护过程
狭义上:软件完成递交之后发生的软件维护过程

  • 改正性维护:一些错误没能在验收和测试中发现,但是被用户或者维护人员发现了
  • 完善性维护:进一步提升质量引起的维护(增加功能、运行速度、优化模块的内聚耦合、优化文档、优化代码)
  • 适应性维护:因外部环境变化导致的(新的编译器、新的操作系统、新的平台)

维护工作难度最大,要求从业者了解软件全部生命周期

  • bug:小缺陷,不希望的偏差
  • defact:软件不能正确的完成需求
  • error & fault:故障,组件中异常的情况,error容易解决
  • failuer:失效,软件不具备设计的时候要求的功能
  • vulnerability:缺陷,存在于软件架构和设计中

缺陷报告:用户或维护人员需要将错误的表现和具体操作过程等信息填写到缺陷报告

3.2软件维护的特点

(1)结构化维护和非结构化维护差别巨大

  • 非结构化维护:唯一成分是程序代码,维护活动从艰苦地评价程序代码开始,需要付出很大代价
  • 结构化维护:有完整的软件配置存在,维护工作从评价设计文档开始

(2)维护的代价高昂(了解)

(3)维护存在很多问题(了解)

3.3维护管理工作

缺陷报告

由于人力物力的原因,每个缺陷有时候不能立即修复,需要进行调查管理过程

  • 提交缺陷报告
  • 查阅之前的缺陷报告,如果之前有过就直接反馈,如果没有过就修复并且找到解决方法,之后将缺陷报告、修改清单、设计文档、用户使用手册进行归档
  • 建立缺陷报告副本,并且分发给所有从业人员(修复的时间等信息),方便相同问题的统一解决

对软件产品的变更授权

改正性维护:

  • 指定维护人员进行分析和修复
  • 对修改进行测试,需要进行回归测试
  • 修改文档
  • 更新代码的序言注释

完善性维护 和 完善性维护:

  • 需求变更报告(需求的功能性或者性能方面的变更)

最后产品分发之前必须由SQA小组进行测试,必须遵循基线和私有副本原则

软件逆工程是一个从具体到抽象的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器】零基础搭建私有云盘并内网穿透远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章:使用Nextcl…

Hx711称重模块+STM32+CubeMX

文章目录 一、模块和接线二、CubeMX配置1.时钟及sys2.IO口1)数据线DT设置为Input2)时钟线SCK设置为Output 3.串口4.后续配置 三、程序1.main.c2.hx711.c3.hx711.h4.串口重定向 总结参考文章 提示:以下是本篇文章正文内容,下面案例…

【消息中间件】比较Redis,Kafka和RabbitMQ

对微服务使用异步通信时,通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定,消息在系统内得到管理和监控,并且消息不会丢失。您可以从几个消息代理中进行选择,它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎…

云服务器CPU内存/带宽配置怎么选择?

云服务器配置怎么选择?个人如何选择?企业怎么选择云服务器配置?腾讯云服务器CPU内存、带宽和系统盘怎么选择合适?个人用户可以选择轻量应用服务器,企业用户可以选择云服务器CVM,企业用户可以选择标准型S5云…

5.1 树和二叉树的定义

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 5.1.1 树的定义 我的理解: 在计算机科学中,树是一种非线性数据结构,由节点(或称为顶点)和边…

ChatGPT国内镜像网站大盘点(国内可用免费GPT-3.5或GPT-4镜像站点)

目录 方法1:使用灵动Ai Chat网页版 方法2:使用AI CHATGPT 公益站 方法3:使用Chat8 方法4:使用https://steamship.com 方法5:使用AI文本工具站 方法6:使用AIDuTu 很多网友想要国内可用免费ChatGPT镜像站…

【AI实战】开源且可商用的 40B 大语言模型 Falcon 40B

【AI实战】开源且可商用的 40B 大语言模型 Falcon 40B Falcon 40B 介绍开源地址Falcon 40B 的测评开源协议 Falcon 40B 介绍 官网 https://www.tii.ae/news/uaes-technology-innovation-institute-launches-open-source-falcon-40b-large-language-model Abu Dhabi-UAE: 25 Ma…

spring cloud搭建(hystrix)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

安装指定版本docker [centos]

在安装k8s时,对其docker版本有要求,因为在v1.4后对docker不再支持。在安装v1.36版本时,需要提前安装对应版本的docker,这里安装20.10版本 一 先卸载原来安装的docker yum remove docker-ce docker-ce-cli containerd.io 再删除对…

vivado中的Video timing controller IP核参数计算方法

一、参数的计算 直入正题,已知某一1024*600的LCD屏幕,屏幕参数大致如下: 如何设置IP核配置界面的参数呢? 细调参数几乎用不到,我们主要说一下水平设置和垂直设置的8个参数如何配置。取LCD屏幕的典型值作为参考值&#…

自动驾驶之行泊一体

行泊一体技术是一种集成了自动泊车和无人驾驶技术的新型汽车技术,该技术可以使汽车更加智能化和自动化,提高驾驶的安全性和便捷性。从芯片和BEV技术门槛方面来看,我们可以更好地理解这项技术的优势和挑战。 一、芯片限制 实现行泊一体技术需要依靠一些关键的芯片技术,其…

谷歌浏览器Software Reporter Tool长时间占用CPU解决办法

如下图所示,大家是否在使用谷歌浏览器的过程中发现CPU风扇狂转,打开任务管理器发现一个名为software_reporter_tool.exe的软件占用了一半的CPU资源!这简直不能忍,按照下面教程,可以解决这个令人苦恼的问题。 什么是Sof…

【LeetCode】693. 交替位二进制数

693. 交替位二进制数(简单) 方法一 思路 如果一个数的二进制表示总是 0、1 交替出现,那么这个数字可能有两种表示情况,...101010 或 ...010101 ,即对应最低位从 0 或 1 开始的两种情况。 因此,我们先确定…

港科夜闻|香港科大出席一流大学建设系列研讨会-2022暨中国大学校长联谊会...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大出席一流大学建设系列研讨会—2022暨中国大学校长联谊会。5月25日至26日,香港科技大学副校长汪扬教授出席由中国科学技术大学主办的一流大学建设系列研讨会—2022暨中国大学校长联谊会。参会代表来自…

【SpringCloud】SpringAMQP总结

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange8、消息转换器 1、AMQP Advanced Message Queuing Protocol,高级消息队列协议。是用于在应用程序之间传递业务…

深入理解设计原则之单一职责原则(SRP)

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 SRP:单一职责原则 系列文章目录1、单一职责原则的定义和解读2、单一职责原则案例解读2.1、违背单一职责原则反面案例2.2、违背单一职责原则反面案例 - 解决方案 3…

《嵌入式存储器架构、电路与应用》----学习记录(三)

第4章 嵌入式内存 4.1 Flash的发展背景 Flash是非易失存储器,具有存储密度高、容错能力强和读写速度相对较慢等特点,传统Flash广泛应用于外部大数据存储。为了满足微控制器芯片(MCU)高速运算的需求,嵌入式Flash(eFlash)往往作为MCU的内部数…

【花雕学AI】ChatGPT的四大语言处理神器:文本生成、问答、创意生成和内容优化的技巧和实例

引言:ChatGPT是一个人工智能聊天机器人,它可以理解和交流多种语言,例如中文、英文、日文、西班牙语、法语、德语等。它是由OpenAI开发的,基于GPT-3.5和GPT-4这两个大型语言模型。它不仅可以与用户进行对话,还可以根据用…

Centos7切换到Alibaba Cloud Linux3

通过控制台自动导入迁移源目前仅支持迁移源的类型为物理机/虚拟机/云服务器和阿里云ECS云服务器,若需要迁移其他类型的迁移源,则可以选择手动导入迁移源。 第一步,登录SMC客户端。 登录网址:阿里云登录 - 欢迎登录阿里云&#x…

MYSQL 8 Too many connections error 还在继续,这对DBA 是不公平的

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…