当前位置: 首页 > news >正文

软件工程-第4章结构化编码和测试

软件的实现阶段:软件编码,单元测试和综合测试。

软件编码是对软件设计的进一步具体化,其任务是将设计表示变换成用程序设计语言编写的程序。

软件测试是软件质量保证的重要手段,要成功开发出高质量的软件产品,必须认真计划并彻底地进行软件测试。

4.1软件编码

4.1.1程序设计语言

用于书写计算机程序的语言。

按照级别可以分为两大类:

①低级语言:包括机器语言和汇编语言,优点是执行速度快,但代码编写难度较大,可读性较差。另外,用它编写的程序与具体的机器有关,想要运行在不同的机器上,必须重写,但是在实现与硬件系统的接口部分时,易于实现且实现效率高。

机器语言是机器能直接识别的程序设计语言或指令代码。无须经过翻译。

汇编语言也称符号语言。要通过汇编过程转换成机器指令。

②高级语言:在一定程度上与具体机器无关,是有可移植性,更接近人的思维,易于编程,阅读和修改。但由于运行时需将其翻译成机器语言,运行效率相对较低,对硬件的可控性相对于低级语言较弱。

程序设计语言的选择:

①应用领域的不同决定选择的语言。

②系统用户的要求。

③程序员的经验和知识。

④开发和维护成本。

⑤软件可移植性要求。

4.1.2程序设计风格

①源程序文档化:包括标识符的命名,使用注释,程序的视觉组织。

标识符的命名应具有精练的意义,明确的名字,不与关键词同名。

使用注释应有助于对程序的阅读理解,不宜太多也不能太少。

程序的视觉组织:恰当地利用空格,空行和缩进来增加程序的层次性和清晰度。

②数据说明标准化:为使程序中的数据说明更易于理解和维护。应数据说明的次序规范化,说明语句中变量安排有序化,使用注释说明复杂数据结构。

③语句结构简单化。

④输入/输出方法规范化:

结构化程序设计应遵循以下重要原则:

使用语言中的顺序,选择,重复等有限的基本控制结构表示程序逻辑。

选用的控制结构只准许有一个入口和一个出口。

复杂结构应该用基本控制结构进行组合嵌套来实现。

4.1.3程序效率分析

复杂性度量解决多可选方案问题与在程序编写完成后,测试,评价程序。

程序复杂性主要指摸块内程序的复杂性其度量方法一般分为以下两种:

①代码行度量法:统计一个程序摸块的源代码行数目,并以源代码行数作为程序复杂性的度量,适用于控制结构比较简单的模块。

②McCabe度量法:基于程序控制流。使用程序控制流图进行McCabe度量。仅仅描绘程序的控制流程。

4.2软件测试概述

软件测试是为了发现错误而执行程序的过程。

4.2.1测试的目的和原则

两种不同的测试目的:

①从用户角度出发,他们普遍希望通过软件测试暴露出软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。

②从软件开发者的角度出发,他们则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立用户对软件质量的信心。

软件测试目的观点:①测试是程序的执行过程,目的在于发现错误。②一个好的测试用例在于能发现至今未发现的错误。③一个成功的测试是发现了至今未发现错误的测试。

软件测试的原则:①应当把尽早地,不断地进行软件测试作为软件开发者的座右铭。

②测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。

③应由第三方人员从事测试工作。

④在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

⑤注意测试中的错误群集现象。

⑥严格执行测试计划,排除测试的随意性。

4.2.2测试的方法和步骤

1,软件测试方法

黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。不考虑程序内部的逻辑结构和内部特性。

白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部动作是否按设计规格要求正常进行。对软件的过程性细节做细致检查。允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例。

2,软件测试步骤

自底向上:从小规模测试开始逐步进行大规模测试。首先重点测试单个程序模块,然后重点转移到正在集成的模块组,接着对整个系统进行测试,最后由用户进行系统的验收测试。一般分为单元测试,集成测试,系统测试和验收测试。

4.3黑盒测试

着重测试软件的功能需求,是在程序接口上进行的测试,主要是为了发现以下错误:

