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

软件测试基础

文章目录

  • 前言
  • 一、软件测试入门
    • 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)&#xf…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...