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

news2024/11/27 12:30:46

一、软件编程

1.1良好的编程习惯

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

1.2代码集成

1.2.1一次性集成

驱动模块和存根模块

在这里插入图片描述

问题:

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

1.2.2系统集成(SQA团队)

自顶向下集成

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

在这里插入图片描述

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

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

优点:

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

缺点:

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

自底向上

bfs和dfs的过程都是可以的

优点:

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

缺点:

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

三明治集成

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

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

二、软件测试

软件测试过程遵循“自底向上,逐步集成”的方式,即从小规模测试开始,逐步进行大规模测试。

2.1软件测试分类

  • 黑盒测试

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

  • 白盒测试

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

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

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

结论

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

2.2黑盒测试(用户)

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

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

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

2.3白盒测试(开发者)

  • 语句覆盖

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

  • 分支覆盖

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

  • 条件覆盖

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

  • 分支+条件覆盖

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

  • 条件组合覆盖

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

  • 路径覆盖

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

总结

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

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

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

2.4单元测试

 2.5集成测试

2.6确认测试

2.7测试管理

SQA软件质量保证小组

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

在这里插入图片描述

三、软件维护

3.1移交后的维护

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

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

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

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

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

3.2软件维护的特点

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

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

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

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

3.3维护管理工作

缺陷报告

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

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

  

对软件产品的变更授权

改正性维护:

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

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

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

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

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

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

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

相关文章

ChatGPT训练一次要耗多少电?

如果开个玩笑:问ChatGPT最大的贡献是什么? “我觉得它对全球变暖是有一定贡献的。”知名自然语言处理专家、计算机科学家吴军在4月接受某媒体采访时如是说。 随着ChatGPT引爆AIGC,国内外巨头纷纷推出自己的AI大模型,大家为人工智…

2023 开放原子全球开源峰会“开发者之夜”高能剧透!

开发者之夜~即将高燃启动 最潮!最嗨!最青春! 肆意!亲切!嗨 FUN 派! 这是一场面向开发者的线下狂欢! 也是一场精心准备的答谢盛宴! 更是一场开源圈的老友聚会! 开发者之夜…

IP地址中的子网掩码和CIDR

将常规的子网掩码转换为二进制,将发现子网掩格式为连续的二进制1跟连续0,其中子网掩码中为1的部分表示网络ID,子网掩中为0的表示主机ID。比如255.255.0.0转换为二进制为11111111 11111111 00000000 00000000。 ​ 在前面所举的例子中为什么不…

Yakit: 集成化单兵安全能力平台使用教程·Web Fuzzer篇

Yakit: 集成化单兵安全能力平台使用教程Web Fuzzer篇 1.数据包共享2.数据包扫描3.使用Web Fuzzer进行模糊测试4.常用 fuzz 标签5.热加载Fuzz1.数据包共享 分享/导入功能可用于信息分享,分享可以设置有效时长和分享密码,凭分享id和密码可以导入分享者的请求包 注意:数据包是…

uni-app 自定义组件之星级评价分数

效果图&#xff1a; 1.自定义组件starsRating.vue文件&#xff08;放在components文件夹内&#xff09; 代码截图&#xff1a; 对应的代码&#xff1a; <image click“btnStars1” class“starsicon” :src“starsObject[0]” mode“widthFix”> <image click“…

redis基础-----安装及使用场景基础操作

需要使用的网址 Redis中文网 Download | Redis 数据库及缓存架构选型网址&#xff1a; DB-Engines Ranking - popularity ranking of database management systems 常识&#xff1a; 存储方面&#xff1a; 磁盘&#xff1a; 1&#xff0c;寻址&#xff1a;ms 2&#xff…

达梦数据库读写分离集群异常测试(⾼可⽤)及双主(类似脑裂)问题处理

目录 测试前准备... 4 断电测试... 4 一、备库204断电... 4 二、断电数据新增测试... 5 1、备库204断电... 5 2、主库200新增数据&#xff0c;203备库查询正常... 5 3、204服务器启动并启动守护进程&#xff0c;测试&#xff0c;正常... 6 三、主库断电测试... 6 1、主…

python使用requests+excel进行接口自动化测试(建议收藏)

前言 在当今的互联网时代中&#xff0c;接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学&#xff0c;高效且可扩展的语言&#xff0c;自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库&#xff0c;能够帮助我们轻松…

archive log list :报错的解决办法

装好oracle数据库之后&#xff0c; 没事在练习sql语句&#xff0c; 看看一些基本的字典表啊啥的 但是当我执行 archive log list这个的时候居然给我报错&#xff0c; 这句话的意思是&#xff1a; 查看数据库的备份和恢复策略&#xff0c;并确定归档文件的具体位置&#xff…

