常见的二十种软件测试方法详解

news2024/12/29 13:03:45

一.单元测试(模块测试)

单元测试是对软件组成单元进行测试。其目的是检验软件组成单位的正确性。测试对象是:模块。

对模块进行测试,单独的一个模块测试,属于静态测试的一类

测试阶段:编码后或者编码前(TDD)
测试对象:最小模块
测试人员:白盒测试工程师或开发工程师(测源码)
测试依据:代码和注释+详细设计文档
测试方法:白盒测试(因为要测源码)
测试内容:模块接口测试(测试模块里面的参数传递是否正确)、局部数据结构测试(测试变量的作用域范围)、路径测试(if-else 判断必须覆盖所有分支)、错误处理测试、边界测试( for 循环)

二.集成测试

集成测试也称联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口(白盒测试)以及集成后的功能(黑盒测试进行正确性检测的一种测试。集成主要目的是检查软件单位之间的接口是否正确。

测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

三.系统测试

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。

测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师(对功能测试)
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

回归测试(Regression Testing)

四.回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

有了代码修改后就进行回归测试,根据测试阶段确定回归范围。

在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。

五.冒烟测试

这一术语源自硬件行业。
对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。也可以理解为该种测试耗时短,仅用一袋烟功夫足够了。

冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

概念:对核心主干流程进行测试,如果成功,就认为成功
作用:判断是否接受测试的标准,若核心主干都走不通,那么直接打下去

六.验收测试

买到新手机,一般会有7天包退,一个月包换,我们会尽量在7天内把手机的所有功能都试一遍。

验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。

测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)。
测试人员:主要是最终用户或者需求方。
测试依据:用户需求、验收标准
测试方法:黑盒测试(对功能进行测试)
测试内容:同系统测试(功能…各类文档等)

七.静态测试(不运行程序本身,测试文档)

静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。‘对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。

八.动态测试

动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。大多数软件测试工作都属于动态测试。

九.手工测试

就是由人去一个一个的输入测试用例,然后观察结果,和机器测试相对应,属于比较原始但是不可缺少的一个步骤。

总结优缺点:
(1)优点:自动化无法替代探索性测试、发散思维结果的测试。
(2)缺点:执行效率慢,量大易错。

十.自动化测试

就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。

简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

自动化实施步骤:
1.完成功能测试,版本基本稳定
2.根据项目特性,选择适合项目的自动化工具,并搭建环境
3.提取手工测试的测试用例转化为自动化测试的用例
4.通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
5.生成自动测试报告
6.持续改进,脚本优化。

十一.业务测试

业务测试是测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。

例如查看邮件:
登录网站-输入用户名、密码登录-进入收件箱-查到邮件-点击打开-查阅-关闭邮件-退出邮箱-关闭网站
业务测试关注需求和用户
所有业务流程进行测试,包过主干流程,分支流程,甚至更小的流程
测不同的业务,必须对项目的需求特别了解

十二.界面测试

界面测试(简称UI测试),测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等。

十三.文档测试

十四.兼容性测试

大家经常上网,同一网站在不同的浏览器上表现不一样

WEB测试 ;APP测试

兼容性主要是指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃。

平台测试
浏览器测试
软件本身能否向前或者向后兼容
测试软件能否与其它相关的软件兼容
数据兼容性测试
最常见的就是浏览器的兼容性测试,不同浏览器在css,js解析上的不同会导致页面的显示不同。

十五.易用性测试

易用性(Useability)是交互的适应性、功能性和有效性的集中体现。

手机拔打电话功能不放在首页,放在一个目录下边,点击三四次才可以找到拔打电话功能,这个功能好用吗?

十六.性能测试

检查系统是否满足需求规格说明书中规定的性能。

通常表现在以下几个方面:

对资源利用(如内存、处理机周期等)进行的精确度量
对执行间隔
日志事件(如中断,报错)
响应时间
吞吐量(TPS)
辅助存储区(例如缓冲区、工作区的大小等)
处理精度等进行的监测

十七.易用性测试

易用性(Useability)是交互的适应性、功能性和有效性的集中体现。易用性属于人体工程学的范畴,人体工程学(ergonomics)是一门将日常使用的东西设计为易于使用和实用性强的学科。

