软件工程知识梳理5-实现和测试

编码和测试统称为实现。

编码:把软件设计结果翻译成某种程序设计语言书写的程序。是对设计的进一步具体化,是软件工程过程的一个阶段。

测试:单元测试和集成测试,软件测试往往占软件开发总工作量的40%以上。

编码:选择编程语言、规范编码风格

测试方法:白盒测试(结构测试)、黑盒测试(功能测试)

测试步骤:

  1. 模块测试
  2. 子系统测试
  3. 系统测试
  4. 验收测试
  5. 平行运行

单元测试:一般使用白盒测试、结合详细设计文档对重要模块进行测试。

  1. 模块接口
  2. 边界条件
  3. 出错处理通路
  4. 重要的执行通路
  5. 局部数据结构

代码审查:本人(非正式)和审查小组(正式)。

审查小组参与者:组长、程序的设计者、程序的编写者、程序的测试者(如果一个人即是程序的设计者又是编写者,或既是编写者又是测试者,审查小组种应该再增加一个程序员)

——————————————————————————————————

集成测试:

非渐增式测试方法:先进行模块测试,再把所有模块按设计要求结合成索要的程序进行测试。(测试时会遇到很多错误,改正错误也很困难,测试者面对的情况十分复杂、庞大的程序想要诊断定位一个错误非常困难)

渐增式测试方法:把程序划分成小段来构造和测试,里面包含单元测试和集成测试,测试完以后再把下一个应该测试的模块结合进来测试,每次增加一个模块的方法进行测试。(普遍采用渐增式测试方法)

渐增式集成策略有2种:自顶向下集成和自底向上集成,各自的优缺点不一样,目前基本都是混合使用两种集成策略。

回归测试:集成测试过程中新模块结合进来时,程序就发生了变化,此时数据流可能发生变化,这里就应该进行回归测试,重新执行已经做过的测试的某个子集,保证上述这些变化没有带来非预期的副作用。(这里要注意的式,回归测试用例的数量可能会变得非常大,因此,应该把回归测试集设计成只包括可以检测程序每个主要功能中的一类或多类错误的测试用例)

确认测试:也称验收测试,目标式验证软件的有效性。

软件有效性:如果软件的功能和性能如同用户所合理期待的那样就是有效的。

确认测试范围:必须用户积极参与并以用户为主,用户应该参与设计测试方案,使用用户界面输入测试数据并且分析评价测试的输出结果。此阶段一般使用黑盒测试。

软件配置复查:保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。

Alpha测试:用户在开发者场所进行,并且在开发者的指导下尽心个测试。开发者负责记录测试结果。

Beta测试:在软件的最终用户的一个或多个客户场所进行。用户记录测试结果并报告给开发者。

白盒测试技术:

逻辑覆盖:

  1. 语句覆盖
  2. 判定覆盖
  3. 条件覆盖
  4. 判定/条件覆盖
  5. 条件组合覆盖
  6. 点覆盖
  7. 边覆盖
  8. 路径覆盖

控制结构测试:

  1. 基本路径测试
  2. 条件测试
  3. 循环测试

——————————————————————————————————

黑盒测试技术

黑盒测试着重测试软件功能。力图发现以下类型的错误:

  1. 功能不正确或遗漏了功能;
  2. 界面错误。
  3. 数据结构错误或外部数据库访问错误
  4. 性能错误
  5. 初始化和终止错误

  1. 等价划分:

把程序的输入域划分为若干个数据类,据此导出测试用例。一个理想的测试用例能独自发现一类错误。

  1. 边界值分析:
  2. 错误推测:

调试

调试时在测试发现错误之后排除错误的过程。调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。

调试途径:

  1. 蛮干法
  2. 回溯法
  3. 原因排除法

软件可靠性

可靠性:程序在给定的事件间隔内,按照规格说明书的规定成功地运行地概率。

可用性:程序在给定地时间点,按照规格说明书地规定,成功地运行的概率。

估算平均无故障时间的方法

——————————————————————————————————

小结

实现包括编码和测试两个阶段。

按照传统的软件工程方法学,编码是在对软件进行了总体设计和详细设计之后进行的,它只不过是把软件设计的结果翻译成用某种程序设计语言书写的程序,因此,程序的质量基本上取决于设计的质量。但是,编码使用的语言﹐特别是写程序的风格,也对程序质量有相当大的影响。