小觅相机去畸变--Apriltag标签检测--Apriltag_ros

小觅相机型号:深度版,视场角50 ROS版本:nodelet 1.使用Calibrator获取相机的标定参数,或者用小觅相机自带的sdk获取: calibrator可以参考:ROS系统-摄像头标定camera calibration 小觅自带sdk参考:获取图像标定参数 或者小觅的ROS包编译后,会生成 这个get_img_para…

请求从前端到后端跟踪调试

请求慢的原因很多&#xff0c;当出现前端反应接口慢时&#xff0c;而通过后端日志查看请求处理时间并不慢时&#xff0c;往往会手足无措&#xff0c;当面对网络问题出现手足无措时&#xff0c;这就是在提醒你该抓包分析了&#xff0c;那么一般如何根据抓包文件去分析慢请求呢&a…

【MySQL】数据库报错集

一. 报错列表 1.1. Out of range value for column “xx” at row x 阐述&#xff1a;第 “x” 行的列 “xx” 超出范围 原因&#xff1a;建表时&#xff0c;类型bigint且长度20&#xff0c;如下字段的值超过其可输入的范围了 解决&#xff1a;修改该值为该列所设的长度即可 …

Cookie和Session原理详解

目录 前言 Cookie Session 会话机制 Cookie和Session的区别 Servlet中对Session和Cookie的封装 代码实例&#xff1a;实现用户登录 约定前后端交互的接口 前端页面&#xff1a; 后端实现 login index 总结 前言 在web的发展史中&#xff0c;我们知道浏览器和服务…

【模拟电子技术】理论考核回顾

写在前面&#xff1a; 1&#xff1a;好好学习&#xff0c;早日学会看B站华成英老师的课&#xff0c;不然就会像我一样最后快挂科了。 2&#xff1a;杂谈&#xff1a;我觉得一个“智者”可以因为我不会做题来侮辱我的智商&#xff0c;但是不能借此侮辱我没好好复习。 3&#…

AI换脸(支持视频换脸,支持cpu、低算力)【附代码】

可直接选择一张人脸去替换另一张图片或者视频中的人脸。本项目仅提供人脸替换部分&#xff0c;不需要数据集&#xff0c;不用训练&#xff01; 目录 项目说明 环境说明 准备工作 如何使用 免责声明 项目说明 本项目参考源码&#xff1a;GitHub - s0md3v/roop: one-click…

[数据结构 -- 手撕排序算法第一篇] 堆排序,一篇带你搞懂堆排序

目录 1、堆的应用 -- 堆排序 1.1 堆排序的思路分析 2、建堆 2.1 向上调整建堆&#xff1a;O(N*logN) 2.1.1 向上调整代码 2.1.2 向上调整建堆代码 2.2 向下调整建堆&#xff1a;O(N) 2.2.1 向下调整代码 2.2.2 向下调整建堆代码 3、堆排序实现代码 4、堆排序测试 1、…

一文读懂Serverless,它到底有啥用?

各位ICT的小伙伴好呀。 Serverless是最近大家讨论很多的一个话题。 今天我们就来聊聊什么是Serverless&#xff1f; ▉ Serverless是个啥&#xff1f; Server&#xff1a;服务器&#xff0c;Serverless解决问题的产品。 less&#xff1a;更少&#xff0c;Serverless解决问题…

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉&#xff0c;是 NullPointerException 的缩写&#xff1b;最近业务需求开发的有点着急&#xff0c;测试环境就时不时的来个NPE异常&#xff0c;特别的头疼&#xff1b;作为出镜率最高的异常之一&#xff0c;一旦入行Java开发&#xff0c;可以说…

微服务网关、SpringBoot、Nginx、tomcat8配置跨域

微服务网关、SpringBoot、Nginx、tomcat8配置跨域 跨域是什么?为什么会跨域解决跨域微服务网关处理跨域springboot项目配置跨域nginx配置跨域tomcat8配置跨域 跨域是什么? 跨域是A端向B端发送请求&#xff0c;A端与B端的地址协议、域名、端口三者之间任意一个不同&#xff0c…

Tomcat的优化

Tomcat的优化 一、Tomcat 优化Tomcat 配置文件参数优化 二、系统内核优化三、Tomcat 配置 JVM 参数&#xff1a;参数含义 一、Tomcat 优化 Tomcat默认安装下的缺省配置并不适合生产环境&#xff0c;它可能会频繁出现假死现象需要重启&#xff0c;只有通过不断压测优化才能让它…