①是否有功能错误,功能遗漏。

②是否能正确地接收输入数据并产生正确的输出结果。

③是否有数据结构错误或外部信息访问错误。

④是否有程序初始化和终止方面的错误。

黑盒穷举测试对所有输入数据的各种可能值的排列组合都进行测试,来检查程序是否都能产生正确的输出。

具体的黑盒测试用例设计方法包括等价类划分法,边界值分析法,错误推测法等。

①等价类划分法:把程序的输入分为若干类,然后在每一类中选取少数代表性数据作为测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他值。

②边界值分析法:对等价类划分方法的补充。针对各种边界情况设计测试用例。

③错误推测法:基于经验和直觉推测程序中所有可能存在的各种缺陷和错误,从而有针对性地设计测试用例的方法。

4.4白盒测试

目的:①保证程序中所有关键路径都被测试到,防止系统投入使用后用户发现系统问题。

②便于衡量测试的完整性,即是否把某个功能点的所有可能情况都测试到。

③可以测试到程序中的所有真分支,假分支。

④检查局部数据结构的有效性。

⑤检查程序的异常处理能力。

⑥检查代码是否遵循编码规范。

总体上分为静态白盒测试和动态白盒测试两大类。

①静态白盒测试是一种不通过执行程序而进行测试的技术,其关键功能是检查软件的表示和描述是否一致。一般包括桌面检查,代码走查和代码审查。

②动态白盒测试将程序在受控的环境下使用特定的测试用例进行正式的运行,显示了一个系统在检查状态下是否正确。最重要的技术是路径和分支测试。

穷举测试难以实现,一般可采用逻辑覆盒的白盒测试,即孝察用测试数据运行被测程序对程序逻辑的覆盖程度。可由弱到强分为语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖和路径覆盖。

正确的白盒测试要先从代码分析入手,根据不同的语句执行情况具体的测试场景选择适合的覆盖方式。

①语句覆盖:设计若干个测试用例,运行被测程序,使每个可执行语句至少执行一次。

②判定覆盖:设计若干个测试用例,运行被测程序,使程序中每个判断的取真分支和取假分支至少经历一次。

③条件覆盖:设计若干个测试用例,运行被测程序,使程序中每个判断的所有条件的每种可能取值至少执行一次。

④判定-条件覆盖:设计足够的测试用例,使判断中每个条件的所有可能取值至少执行一次。

⑤条件组合覆盖:设计足够的,测试用例,运行被测程序,使每个判断的所有可能的条件取值组合至少执行一次。

4.5单元测试

①内容:模块接口测试,局部数据结构测试,重要路径测试,错误处理测试,边界测试。

②步骤:编码阶段进行。辅助模块:驱动模地,桩模块。进行单元测试时,应为测试模块开发一个驱动模块和若干桩模块。

4.6集成测试

目标:按照设计要求使用那些通过单元测试的构件来构造程序结构。①功能性测试:黑盒测试技术针对被测模块的接口规格说明进行测试。②非功能性测试:对模块的性能或可靠性进行测试。

集成方式:①一次性集成方式:首先对每个模块分别进行模块测试,然后再把所有模地组装在一起进行测试,最终得到要求的软件系统。

②增量式集成方式:先对各个模块进行模块测试,然后将这些模块逐步组装成较大的系统,在组装的过程中边连接边测试,以发现连接过程中产生的问题,最后通过增量逐步组装成为要求的软件系统。有自顶向下,自底向上两种增量方式。

4.7系统测试

①功能测试,②回归测试,③可靠性测试,④压力测试,⑤性能测试,⑥恢复测试,⑦启动/停止测试,⑧配置测试等

 

 

相关文章:

软件工程-第4章结构化编码和测试

软件的实现阶段:软件编码,单元测试和综合测试。 软件编码是对软件设计的进一步具体化,其任务是将设计表示变换成用程序设计语言编写的程序。 软件测试是软件质量保证的重要手段,要成功开发出高质量的软件产品,必须认…...

MMDetection 目标检测 —— 环境搭建和基础使用

