【系统架构设计师】九、软件工程(软件测试)

目录

八、软件测试

8.1 测试分类

8.2 静态方法

8.2.1 静态测试

8.2.2 动态测试

8.2.3 自动化测试

8.3 测试阶段

8.3.1 单元测试

8.3.2 集成测试

8.3.3 确认测试

8.3.4 系统测试

8.3.5 性能测试

8.3.6 验收测试

8.3.7 其他测试

8.4 测试用例设计       

8.4.1 黑盒测试用例 

8.4.2 白盒测试用例

8.5 测试模型

8.5.1 W模型

8.5.2  H模型

 8.5.3 敏捷测试模型

8.6 调试(debug)

相关推荐

历年真题练习


八、软件测试

        软件测试是确保软件的质量,确认软件以正确的方式做了用户所期望的事情。软件测试通常在规定的时间和成本内完成,以尽量多地发现漏洞,但不能保证发现所有的漏洞
        测试原则:
                ●应尽早并不断的进行测试;
                ●测试工作应该避免由原开发软件的人或小组承担;
                ●在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果;
                ●既包含有效、合理的测试用例,也包含不合理、失效的用例;
                ●检验程序是否做了该做的事,且是否做了不该做的事;
                ●严格按照测试计划进行;
                ●妥善保存测试计划和测试用例;
                ●测试用例可以重复使用或追加测试。

8.1 测试分类

        (1)根据程序执行状态可分为静态测试(Static Testing,ST)和动态测试(Dynamic Testing,DT)
        (2)根据是否关注具体实现和内部结构可分为黑盒测试、白盒测试和灰盒测试
        (3)根据程序执行的方式来分类可分为人工测试(Manual Testing,MT)自动化测试
(Automatic Testing,AT)

        (4)从阶段上划分,软件测试可以分为单元测试、集成测试、系统测试、性能测试(通过自动化测试工具模拟,包括负载和压力测试)、验收测试、其他测试(补充内容)

8.2 静态方法

8.2.1 静态测试

        静态测试指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试,包括桌前检查、代码审查、代码走查的方式。使用这种方法能够有效地发现30%-70%的逻辑设计和编码错误。

8.2.2 动态测试

        动态测试指在计算机上实际运行程序进行软件测试,一般采用白盒测试、黑盒测试和灰盒测试方法。
        黑盒测试功能性测试不了解软件代码结构,根据功能设计用例,测试软件功能。
        白盒测试结构性测试明确代码流程,根据代码逻辑设计用例,进行用例覆盖。
        灰盒测试:灰盒测试介于黑盒与白盒测试之间。灰盒测试除了重视输出相对于输入的
正确性,也看重其内部的程序逻辑。

8.2.3 自动化测试

        自动化测试就是软件测试的自动化,即在预先设定的条件下自动运行被
测程序,并分析运行结果
。总的来说,这种测试方法就是将以人驱动的测试行为转化为机器执
行的一种过程。

8.3 测试阶段

        从阶段上划分,软件测试可以分为单元测试、集成测试、确认测试、性能测试(通过自动化测试工具模拟,包括负载和压力测试)、系统测试、验收测试、其他测试(补充内容)

8.3.1 单元测试

        单元测试也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或OO(面向对象)软件中的类(统称为模块),测试依据是软件详细设计说明书

8.3.2 集成测试

        集成测试目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档

8.3.3 确认测试

        确认测试主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
                内部确认测试:主要由软件开发组织内部按照SRS(Software Requirements Specification,软件需求规格说明书)进行测试
                Alpha测试:用户在开发环境下进行测试。
                Beta测试:用户在实际使用环境下进行测试,通过改测试后,产品才能交付用户。

8.3.4 系统测试

        系统测试测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项能否和系统正确连接,并满足系统/设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。

        主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试
                功能测试主要采用黑盒测试方法;
                
性能测试主要指标有响应时间、吞吐量、并发用户数和资源利用率等。

8.3.5 性能测试

        性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项
性能指标进行测试
负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,
确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化
情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大
服务级别的测试。

8.3.6 验收测试

        验收测试主要是针对SRS,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试

8.3.7 其他测试

        配置项测试测试对象是软件配置项,测试目的是检验软件配置项与SRS的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。

        回归测试测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。

        AB测试是为Web 或 App 界面或流程制作两个 (A/B)或多个 (A/B/n) 版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用

        Web测试是软件测试的一部分,是针对Web 应用的一类测试。由于 Web 应用与用户直接相关,又通常需要承受长时间的大量操作,因此Web 项目的功能和性能都必须经过可靠的验证。通过测试可以尽可能地多发现浏览器端和服务器端程序中的错误并及时加以修正,以保证应用的质量。由于Web 具有分布、异构、并发和平台无关的特性,因而它的测试要比普通程序复杂得多,包含的测试种类也非常多。

        链接测试。链接是Web 应用系统的一个主要特征,它是在页面之间切换和指导用户去一些未知地址页面的主要手段。链接测试可分为3个方面。

                首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;
                其次,测试所链接的页面是否存在;
                最后,保证 Web 应用系统上没有孤立的页面。

        表单测试当用户通过表单提交信息的时候,都希望表单能正常工作。如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让用户收到信息。要测试这些程序,需要验证服务器是否能正确保存这些数据,而且后台运行的程序能否正确解释和使用这些信息。当用户使用表单进行用户注册、登录、信息提交等操作时,必须测试提交操作的完整性,从而校验提交给服务器的信息的正确性。如果使用默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。