大量实践结果表明,高级程序设计语言较汇编语言有很多优点。因此,除非在非常必要的场合,一般不要使用汇编语言写程序。至于具体选用哪种高级程序设计语言,则不仅要考虑语言本身的特点,还应该考虑使用环境等一系列实际因素。

程序内部的良好文档资料,有规律的数据说明格式,简单清晰的语句构造和输入输出格式等,都对提高程序的可读性有很大作用,也在相当大的程度上改进了程序的可维护性。

目前软件测试仍然是保证软件可靠性的主要手段。测试阶段的根本任务是发现并改正软件中的错误。

软件测试是软件开发过程中最艰巨最繁重的任务,大型软件的测试应该分阶段地进行,通常至少分为单元测试﹑集成测试验收测试3个基本阶段。

设计测试方案是测试阶段的关键技术问题,基本目标是选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。

应该认识到,软件测试不仅仅指利用计算机进行的测试,还包括人工进行的测试(例如,代码审查)。两种测试途径各有优缺点,互相补充,缺一不可。

白盒测试和黑盒测试是软件测试的两类基本方法,这两类方法各有所长,相互补充。通常﹐在测试过程的早期阶段主要使用白盒方法﹐而在测试过程的后期阶段主要使用黑盒方法。为了设计出有效的测试方案,软件工程师应该深入理解并坚持运用关于软件测试的基本准则。

设计白盒测试方案的技术主要有,逻辑覆盖和控制结构测试;设计黑盒测试方案的技术主要有,等价划分.边界值分析和错误推测。

在测试过程中发现的软件错误必须及时改正,这就是调试的任务。为了改正错误,首先必须确定错误的准确位置,这是调试过程中最困难的工作,需要审慎周密的思考和推理。为了改正错误往往需要修正原来的设计,必须通盘考虑统筹兼顾,而不能“头疼医头、脚疼医脚”,应该尽量避免在调试过程中引进新错误。

测试和调试是软件测试阶段中的两个关系非常密切的过程,它们往往交替进行。程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。根据测试和调试过程中已经发现和改正的错误数,可以估算软件的平均无故障时间;反之,根据要求达到的软件平均无故障时间,可以估算出应该改正的错误数,从而能够判断测试阶段何时可以结束。

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

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

相关文章

【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

浏览器前进后退实现思路

1. 使用浏览器的历史对象: 浏览器提供了 window.history 对象,通过该对象可以访问浏览器的历史记录。 2. 前进(Forward): 要实现前进操作,可以使用 window.history.forward() 方法。 // 前进一步 windo…

Unity之做一个最简单的FPS游戏demo