参考文档 开始你的第一步 — MMDetection 3.3.0 文档 依赖 步骤 0. 下载并安装 Anaconda。 步骤 1. 创建并激活一个 conda 环境。(我选择的是python3.10) conda create --name openmmlab python3.8 -y conda activate openmmlab 步骤 2. 基于 PyTo…...

C# 实现draw一个简单的温度计

运行结果 概述: 代码分析 该控件主要包含以下几个部分: 属性定义: MinValue:最低温度值。 MaxValue:最高温度值。 CurrentValue:当前温度值。 构造函数: 设置了一些控件样式来提升绘制效果…...

解放双手,让流程自动化软件助你一臂之力

本文将介绍流程自动化软件/脚本/助手的用途,同时我也做个自我介绍: 🏆 技术专长:专注于自动化脚本、网站、小程序、软件、爬虫及数据采集的定制化开发,为客户提供全方位的数字化解决方案。 💼 行业经验&…...

邀请函 | 桥田智能出席AMTS展会 家族新成员正式发布

作为国际汽车制造技术与装备及材料专业展览会,AMTS将于2024年7月3-5日在上海新国际博览中心举行。本届展会以【向“新”而行 “智”领未来】为主题,聚焦汽车及新能源全产业链,围绕“车身工程、部件工程、新能源三电工程及未来汽车开发”等技…...

安卓开发使用proxyman监控真机

1、真机跟电脑连接到同个网络中 2、手机里面设置代理,代理地址为proxyman上面指示的地址。 3、一般情况下,电脑的对应的端口是没开放的。需要到防火墙里面新建规则。入站规则 选择端口输入上方端口号 这样就能监控到了...

ruoyi登录功能源码分析

Ruoyi登录功能源码分析 上一篇文章我们分析了一下若依登录验证码生成的代码,今天我们来分析一下登录功能的代码 1、发送登录请求 前端通过http://localhost/dev-api/login向后端发送登录请求并携带用户的登录表单 在后端中的com.ruoyi.web.controller.system包下…...

推动产业数字化转型,六个方面引领变革

从工业经济时代走向数字经济时代,世界经济发生着全方位、革命性的变化,产业数字化便是最显著的表现之一。当前,产业数字化不断深入发展,平台经济、工业互联网、智能制造等新业态、新模式不断涌现,成为了数字经济的重要…...

设施布置之车间布局优化SLP分析

一 物流分析(Flow Analysis) 的基本方法 1、当物料移动是工艺过程的主要部分时,物流分析就是工厂布置设计的核心工作,也是物料搬运分析的开始。 2、零部件物流是该部件在工厂内移动时所走过的路线, 物流分析不仅要考虑…...

帕金森的锻炼方式

帕金森病,这个看似陌生的名词,其实离我们并不遥远。它是一种常见的神经系统疾病,影响着许多中老年人的生活质量。虽然帕金森病目前尚无根治之法,但通过科学合理的日常锻炼,可以有效缓解病情,提高生活质量。…...

PyTorch(一)模型训练过程

PyTorch(一)模型训练过程 #c 总结 实践总结 该实践从「数据处理」开始到最后利用训练好的「模型」预测,感受到了整个模型的训练过程。其中也有部分知识点,例如定义神经网络,只是初步的模仿,有一个比较浅的…...

windows下cmd命令行模式中cd变换路径命令无效的解决办法

一,出现的情况 二,解决方法 当出现转换盘的时候打开 cmd 之后可能是无法生效的 ,因为在cmd 中转换盘首先需要用到换盘符 。 Solve1 : 先进行换盘 C: c: // 转换到 C盘 D: d: // 转化到 D盘 Solve2 : 直接进行强转 cd /dE:\ACM算法资源\XCP…...

收藏||电商数据采集流程||电商数据采集API接口

商务数据分析的流程 第一步:明确分析目的。首先要明确分析目的,并把分析目的分解成若干个不同的分析要点,然后梳理分析思路,最后搭建分析框架。 第二步:数据采集。主流电商API接口数据采集,一般可以通过数…...

修改源码,打patch包,线上环境不生效