8.4 测试用例设计       

8.4.1 黑盒测试用例 

        将程序看做一个黑盒子,只知道输入输出,不知道内部代码由此设计出测试用例,分为下面几类:
        等价类划分:把所有的数据按照某种特性进行归类,而后在每类的数据里选取一个即可。等价类测试用例的设计原则
                设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
                设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

        边界值划分:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为18-100,边界值为18、100、17、101四个。

        错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方作为测试用例进行测试。

        因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。

        判定表驱动法:通过表格形式展示输入条件、输出动作以及它们之间的对应关系,从而设计测试用例的方法。

        正交试验设计法:研究多因素多水平的一种设计方法,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,找出最优的水平组合。

8.4.2 白盒测试用例

        知道程序的代码逻辑,按照程序的代码语句,来设计覆盖代码分支的测试用例,覆盖级别从低至高分为下面几种:

                (1)语句覆盖SC:逻辑代码中的所有语句都要被执行一遍,覆盖层级最低,因为执行了所有的语句,不代表执行了所有的条件判断。
                (2)判定覆盖DC:逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次。
                (3)条件覆盖CC:针对每一个判断条件内的每一个独立条件都要执行一遍真和假。
                (4)条件判定组合覆盖CDC:同时满足判定覆盖和条件覆盖。
                (5)路径覆盖:逻辑代码中的所有可行路径都覆盖了,覆盖层级最高。

8.5 测试模型

8.5.1 W模型

        W模型是对V模型的一个重要改进,充分体现了尽早开展测试的原则,并将V模型中以发现缺陷为目标上升为保证软件质量为目标

        如图所示,W模型实际上是两个V的叠加,一个V 描述开发过程,另外一个V描述测试过程。但测试的起,始时机不再是编码结束之后,而是从需求分析时开始,且与开发的每一个阶段活动同步进行。

8.5.2  H模型

        H模型改进了W和V模型高度依赖于开发的瀑布模型的缺陷

        H 模型把测试活动从软件开发过程中独立出来, 在软件过程的任何一个时间点上,只要测试条件满足即开展测试。测试的流程与其他流程是并行的。H模型比W模型更好的地方是能够兼顾测试的效率和灵活性,适合于各种规模及类型的软件项目。

 8.5.3 敏捷测试模型

        敏捷测试源于敏捷开发。敏捷测试是敏捷开发的组成部分,需要与开发流程良好融合。

        敏捷测试在整个敏捷开发过程中,需要与项目的其他人员甚至用户保持紧密协作,时刻关注需求变化并实施测试,以体现测试的时效性和适应性,这对测试人员有比较高的能力要求。

8.6 调试(debug)

        测试是发现错误,调试是找出错误的代码和原因。

        调试需要确定错误的准确位置;确定问题的原因并设法改正;改正后要进行回归测试

        调试的方法有:蛮力法、回溯法(从出错的地方开始,向回找)、原因排除法(找出所有可能的原因,逐一进行排除,具体包括演绎法、归纳法、二分法)。

相关推荐

【系统架构设计师】九、软件工程(软件工程定义|软件过程模型|能力成熟度模型)-CSDN博客文章浏览阅读831次,点赞19次,收藏19次。历年真题考情:本章节每年单项选择考13分左右,下午案例、论文也会有涉及,在系统架构设计师中本章节绝对是重点中的重点。主要学习软件工程、需求工程、系统分析与设计、净室软件工程、基于构件的软件工程、软件项目管理等内容。很少涉及超纲题。https://shuaici.blog.csdn.net/article/details/140095679【系统架构设计师】九、软件工程(需求工程|系统分析与设计|DFD|DD|高内聚低耦合)-CSDN博客文章浏览阅读516次,点赞14次,收藏12次。系统设计方法:结构化设计方法,面向对象设计方法。系统设计的主要内容:概要设计、详细设计。概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。https://shuaici.blog.csdn.net/article/details/140259207【系统架构设计师】九、软件工程(面向对象方法|逆向工程)-CSDN博客文章浏览阅读603次,点赞8次,收藏6次。面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。https://shuaici.blog.csdn.net/article/details/140287834

历年真题练习

        1.在白盒测试中,测试强度最高的是()

                A.语句覆盖
                B.分支覆盖
                C.判定覆盖
                D.路径覆盖

        2.在黑盒测试方法中,()方法最适合描述在多个逻辑条件取值组合所构成的负载情况下,分别