手机拔打电话功能不放在首页,放在一个目录下边,点击三四次才可以找到拔打电话功能,这个功能好用吗?

在某些大厂会有专门的部门来进行易用性测试,又叫用户体验测试。

十八. 安装测试

测试程序的安装、卸载
典型的是app的安装、卸载

十九.安全测试

安全测试是一个相对独立的领域,需要更多的专业知识。例如web的安全测试,需要熟悉各种网络协议
TCP\HTTP,防火墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等。从软件来说,熟悉各种攻击手段,例如
SQL注入、Xss等。
作为web入门测试,可以IBM的appscan。

二十.内存泄漏测试

电脑打开的东西太多,机器反应慢甚至死机,重启之后就好了,过会同样的问题出现

很多软件系统都存在内存泄露的问题,尤其是缺乏自动垃圾回收机制的“非托管”语言 编写的程序,例如C、CH、Delphi等。从用户使用的角度来看,内存泄露本身不会造成什 么危害,一般用户可能根本不会感觉到内存泄露的存在。但是内存泄露是会累积的,只要执 行的次数足够多,最终会耗尽所有可用内存,使软件的执行越来越慢,最后停止响应。可以 把这种软件的问题比喻成软件的“慢性病”。

造成内存泄露的原因有很多,最常见的有以下几种。

1.分配完内存之后忘了回收。
2.程序写法有问题,造成没办法回收。
3.某些API函数的使用不正确,造成内存泄露。
4.没有及时释放。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

大数据学习之Redis、从零基础到入门(一)

目录 一、Redis入门概述 1. 是什么? 官方解释: 2. 能干嘛? 2.1 主流功能与应用 2.1.1分布式缓存 2.1.2内存存储和持久化(RDBAOF) 2.1.3高可用架构搭建 2.1.4缓存穿透、击穿、雪崩 2.1.5分布式锁 2.1.6队列 2.2 总体功能概括 2.3…

JeecgBoot 3.6.1实现Modal对话框,以为审核数据为例

JeecgBoot 3.6.1实现Modal对话框 vue使用的是3.0版本 文章目录 JeecgBoot 3.6.1实现Modal对话框前言一、列表页面关键代码示例二、textAuditModal.vue代码示例三、test.api.ts总结 前言 在工作中,有一个需求,要求,在数据列表页,…

容联云入选中国大模型产业新锐企业TOP30

近日, WIM 2023(世界创新者年会)发布《2023中国大模型产业创新服务商TOP 30》名单,评选出30家2023年中国大模型领域做出卓越贡献的企业,凭借垂直行业大模型“赤兔大模型”展现出的创新力与商业落地速度,容联…

springboot项目中使用iframe引入页面

一、 <iframe name"uploadPage" src"/uploadImg.html" width"100%" height"50" marginheight"0" marginwidth"0" scrolling"no" frameborder"0"></iframe> 前提是将要引入的页面…

2012-2022年全国各省数字经济相关指标数据合集(18个指标)

2012-2022年全国各省数字经济相关指标数据合集&#xff08;18个指标&#xff09; 1、时间&#xff1a;2012-2022年 2、指标&#xff1a;地区、year、互联网接入端口数、互联网宽带接入用户数、互联网域名数、移动电话普及率、长途光缆线路长度&#xff08;万公里&#xff09;…

Linux 文件:IO接口详解及实操

一、C语言中的文件IO读写操作 在c语言文件中&#xff0c;创建、打开、读、写操作可以通过如下的代码进行&#xff1a; 1.1写文件 通过w指令对文件进行写入操作时&#xff0c;编译器会先将文件内容清空然后重新写入。 #include <stdio.h> #include <string.h> i…

山体滑坡监测预警系统-gnss位移监测站

GNSS山体滑坡位移监测站是一种利用全球导航卫星系统&#xff08;GNSS&#xff09;进行山体滑坡位移监测的设备。它通过接收和处理GNSS卫星信号&#xff0c;能够实时监测山体的位移变化&#xff0c;并将数据传输到后端系统进行分析和处理。 GNSS山体滑坡位移监测站具有高精度、…