1.首先看修改的源码文件是否正确 在node_modules中,找对应的包,然后查看包中package.json 的main和module。如果用require引入,则修改lib下面的组件,如果是import引入则修改es下面的文件 main 对应commonjs引入方式的程序入口文件…...

NUC980-OLED实现全中文字库的方法

1.背景 有一个产品,客户需要屏幕展示一些内容,要带一些中文,实现了OLED12864的驱动,但是它不带字库,现在要实现OLED全字库的显示 2.制作原始字库 下载软件pctolcd2002 设置 制作字库 打开原始文件 用软件自带的&…...

UEFI 启动原理及qemu 虚拟化中使用

UEFI 启动原理及qemu 虚拟化中使用 什么是BIOS?什么是 UEFI? 什么是BIOS? 计算机启动时会加载 BIOS,以初始化和测试硬件功能。它使用 POST 或 Power On Self Test 来确保硬件配置有效且工作正常,然后寻找存储引导设…...

35、正则表达式

一、正则表达式命令 正则表达式:匹配的是文本内容,linux的文本三剑客都是针对文本内容。 ​ grep 过滤文本内容 ​ sed 针对文本内容进行增删改查 ​ awk 按行取列 文本三剑客----都是按照行进行匹配。 1.1、grep筛选: grep的作用就是…...

Ubuntu20.04中复现FoundationPose

Ubuntu20.04中复现FoundationPose 文章目录 Ubuntu20.04中复现FoundationPose1.安装cuda和cudnn2.下载相关资源3.环境配置4.运行model-based demo5.运行ycbv demoReference 🚀 非常重要的环境配置 🚀 ubuntu 20.04cuda 11.8.0cudnn v8.9.7python 3.9.19…...

【Qt快速入门(四)】- QLabel文本框的使用

目录 Qt快速入门(四)- QLabel文本框的使用QLabel文本框的使用QLabel的基本用法1. 创建和设置文本2. 动态设置文本 设置文本样式1.设置字体和颜色2.文本对齐方式3.富文本显示 显示图片QLabel的交互功能可点击标签 QLabel的高级特性1.缩放图片以适应标签大…...

用Python设置Excel工作表网格线的隐藏与显示

Excel表格界面的直观性很大程度上得益于表格中的网格线设计,这些线条帮助用户精确对齐数据,清晰划分单元格。网格线是Excel界面中默认显示的辅助线,用于辅助定位,与单元格边框不痛,不影响打印输出。然而,在…...

自回归模型胜过扩散模型:用于可扩展图像生成的 Llama

📜 文献卡 Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation作者: Peize Sun; Yi Jiang; Shoufa Chen; Shilong Zhang; Bingyue Peng; Ping Luo; Zehuan YuanDOI: 10.48550/arXiv.2406.06525摘要: We introduce LlamaGen, a new family …...

访问外网的安全保障——反向沙箱

反向沙箱作为一种网络安全技术,其核心理念在于通过构建一个隔离且受控的环境,来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中,如何借助反向沙箱实现安全上网,已成为众多用户关注的焦点。 随着信息化的发…...

【绝对有用】C++ 字符串进行排序、vector增加内容 和 剔除值

在 C 中对字符串进行排序&#xff0c;可以使用标准库中的 std::sort 函数。std::sort 函数可以用于容器或范围内的元素排序&#xff0c;包括字符串中的字符。以下是一个简单的示例代码&#xff0c;展示了如何对字符串中的字符进行排序&#xff1a; #include <iostream> …...

GenICam标准(一)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…...

【Redis】分布式锁基本理论与简单实现

目录 分布式锁解释作用特性实现方式MySQL、Redis、Zookeeper三种方式对比 原理 reids分布式锁原理目的容错redis简单分布式锁实现锁接口实现类下单场景的实现容错场景1解决思路优化代码 容错场景2Lua脚本Redis利用Lua脚本解决多条命令原子性问题 释放锁的业务流程Lua脚本来表示…...

Web开发技术大作业(HTML\CSS\PHP\MYSQL\JS)

