1.软件测试基础
一、软件测试概念
1.什么是软件
软件是计算机程序,是由计算机代码编写的一系列指令和数据,可以实现各种功能。它指的是计算机系统中的应用程序,包括操作系统、应用软件、驱动程序等。软件可以通过编程语言编写和开发,并可以安装到计算机系统中运行。常见的软件包括办公软件、游戏、浏览器、媒体播放器和各种应用程序。
2.软件产生过程
- 问题定义与规划:此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
- 需求分析:在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。
- 软件设计:此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。
- 程序编码:此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。
- 软件测试:在软件设计完成后要进行严密的测试,一发现软件在整个设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。
- 发布和维护:通过测试的软件就可以发布使用了,在使用的过程中会发现一些问题,这时就需要进行软件的维护了。也就是对软件进行一些必要的改动和升级。
3.什么是软件测试
软件测试是指在软件开发过程中,使用人工或者自动化的方式来评估软件的质量和可靠性的过程。其主要目的是发现软件中存在的缺陷和错误,并确保软件能够满足用户需求。
软件测试包括多个阶段,如单元测试、集成测试、系统测试、验收测试等。每个阶段的测试重点和方法都不尽相同。在软件测试中,测试人员需要根据测试计划和测试用例执行测试,并对发现的问题进行跟踪和管理。
软件测试是提高软件质量的重要手段,能够帮助开发团队及时发现和修复软件中的缺陷,降低软件发布后面临的风险和成本。同时,软件测试还能够提高软件的可靠性、稳定性和安全性,增强用户对软件的信任度和满意度。
二、软件测试类型
1.功能测试:
功能测试是对产品的各项功能进行验证,以确保产品符合需求规格书中的功能要求。这包括检查产品的各项功能是否能够实现,以及实现的是否正确。常用的功能测试工具包括QTP、WinRunner、SilkTest等。
2.接口测试:
接口测试是针对软件之间进行数据交互的接口进行测试的一种形式。它主要检查数据交换的正确性和有效性。常用的接口测试工具包括Postman、JMeter、SoapUI等。
3.性能测试:
性能测试是对软件在不同负载和压力下的性能进行评估和测试的一种形式。它可以帮助发现软件在高负载下的问题和优化软件性能。常用的性能测试工具包括LoadRunner、JMeter、ApacheBench等。
4.自动化测试:
自动化测试是通过使用自动化测试工具或编写自动化测试脚本来完成软件测试的一种形式。它可以大大提高测试效率,减少人工干预。常用的自动化测试工具包括Selenium、Appium、QTP等。
需要注意的是,不同的测试阶段和测试对象可能需要使用不同的测试工具和方法。因此,在选择测试工具时,需要根据具体情况进行评估和选择。
三、测试分类
1.按测试阶段划分
- 单元测试(Unit Testing):这个阶段主要针对软件中的基本组成单位进行测试,目的是检验软件基本组成单位的正确性。这大多是由开发人员进行的自测。
- 集成测试(Integration Testing):在软件系统集成过程中进行的测试,主要检查软件单位之间的接口是否正确。这是在单元测试之后进行的测试。
- 系统测试(System Testing):对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
- 验收测试(Acceptance Testing):这是部署软件之前的最后一个测试操作,目的是确保软件准备就绪,可以向软件购买者展示该软件系统满足其用户的需求。
2.按代码可见度划分
- 黑盒测试(Black Box Testing):不关注源代码,只关心软件的输入输出和功能实现,测试依据主要是需求文档。
- 灰盒测试(Gray Box Testing):介于黑盒测试和白盒测试之间,关注程序部分代码和功能实现,测试依据主要是设计文档。
- 白盒测试(White Box Testing):针对程序源代码进行测试,关注软件内部设计和程序实现,测试依据主要是设计文档。
这三种测试方法各有优缺点。黑盒测试不需要考虑代码实现,只需要根据需求文档进行测试,但无法发现代码实现中的错误。白盒测试可以发现代码实现中的错误,但需要投入大量时间和精力,且对测试人员的要求较高。灰盒测试则介于两者之间,既可以发现代码实现中的错误,又不会过于关注代码细节。
⿊盒测试:主要针对功能(阶段划分->系统测试)灰盒测试:针对接口测试(阶段划分->集成测试)⽩盒测试:针对程序源代码进⾏测试(阶段划分->单元测试)系统测试和黑盒测试重点核心是:功能测试。集成测试和灰盒测试又称:接口测试 。单元测试和白盒测试是对代码进行测试。自动化测试归属功能测试。性能测试、安全测试归属专项测试。
四、软件质量模型
ISO/IEC 25010是软件质量模型的标准,该标准包含8个特性和31个子特性,具体如下:
- 功能性:软件在指定条件下使用时,提供满足明示和隐含要求的功能的能力。这包括适合性、准确性、互操作性、安全性、共存性等子特性。
- 性能效率:软件在指定条件下使用时,提供适当的性能和响应性的能力。这包括时间特性、资源利用性、容量等子特性。
- 兼容性:软件在指定条件下使用时,能与一个或更多的规定系统进行交互的能力。这包括共存性、互操作性等子特性。
- 易用性:软件在指定条件下使用时,能被理解、学习、使用和吸引用户的能力。这包括易理解性、易学习性、易操作性、吸引性等子特性。
- 可靠性:软件在指定条件下使用时,能维持规定的性能级别的能力。这包括成熟性、容错性、易恢复性等子特性。
- 信息安全性:软件在指定条件下使用时,保护信息和数据的能力。这包括保密性、完整性、可用性等子特性。
- 维护性:软件在指定条件下使用时,能被修改的能力。这包括分析性、可修改性、稳定性、测试性等子特性。
- 可移植性:软件在指定条件下使用时,能从一环境转移到另一环境的能力。这包括适应性、易安装性、共存性、易替换性等子特性。
ISO/IEC 25010相比之前的ISO/IEC 9126标准,增加了安全性和兼容性两个主特性,并对功能性、易用性和可维护性做了修改,以更好地满足现代软件开发的需求。
相关文章:
1.软件测试基础
一、软件测试概念 1.什么是软件 软件是计算机程序,是由计算机代码编写的一系列指令和数据,可以实现各种功能。它指的是计算机系统中的应用程序,包括操作系统、应用软件、驱动程序等。软件可以通过编程语言编写和开发,并可以安装…...
综合布线系统概述
对于现代化的大楼,其内部信息传输通道系统(综合布线系统) 已不仅仅要求能支持一般的语音传输,还应能够支持多种计算机网络 协议及多种厂商设备的信息互连,可适应各种灵活的,容错的组网方 案,…...
Labview 实战 99乘法表
基于新手小白,使用Labview实现99乘法表,敢于发表自己的一点方法,还请各位大侠放过! 如下: 运行效果如下: 思路为:将要显示出来的数据,全部转换为字符串形式,再塞入到数组…...
需求变化频繁的情况下,如何实施自动化测试
一.通常来说,具备以下3个主要条件才能开展自动化测试工作: 1.需求变动不频繁 自动化测试脚本变化的频率决定了自动化测试的维护成本。如果需求变动过于频繁,那么测试人员就需要根据变动的需求来不断地更新自动化测试用例,从而适应新的功能。…...
C++设计模式-桥接(Bridge)
目录 C设计模式-桥接(Bridge) 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-桥接(Bridge) 一、意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 二、适用性 你不希望在抽象和它…...
Springboot+vue的开放性实验室管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
演示视频: Springbootvue的开放性实验室管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的开放性实验室管理系统,采用M(…...
1.9.C++项目:仿muduo库实现并发服务器之Connection模块的设计
项目完整在: 文章目录 一、Connection模块:这是一个对于通信连接进行整体管理的一个模块,对一个连接的操作都是通过这个模块来进行!二、提供的功能三、实现思想(一)功能(二)意义&am…...
Iphone文件传到电脑用什么软件,看这里
在数字化时代,文件传输已经成为我们日常生活中不可或缺的一部分。然而,苹果用户在将手机文件传输到电脑时,往往会面临一些困扰。曾经的“文件传输助手”并不能完全满足用户的需求。于是,很多人开始寻找更便捷的解决方案。在本文中…...
JS进阶-原型对象prototype
原型 原型就是一个对象,也称为原型对象 构造函数通过原型分配的函数是所有对象所共享的。 JavaScript规定,每一个构造函数都有一个prototype属性,指向另一个对象,所以我们也称为原型对象 这个对象可以挂载函数,对象…...
【Unity】两种方式实现弹跳平台/反弹玩家(玩家触发与物体自身触发事件实现蹦床的物理效果)
一、声明 只实现物理反弹的效果,不实现蹦床会有的视觉拉伸效果,请自行找相关代码 二、实现 经过我的实践,我发现要想实现一个平台反弹的效果,要么就选择给player添加一个物理材质(平台加了没用)࿰…...
python开发幸运水果抽奖大转盘
概述 当我女朋友跟我说要吃水果,又不知道吃啥水果时候,她以为难为到我了,有啥事难为到程序员的呢! 今天用python利用第三方tkinterthreadingtime库开发一个幸运水果抽奖大转盘!抽到啥吃啥 详细 老规矩!咱…...
【CMU15-445 Part-16】Concurrency Control Theory
Part16-Concurrency Control Theory 架构概念 Transcations txn就是通过在数据库系统中执行一系列操作(sql queries)来执行某种更高级的功能(应用程序所执行的功能)。 Transcations in SQL 一个新的事务开始 with BEGIN,txn结束with COMM…...
软件设计模式系列之二十五——访问者模式
访问者模式(Visitor Pattern)是一种强大的行为型设计模式,它允许你在不改变被访问对象的类的前提下,定义新的操作和行为。本文将详细介绍访问者模式,包括其定义、举例说明、结构、实现步骤、Java代码实现、典型应用场景…...
国庆看坚如磐石
坚如磐石上映了,可以在爱奇艺观看。 而博主在使用蓝牙耳机连接电脑的过程中,发现没有蓝牙开启选项,并且在服务的设备管理器中也没有找到,很明显这是缺少驱动导致的,因此便去联想官方网站下载对应的驱动。 这里可以输入…...
代码随想录Day59 | 647. 回文子串 | 516. 最长回文子序列
647. 回文子串 class Solution { public:int countSubstrings(string s) {int sum0;int ns.size();vector<vector<int>> f(n1,vector<int>(n1,0));//表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串。初始值为0.for(int i n…...
为什么InnoDB选择B+树而不是红黑树作为索引结构?
在数据库管理系统中,索引结构的选择对于数据库的性能和效率至关重要。MySQL的InnoDB存储引擎是一个广泛使用的数据库引擎,它选择了B树作为索引结构,而不是像红黑树那样的其他数据结构。本文将探讨为什么InnoDB选择B树,并解释B树与…...
【c++_containers】10分钟带你学会list
前言 链表作为一个像是用“链子”链接起来的容器,在数据的存储等方面极为便捷。虽然单链表单独在实际的应用中没用什么作用,但是当他可以结合其他结构,比如哈希桶之类的。不过今天学习的list其实是一个带头双向链表。 言归正传,让…...
LeetCode 0714. 买卖股票的最佳时机含手续费
【LetMeFly】714.买卖股票的最佳时机含手续费 力扣题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股…...
cartographer-(0)-ubuntu(20.04)-环境安装
1.安装 ROS wiki.ros.org 1.1修改镜像源: 到网站上找与操作系统相匹配的镜像源 ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb htt…...
MIT 6.S081学习笔记(第二章)
〇、前言 本文主要完成MIT 6.S081 实验二:system call 一、Using gdb (easy) Question requirements In many cases, print statements will be sufficient to debug your kernel, but sometimes being able to single step through some assembly code or inspe…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
