软件测试基础
文章目录
- 前言
- 一、软件测试入门
- 1.什么是软件测试?
- 2.测试和开发的区别
- 3.调试和测试的区别
- 4.一些常问面试题
- 5.测试人员需要具备的素质
- 二、软件测试基础
- 1.需求
- 2.测试用例
- 3.Bug
- 4.软件的生命周期
- 5.开发模型
- 三、Bug
- 1.如何创建bug
- 2.Bug的级别
- 3.Bug的生命周期
- 4.跟开发产生争执怎么办
- 四、测试用例
- 1.测试用例的万能公式
- 2.设计测试用例的方法
- (1)等价类
- (2)边界值
- (3)因果图(判定表)
- (4)正交排列
- (5)场景设计法
- (6)错误猜测法
- 五、测试分类
- 1.按照测试对象划分
- (1)可靠性测试
- (2)容错性测试
- (3)安装卸载测试
- (4)内存泄漏测试
- 2.按照是否查看代码划分
- (1)黑盒测试
- (2)白盒测试
- (3)灰盒测试
- 3.按照开发阶段划分
- (1)单元测试
- (2)集成测试
- (3)系统测试
- (4)验收测试
- 冒烟测试
- 回归测试
前言
记录软件测试的基础知识以及一些测试工具的使用。
一、软件测试入门
1.什么是软件测试?
软件测试就是验证软件产品特性是否满足用户的需求。(举例)
2.测试和开发的区别
开发广度小,专业度高
测试广度大,专业度低一点
3.调试和测试的区别
目的不同:调式是发现问题并且解决问题;测试时发现问题。
角色不同:调试是开发人员来执行;测试是测试人员、开发人员等。
阶段不同:调试主要在编码阶段;测试贯穿于软件的整个生命周期。
4.一些常问面试题
(1)走测试岗位为什么还要学习开发知识?
1)测试人员也需要进行代码编写;
2)学习开发知识是为了更好的提高测试质量。
(2)为什么不走开发岗位而走测试岗位?
1)个人兴趣爱好;
2)对测试的理解;
3)走测试岗位还要学习开发知识;
(3)软件测试的岗位有哪些?(软件测试工程师、测试开发工程师、性能测试工程师)
1)软件测试工程师
2)软件测试开发工程师(开发指开发效能工具,提升测试质量和效率)
5.测试人员需要具备的素质
(1)综合能力:(表达、文字、开发、快速学习)
(2)优秀的测试用例设计能力
(3)掌握自动化测试技术
(4)探索性思维
(5)兴趣(责任和压力)
需要测试人员具备良好的产品思维。
二、软件测试基础
1.需求
(1)用户需求:可简单理解为甲方的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。
(2)软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。
开发人员和测试人员的直接工作依据就是软件需求。
2.测试用例
测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合主要包含:测试环境、操作步骤、测试数据、预期结果等。
3.Bug
当且仅当规格说明(需求文档/产品规格说明书)是存在的并且正确,程序与规格说明之间的不匹配才是错误。需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
4.软件的生命周期
产品/软件的生命周期:需求分析->计划->设计->编码->测试->运行维护
(1)需求分析:例如市场分析、投入和收益的占比、技术上的实现;
(2)计划:计划项目什么时候开始,什么时候结束,耗时多久;
(3)设计:将一个大的需求拆分成一个个具体可实施的任务,进行技术设计(设计哪些接口,采用什么框架,采用哪些技术等);
(4)编码:开发人员参考需求文档和技术文档等等来进行代码开发;
(5)测试:测试人员参考测试用例来设;
(6)运行维护:修复性维护,对项目中没有发现的问题要及时进行修复;完善性维护,对功能进行完善;预防性维护,为了避免产品在线上运行期间出现意想不到的问题,需要进行一些预防的手段。
软件测试的生命周期:需求分析->测试计划->测试设计与开发->测试执行->测试评估
(1)需求分析:测试人员从用户角度思考问题:软件需求是否合理;技术角度思考问题:技术上是否可行,是否还有优化空间;测试的角度思考问题:是否存在业务逻辑冗余/冲突。
(2)测试计划:开始/结束测试时间,耗时多久。
(3)测试设计与开发:写测试文档,明确标注使用到的测试方法,测试工具,测试形式等;参考需求文档、技术文档等编写测试用例。
(4)测试执行:充分利用测试用例和其他工具对项目尽可能做到全方面的覆盖测试。
(5)测试评估:评估产品是否存在其他的质量问题功能演示。
5.开发模型
(1)瀑布模型