目录 😋FPS游戏Demo 💤1.新建FPS模板项目 ⚒️2.装备枪 💣3.设置射击功能 📺4.制造一个子弹预制体 🎮5.发射子弹 说起来小编学Unity差不多一个月了,都是利用上班摸鱼时间学的(doge.jpg&…

FreeRTOS_Stm32F407系列单片机标准库移植

这里写目录标题 1、下载FreeRTOS源码1.1github仓库下载1.2官网下载1.3百度网盘下载 2、FreeRTOS移植2.1首先需要有一个可运行的标准库工程2.2在工程内创建一个FreeRTOS文件夹,然后在FreeRTOS文件夹中再新建port、include、src三个文件夹。2.3 port文件夹移植2.4 inc…

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍 提示:以下是本篇文章正文内容,写文章实属不易,希望能帮助到各位,转载请附上链接。 vivado实现电路用到的资源类型 LUT(Look-Up Table)&am…

Backtrader 文档学习- Broker - Position

Backtrader 文档学习- Broker - Position 1. 概述 在backtrader中,Position对象是由Strategy对象创建的,用于跟踪策略的持仓。 通常在策略中使用以下代码检查资产的仓位: position(属性)或 getposition(dataNone, br…

【QT+QGIS跨平台编译】之十八:【Expat+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、Expat介绍二、文件下载三、文件分析四、pro文件五、编译实践一、Expat介绍 Expat库最初由James Clark创建,已经成为许多编程语言中常用的XML解析工具。它以其简单、快速和可靠的特点而受到广泛的认可和使用。 Expat库的优点包括: 快速:Expat的解析速度非常快…

使用草料二维码表单功能,让数据收集更高效、规范

功能介绍 表单作为草料二维码的高级功能之一,可用于收集格式统一的数据。你可以通过组合姓名、图片、检查项等组件搭建出电子表单,关联到二维码中,扫码填写表单即可更快速、规范的收集数据。 这些数据保存在账号下形成动态档案,…

【 USRP 相控阵】X波段相控阵开发平台用户指南

包装 一共三件。 1、AD9081-FMCA-EBZ AD9081 MxFE Evaluation Board, https://www.analog.com/eval-ad9081 AD9081 的全功能评估板使用 ACE 软件进行控制的 PC 软件HMC7044 的板载时钟用于管理套件和 FPGA 时钟选择切换到外部直接时钟 AD9081-FMCA-EBZ 评估板包括以各种模…

CTF-WEB的入门真题讲解

EzLogin 第一眼看到这个题目我想着用SQL注入 但是我们先看看具体的情况 我们随便输入admin和密码发现他提升密码不正确 我们查看源代码 发现有二个不一样的第一个是base64 意思I hava no sql 第二个可以看出来是16进制转化为weak通过发现是个弱口令 canyouaccess 如果…

电镀槽槽号识别(接近开关BCD码检测)

电镀槽的槽号识别,常用方法有: 1、激光测量 2、8421码识别 3、伺服定位 4、RFID识别 这篇博客我们介绍利用接近开关和8421码检测识别槽号,电镀取放请求FC详细介绍可以查看下面博客: https://rxxw-control.blog.csdn.net/article/details/135536149https://rxxw-contr…

UE4 C++ 数据表

//基于结构体变量类型,创建数据表DataTable类型 USTRUCT(BlueprintType) struct FMyDataTableStruct : public FTableRowBase //把结构体变量公开到数据表类型 {GENERATED_BODY() //必须添加“GENERATED_BODY()”UPROPERTY(EditAnywhere, BlueprintReadWrite, Categ…

#RAG|NLP|Jieba|PDF2WORD# pdf转word-换行问题

文档在生成PDF时,文宁都发生了什么。本文讲解了配置对象、resources对象和content对象的作用,以及字体、宇号、坐标、文本摆放等过程。同时,还解释了为什么PDF转word或转文字都是一行一行的以及为什么页眉页脚的问题会加大识别难度。最后提到了文本的编码和PDF中缺少文档结构标…

hbuiderx+uniapp基于Android宠物饲养交流养宠系统 微信小程序3_reqva

3.2 APP需求分析 作为一款宠物饲养管理APP,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更…

Oracle 集群】RAC知识图文详细教程(四)--缓存融合技术和主要后台进程

Cache Fusion 原理 前面已经介绍了 RAC 的后台进程,为了更深入的了解这些后台进程的工作原理,先了解一下 RAC 中多节点对共享数据文件访问的管理是如何进行的。要了解 RAC 工作原理的中心,需要知道 Cache Fusion 这个重要的概念,要…

C#使用RabbitMQ-4_路由模式(直连交换机)

简介 RabbitMQ中的路由模式是一种根据Routing Key有条件地将消息筛选后发送给消费者的模式。在路由模式中,生产者向交换机发送消息时,会指定一个Routing Key。交换机接收生产者的消息后,根据消息的Routing Key将其路由到与Routing Key完全匹…

SVN单个项目迁移到Gitlab,保留历史提交记录

1.版本说明 svn --version:版本1.14.1 git --version:版本2.43.0.windows.1 git svn --version:执行不报错,显示版本git-svn version 2.43.0.windows.1 (svn 1.14.2) 2.提取用户的列表 提取所有SVN用户的列表到当前路径下的u…

Win10 专业版WSL2 如何安装Ubuntu22.04

环境: Win10 专业版 19041 WSL2 Ubuntu22.04 问题描述: Win10 专业版WSL2 如何安装Ubuntu22.04 解决方案: 1.启用 WSL 相关功能: 打开cmd终端(管理员权限) 运行以下命令以启用虚拟机平台功能&#…

linux环境安装git、maven、jenkins等

重启 jenkins的命令: systemctl start jenkins 如果没有vim 命令 可以使用 yum install vim 安装 vim git 下载包地址 https://www.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz 1.安装依赖环境: yum install -y curl-devel expat-devel ge…

midi 与text 互转

midi 与text 互转 参考地址代码参考地址 rwkv 代码 import io from starlette.responses import StreamingResponsefrom midi import * from midi2audio import FluidSynthdef txt_to_midi_stream(text)