从6月13日到6月15日&#xff0c;经过一系列的操作&#xff0c;终于把老师布置的大作业写完了&#xff0c;虽然有很多水分&#xff0c;很多东西都是为了应付&#xff08;特别是最后做的那几个网页&#xff09;&#xff0c;真的是惨不忍睹&#xff0c;不过既然花时间写了&#xf…...

【全开源】沃德会务会议管理系统(FastAdmin+ThinkPHP+Uniapp)

沃德会务会议管理系统一款基于FastAdminThinkPHPUniapp开发的会议管理系统&#xff0c;对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约&#xff0c;风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会…...

尚硅谷大数据技术ClickHouse教程-笔记01【ClickHouse单机安装、数据类型】

视频地址&#xff1a;一套上手ClickHouse-OLAP分析引擎&#xff0c;囊括Prometheus与Grafana_哔哩哔哩_bilibili 01_尚硅谷大数据技术之ClickHouse入门V1.0 尚硅谷大数据技术ClickHouse教程-笔记01【ClickHouse单机安装、数据类型】尚硅谷大数据技术ClickHouse教程-笔记02【表引…...

生产管理系统看板,在自动化设备领域的创新应用

在自动化设备领域&#xff0c;生产管理系统看板的创新应用是一项引人注目的技术进步。以广州某自动化设备有限公司为例&#xff0c;他们是一家涂装工程设备制造企业&#xff0c;将讯鹏生产管理系统电子看板成功应用于全自动立式静电喷粉线、卧式静电喷粉线、氟碳喷涂生产线等领…...

分享一个图片转换工具XnConvert

目录 stablediffusion3 生成图片效果图图片转换工具XnConvertpixzip stablediffusion3 生成图片效果图 今天在使用stablediffusion3时&#xff0c;尝试生成了几张Java的图片&#xff0c;发现确实很好看&#xff0c;文生图的效果超出我的预期&#xff0c;忍不住想要给自己的csd…...

佛山正规网站建设哪家好/微信社群营销

一段时间以来&#xff0c;我一直在努力提高我的代码质量&#xff0c;编写更具可读性和可开发性的代码。此过程中最重要的步骤之一是在代码中应用 SOLID 原则。让我们看看这是什么SOLID&#xff1f; SOLID 是面向对象类设计的五项原则。这是设计结构时要遵循的一组规则和最佳实践…...

德阳网站建设/百度网盘app怎么打开链接

文章目录修改模型Detect层设计转换后处理优质文章由于有些操作是没法支持的 如5维的操作&#xff1a; Unsupported slice axes ! Unsupported slice axes ! Unsupported slice axes ! Unsupported slice axes ! Unsupported slice axes ! Unsupported slice axes !参考&#…...

wordpress网站建设中/淘宝产品关键词排名查询

结构体是由不同数据类型的数据组成的集合体&#xff0c;声明形式如下&#xff1a;Struct 结构体名{数据类型说明符1 成员名1&#xff1b;数据类型说明符2 成员名2&#xff1b;..数据类型说明符n 成员名n&#xff1b;}&#xff1b;仅仅声明结构体类型是不够的&#xff0c;要使用…...

东莞网络开发/无锡优化网站排名

VXWORKS - VXWORKS on Motorola 680x0 processor 电力控制设备转载于:https://www.cnblogs.com/hshy/p/11126023.html...

做电商的常去网站/汕头seo

一. 编程语言分类1.机器语言以0&#xff0c;1的组合作为指令集&#xff0c;用二进制指令来编写程序&#xff1b;优点&#xff1a;执行效率高缺点&#xff1a;开发效率低2.汇编语言用英文标签代替二进制指令集来编写程序&#xff0c;比机器语言稍微高级&#xff0c;但本质没有发…...

做简单网站需要学什么软件有哪些/短视频seo排名系统

2019独角兽企业重金招聘Python工程师标准>>> uwsgi 提示错误 libgcc_s.so.1 must be installed for pthread_cancel to work 解决方案是&#xff1a; 把--limit-as 256改大。比如 --limit-as 1000即可 或者 <limit-as>1000</limit-as> 转载于:ht…...