特点:
1.线性结构,每个阶段只执行一次。
2.是其他模型的基础框架。
缺点:
1.测试置后。(前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去及早修复的机会;必须留有足够的时间给测试活动,否则导致测试不充分,把缺陷暴露给用户)
2.周期太长,产品很迟才能够被看到和使用。
适用场景:需求固定的小项目。
(2)螺旋模型
特点:螺旋模型中增加了风险分析和原型。
缺点:
1.项目中可能存在的风险性与风险管理人员技术水平有直接关系。
2.需要人员、资金、时间的增加和投入可能导致项目的成本太高。
适用场景:规模庞大、复杂度高、风险大的项目。
(3)增量模型和迭代模型
增量模型里把大的需求划分成一个个可以独立开发上线的功能。而迭代模型则是先开发基础版本,然后再在基础版本上不断地进行功能的完善。
(4)敏捷模型
1.scrum模型–三个角色五个会议
1)三个角色:产品经理、项目经理、研发团队组成。
2)五个重要会议:
发布计划会议:产品经理从需求池中拿出需求进行发布计划会议,最终确定本次迭代要完成的需求。
迭代计划会议:进行任务拆分,确定责任人,工时的评估。
每日会议:每天进行的会议,明确昨天做了什么,今天要做什么,当前遇到的问题,了解当前的项目进度。每日会议结束需要给出“可交付软件”。
演示会议:产出用户需求,如果产出用户需求则将其放到需求池中。
回顾会议:总结当前迭代周期的不足,并在下一次迭代进行优化。
特点:轻流程、轻文档、重目标、重产出。

(5)测试模型
V模型
特点:
1.测试过程中存在的不同类型的测试。
2.测试阶段的参考标准以前面对应阶段为准。
缺点:测试后置
W模型(双V模型)
1.有一个开发模型和测试模型
2.前面一个阶段完成,才能进行下一个阶段
特点:W模型重流程,不能迎接变化,不适用于敏捷模型。
优点:测试阶段从需求就开始介入。
三、Bug
1.如何创建bug
创建bug的要素:问题出现的版本、问题出现的环境、出现步骤、预期结果、实际结果。
2.Bug的级别
崩溃、严重、一般、次要(工作中按照公司要求)。
3.Bug的生命周期
测试人员在执行测试的过程中,如有发现Bug,需要在对应的Bug管理平台来创建Bug。
(1)New:测试人员创建一个Bug。
(2)Open:开发人员要去确认是否是Bug,是Bug状态就改为open。
(3)Fixed:开发人员在修复完成之后将Bug状态改为Fixed。
(4)Rejected:开发人员确认不是Bug,状态就改为Rejected。
(5)Delay:确实是Bug之后,如果Bug优先级比较低且开发人员不能立即修复Bug,状态就改为Delay。
(6)Closed:Bug确认修复完成,测试人员将Bug改为closed。
(7)Reopen:Bug确认修复未完成,测试人员将Bug状态改为Reopen。

不管Bug到哪个分支,最终都要走到终态。
4.跟开发产生争执怎么办
(1)多反思自己,是不是Bug创建的时候描述不太清除。
(2)开发人员对Bug级别不认可,Bug定级一定要有理有据。测试人员需要明确企业Bug定级规范,拿着规范跟开发人员沟通。
(3)合理友好的进行沟通,站在用户的角度反问:如果你是用户,你能接受这种功能吗?
(4)提高自身技术水平,不仅能够发现问题,最好也能够提出解决方案,供开发参考。
(5)如果确实是Bug,友好沟通已经不能解决问题,不要争吵,可以召开Bug评审。
四、测试用例
1.测试用例的万能公式
功能测试+性能测试+界面测试+兼容性测试+易用测试+安全测试
举例:(1)水杯的测试用例。