基于springboot+vue的师生健康信息管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

java web mvc-03-JFinal

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails JFinal JFinal 是基于 Java 语言的极…

CSC7225

CSC7225 为高性能电流模式 PWM 开关电源控制器&#xff0c;满足绿色环保标准&#xff1b;广泛适用于经济型开关电源&#xff0c;如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7225 采用 DIP-8 封装。 CSC7225主要特点  CSC7225内置 700V 高压功率开关管&#xff0c;外…

kubeadm 安装k8s集群后,master节点notready问题解决方案

使用kubeadm 安装k8s集群后&#xff0c;加载calico cni 网络组件后&#xff0c;master节点notready问题 表现为&#xff1a; 使用命令查看日志&#xff1a;journalctl -f -u kubelet 报错如下&#xff1a; Failed to start ContainerManager failed to initialize top level…

通过代理服务器的方式解决跨域问题

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 这里以本地访问https://heimahr.itheima.net/api/sys/permission接口为列子 Node.js 代理服务器 (server.js) 本次考虑使用JSONP或CORS代理来…

服务器配置优化句柄数量

当部署新的服务器环境时&#xff0c;需要对服务器的句柄数进行一次优化&#xff0c; 否则当用户量稍微增大可能会导致系统问题。 系统句柄数量 查看系统最大文件句柄数&#xff0c;执行命令&#xff1a;cat /proc/sys/fs/file-max&#xff0c;如果最大句柄数不能满足要求&am…

前端项目对接protobufjs的时候,踩坑总结

Protobuf&#xff08;Protocol Buffers&#xff09;是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。在JS/TS项目中&#xff0c;使用WebSocket与Protobuf可以实现高效的通信和数据传输。protobufjs官方仓库:https://github.com/protobufjs/protobuf.js 安装pro…

列表的创建与删除

Python 中列表可以动态地添加、修改和删除元素&#xff0c;是 Python 编程中不可或缺的一部分。本文将介绍如何使用 Python 创建和删除列表&#xff0c;以及常用的方法和技巧。 创建列表 在 Python 中&#xff0c;我们可以使用一对方括号 [ ] 来创建一个空列表&#xff0c;也可…

瓦片地图编辑器——实现卡马克卷轴的编辑,键盘控制游戏移动和鼠标点击游戏编辑通过同一个视口实现。

左边是游戏地图编辑区&#xff0c;右边是地图缓冲区&#xff0c;解决了地图缓冲区拖动bug&#xff0c;成功使得缓冲区可以更新。 AWSD进行移动 鼠标左右键分别是绘制/拖动 按F1健导出为mapv3.txt F2清空数组 打印的是游戏数组 easyx开发devcpp 5.11 easyx20220922版本 #…

《GreenPlum系列》GreenPlum初级教程-GreenPlum详细入门教程

文章目录 GreenPlum详细入门教程第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 第二章 GreenPlum单节点安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.…

手动导入jar包到Maven的解决方案(简单有效!)

想要导入一个jar包到项目中&#xff0c;这个jar包在Maven中没有可以尝试以下方式。 第一步 先找到你maven的本地仓库&#xff0c;我的仓库就在这里&#xff0c;你可以根据你安装的maven找到你的目录 第二步 根据坐标创建文件夹。 这个依赖modbus4j.jar&#xff0c;Maven远…

TCP三握四挥(面试需要)

TCP建立连接需要三次握手过程&#xff0c;关闭连接需要四次挥手过程 三次握手 从图中可以看出&#xff0c;客户端在发起connect时&#xff0c;会发起第一次和第三次握手。服务端在接收客户端连接时&#xff0c;会发起第二次握手。 这三次握手&#xff0c;都会通过SYNACK的方式…

论文翻译:On Bringing Robots Home

On Bringing Robots Home 关于引入机器人到家庭 文章目录 On Bringing Robots Home关于引入机器人到家庭1 Introduction1 引言2 Technical Components and Method2 技术组件与方法2.1 Hardware Design2.1 硬件设计2.2 Pretraining Dataset – Homes of New York2.2 预训练数据…