要执行哪些不同的动作

                A.等价类
                B.边界值
                C.判定表
                D.因果图

        3.( )通常为一个迭代过程,其中的活动包括需求发现、需求分类和组织、需求协商、需求文档化。

                A.需求确认
                B.需求管理
                C.需求抽取
                D.需求规格说明
 

人工分割线-答案

        1. D
                解析:测试强度从低到高:语判条路,最强的为路径覆盖。

        2. C

        3. C

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

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

相关文章

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代,随着信息技术的飞速发展,在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求,基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…

N6 word2vec文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 上周学习了训练word2vec模型,这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

【启明智显分享】乐鑫HMI方案4.3寸触摸串口屏:水质检测仪应用解决方案

水是万物的源泉,了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生,它让我们能够洞察水的酸碱奥秘。 水是万物的源泉,了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff…

springboot药房库存管理系统-计算机毕业设计源码50588

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2开发现状 1.3论文结构与章节安排 2 药房库存管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

谷歌报告显示:2023 年 50% 的0day漏洞利用背后都是间谍软件供应商

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 导 读 谷歌威胁分析小组 (TAG) 和谷歌子公司 Mandiant 表示,他们观察到 2023 年攻击中利用的0day漏洞…

垃圾百度网盘到底谁在使用

通过链接分享 通过链接分享到vx给好友查看好友在微信聊天框内打开百度网盘链接直接查看即使点击查看大图查看的图片依旧很模糊,不是原图点击右下角去app查看在百度网盘内部查看时,显示的和下载的才是原图真的是用户体验极差,真的垃圾… 通过…

数据结构与算法的联系(笔记)

文章目录 1. 什么是数据结构定义举例CRUD难道不是都一样吗? 总结 2. 什么是算法3. 数据结构与算法的联系举例 4. 推荐 1. 什么是数据结构 定义 数据结构(data structure)是计算机中存储、组织数据的方式。 关键词:① 数据 ② 存储 ③ 组织 举例 以手机通…

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式弹性计算集(RDD)相关概念介绍

目录 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依赖关系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化级别 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于语义的法律问答系统

第一步&#xff0c;准备数据集 第二步&#xff0c;构建索引数据集&#xff0c;问答对数据集&#xff0c;训练数据集&#xff0c;召回评估数据集 第三步&#xff0c;构建dataloader,选择优化器训练模型&#xff0c;之后召回评估 第四步&#xff0c;模型动转静&#xff0c;之后…

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中&#xff08;【UE5.1 角色练习】06-角色发射火球-part1&#xff09;我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”&#xff0c;用于表示…

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接&#xff1a; 启动项目时记得修改mysql和redis的相关信息&#xff1b;创建项目相关数据库&#xff0c;并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接&#xff1a; 启动项目时记得安装依赖&#xff1a;np…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分…

【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 日期处理&#xff0c;提取年份、月份2.4 经费处理2.5 天数处理 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 出发日期_…

华南师范大学“大学生校外实践教学基地”授牌仪式暨见习参观活动圆满结束

为促进校企合作的深入发展&#xff0c;培育出具有实际应用技能的人才&#xff0c;7月9日&#xff0c;华南师范大学数学科学院与广东泰迪智能科技股份有限公司联合开展“大学生校外实践教学基地”授牌仪式暨见习参观活动。华南师范大学数学科学院数据科学系主任陈艳男、副主任陈…

Idea 2023 使用GitLab提交代码提示输入Token

项目场景&#xff1a; 今天电脑换硬盘了&#xff0c;安装了 IDEA2023 款的社区版开发工具&#xff0c;下载代码后&#xff0c;提交并推送代码到远程服务器的时候&#xff0c;提示输入Token&#xff0c;并不是用户名和密码。 问题描述 推送代码到远程GitLab本地仓库的时候&…

单链表--续(C语言详细版)

2.6 在指定位置之前插入数据 // 在指定位置之前插入数据 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分为两种情况&#xff1a;1. 插入的数据在链表中间&#xff1b;2. 插入的数据在链表的前面。 // 在指定位置之前插入数据 void SLTInsert(SLTNode** …

AI绘画何以突飞猛进? 从历史到技术突破, 一文读懂火爆的AI绘画发展史

前言 自从前段时间偶然间被当下AI绘画的水平震住之后&#xff08;超越一切的AI作画神器&#xff0c;和它创作的234个盔甲美女未来战士&#xff09; &#xff0c;作者深感当今AI绘画的飞速进展或许已远超所有人的预期。 而这里的前因后果&#xff0c;包括AI绘画的历史&#xff…

十九.升职加薪系列-JVM优化-解决JVM性能瓶颈的JIT即时编译器

前言 在很多年以前&#xff0c;做C或者C的程序员经常说Java语言的运行速度不如C或C&#xff0c;Java运行速度慢主要是因为它是解释执行的&#xff0c;而C或C是编译执行的&#xff0c;解释执行需要通过JVM虚拟机将字节码实时翻译成机器码&#xff08;边翻译边执行&#xff09;&…