(2)登录页面测试用例
2.设计测试用例的方法
基于需求的设计方法
(1)等价类
依据需求输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少
的测试用例达到尽量多的功能覆盖,解决不能穷举测试的问题。
有效等价类:针对需求文档的要求是有意义的集合。
无效等价类:针对需求文档的要求是没有意义的集合。
步骤:
1、确认有效等价类和无效等价类。
2、编写测试用例。
(2)边界值
(3)因果图(判定表)
判定表设计测试用例的步骤:
1、确定输入条件和输出条件。
2、找出输入条件和输出条件之间的关系。
3、画判定表。
4、根据判定表编写测试用例。
(4)正交排列
正交实验设计法指从大量的实验中挑选出适量的、有代表性的点,依据“正交表”从而合理的设计出测试用例。
根据正交表设计测试用例的步骤:
1、找出因素数和水平数;
2、生成正交表;
3、根据正交表来编写测试用例;
4、补充可能存在遗漏但是非常重要的测试用例。
(5)场景设计法
一个思路引导的作用。
(6)错误猜测法
依赖测试人员的工作经验和积累。
五、测试分类
1.按照测试对象划分
(1)可靠性测试
可靠性是指系统正常运行的能力或程度。
可靠性=正常运行时间/(正常运行时间+非正常运行时间)*100%
(2)容错性测试
容错性测试是指
(3)安装卸载测试
工作中很容易遗漏安装和卸载的测试。
(4)内存泄漏测试
2.按照是否查看代码划分
(1)黑盒测试
纯功能测试,不关心具体是怎么实现的。
(2)白盒测试
关注程序的内部实现。
(3)灰盒测试
介于黑盒和白盒之间。
为什么不能让灰盒测试取代黑盒测试和白盒测试?
灰盒测试没有白盒测试那么详尽,灰盒测试没有黑盒测试覆盖产品的广度大,所以灰盒测试不能取代黑白盒测试。
哪种测试方法用的多?
黑盒测试和白盒测试测试人员都会使用到,在工作中根据具体情况来结合白盒测试和黑盒测试。通常情况下对测试人员来说使用黑盒测试相对要多一点。
3.按照开发阶段划分
(1)单元测试
对程序“最小单元”进行测试。
(2)集成测试
(3)系统测试
(4)验收测试
冒烟测试
开发人员完成开发任务之后,交给测试人员进行测试的第一步。
回归测试
对历史版本、历史功能进行测试,保证功能都是符合要求的,借助自动化来进行回归测试。
相关文章:
软件测试基础
文章目录前言一、软件测试入门1.什么是软件测试?2.测试和开发的区别3.调试和测试的区别4.一些常问面试题5.测试人员需要具备的素质二、软件测试基础1.需求2.测试用例3.Bug4.软件的生命周期5.开发模型三、Bug1.如何创建bug2.Bug的级别3.Bug的生命周期4.跟开发产生争执…...
【算法基础】链表
一、单链表例题:实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k个插入的数后面的数;在第 k� 个插入的数后插入一个数。现在要对该链表进行 M次操作,进行完所…...
[AUTOSAR][Fls模块] Flash Driver Module
Flash Driver Module--jianqiang.xue一、 简介二、 措施方式一:将FLASH操作程序作为Bootloader组件的一部分固化在存储器中方式二:通过通讯口将该部分代码从上位机下载到指定的RAM方式三:将Flash功能函数作为数据运行(推荐!&#…...
如何正确选择好用的投票平台微信公众平台投票链接链接投票平台
“年度人物楷模”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说,公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评选活动既可以给用户发…...
gocd部署应用
产品需要在多个环境部署测试,为了提高部署测试效率,故计划使用CD工具,jenkins确实足够强大,但是使用部署功能是需要安装插件的,再说自己本身只用部署功能,故决定找一个小巧的CD工具,经过一番查找…...
P2P视频聊天技术分析
整个P2P视频过程需要知道双方的媒体类型、流和候选者,所以这里就会用到一下技术: 信令服务器socket.io 状态机 ICE服务器 WebRTC框架 媒体协商 信令服务器Socket.io 信令服务器说白了作用就是发消息的中转站,A把msg发到…...
MyBatis 的一级、二级缓存机制
目录标题缓存什么是缓存为什么使用缓存什么样的数据能使用缓存,什么样的数据不能使用适用于缓存不适用于缓存MyBatis 一级缓存、二级缓存关系1. 一级缓存1.1 什么是一级缓存mybatis1.2 一级缓存配置1.3 什么情况下会命中一级缓存mybatis清除一级缓存的几种方法1.4 内…...
剑指 Offer 65. 不用加减乘除做加法
摘要 剑指 Offer 65. 不用加减乘除做加法 一、位运算 有符号整数通常用补码来表示和存储,补码具有如下特征: 正整数的补码与原码相同;负整数的补码为其原码除符号位外的所有位取反后加 11。可以将减法运算转化为补码的加法运算来实现。符…...
5年软件测试年薪30w+,我的坎坷之路谁又知道
在深圳做了五年软件测试工作,从之前的一脸懵的点点点,到现在会自动化测试,说一点点非计算机专业人员从事软件测试的心得体会,仅供参考交流。 大部分测试在公司没啥地位,当然如果你懂技术就还行,单纯点点点…...
【Opencv--自适应图像二值化】cv2.adaptiveThreshold()
【Opencv–adaptiveThreshold】自适应阈值图像二值化 文章目录【Opencv--adaptiveThreshold】自适应阈值图像二值化1. 介绍2. adaptiveThreshold函数2.1 函数调用2.2 补充说明3. 代码示例4. 效果4.1 原图(ori.img)4.2 处理后5. 参考1. 介绍 在这里 cv2.…...
洛谷P8601[蓝桥杯][2013年第四届真题]剪格子
题目描述如图 11 所示,33 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。本题的要求就是请你编程判定:对给定的 mn 的格子中的整数,是否可以分割为两个部分,使…...
配置alias实现快速生成.gitignore文件
git工具:版本控制开发工具。 cscope工具:用于浏览C源码的工具,类似于ctags。在代码根目录下执行cscope -Rbq,然后产生三个索引文件(cscope.out、cscope.in.out和cscope.po.out三个文件)。 在Linux下使用vi…...
MySQL数据库调优————GROUP BY及DISTINCT优化
GROUP BY 三种处理GROUP BY的方式 松散索引扫描(Loose Index Scan)紧凑索引扫描(Tight Index Scan)临时表(Temporary table) 三种方式的性能一次递减 松散索引扫描 无需扫描满足条件的所有索引键即可返…...
LRU缓存算法
双向链表哈希表(非线程安全) https://leetcode.cn/problems/lru-cache/solutions/259678/lruhuan-cun-ji-zhi-by-leetcode-solution/ /*** LRU算法: 哈希表双向链表实现* 1. 双向链表按照被使用的顺序来存储, 靠近头部的节点是最近使用的, 靠近尾部的节…...
@Configuration注解
Configuration注解介绍 Configuration注解,用于标注一个类是一个spring的配置类(同时,也是一个bean),配置类中可以使用ComponentScan、Import、ImportResource 和 Bean等注解的方式定义beanDefinition。 Target(Elem…...
基于springboot+vue的食疗系统
基于springbootvue的食疗系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍&…...
sklearn学习-朴素贝叶斯
文章目录一、概述1、真正的概率分类器2、sklearn中的朴素贝叶斯二、不同分布下的贝叶斯1、高斯朴素贝叶斯GaussianNB2、探索贝叶斯:高斯朴素贝叶斯擅长的数据集3、探索贝叶斯:高斯朴素贝叶斯的拟合效果与运算速度总结一、概述 1、真正的概率分类器 算法…...
分享112个HTML艺术时尚模板,总有一款适合您
分享112个HTML艺术时尚模板,总有一款适合您 112个HTML艺术时尚模板下载链接:https://pan.baidu.com/s/1D3-mfPOud-f3vy9yLl-bmw?pwdfph2 提取码:fph2 Python采集代码下载链接:采集代码.zip - 蓝奏云 时尚平面模特网站模板 潮…...
用GDB远程调试运行于QEMU的程序
1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 测试环境 本文使用 Ubuntu 16.04.4 LTS QEMU 环境进行调试。 3. 用 GDB 调试 QEMU 内程序 3.1 编写用来调试的程序 我们用 ARM32 来进行调试…...
20 堆排序
文章目录1 堆排序的概念2 堆排序基本思想3 堆排序步骤图解说明4 堆排序的代码实现1 堆排序的概念 1) 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn)…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
