当前位置: 首页 > 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…...

2023最新文件快递柜系统网站源码 | 匿名口令分享 | 临时文件分享

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 2023最新文件快递柜系统网站源码 | 匿名口令分享 | 临时文件分享 很多时候,我们都想将一些文件或文本传送给别人,或者跨端传递一些信息,但是我们又不…...

分片策略(二)

分片策略 基本概念 分片键 用于分片的字段,是将数据库或表拆分的字段,比如,我可以使用user_id作为分片键将用户数据分到不同的表中,这里的user_id就是分片键,除了这种单字段分片,ShardingSphere还支持多…...

Qt之调色板类QPalette的使用

文章目录QPalette调色板类前言代码知识点讲解QPalette调色板类 前言 Qt提供的调色板类QPalette专门用于管理部件的外观显示,相当于部件或对话框的调色板,管理他们所有的颜色信息。每个部件都包含一个QPalette对象,在显示时,按照…...

Kotlin 32. Kotlin 多语言支持

Kotlin 多语言支持 对于 Kotlin 来说&#xff0c;当我们新建一个项目时&#xff0c;会默认在 values/ 文件夹下&#xff0c;生成一个 strings.xml 文件。比如说&#xff0c; <resources><string name"app_name">exampleNewProject</string> <…...

【Flutter入门到进阶】Dart进阶篇---DartVM单线程设计原理

1 虚拟机的指令执行设计 1.1 虚拟机的分类 基于栈的虚拟机&#xff0c;比如JVM虚拟机 基于寄存器的虚拟机&#xff0c;比如Dalvik虚拟机 1.2 虚拟机的概念 首先问一个基本的问题&#xff0c;作为一个虚拟机&#xff0c;它最基本的要实现哪些功能&#xff1f; 他应该能够模拟…...

Dem和NvM(NVRAM Manager)的交集

NVRAM&#xff08;NvM&#xff09;提供了在NVRAM中存储数据Block的机制。 NVRAM Block&#xff08;最大大小取决于配置&#xff09;被分配给Dem&#xff0c;并由Dem实现事件状态信息和相关数据的永久存储&#xff08;例如通电复位&#xff09;。 ECU 状态管理器&#xff08;Ec…...

AI神经网络CNN/RNN/DNN/SNN的区别对比

@版权声明: 本文由 ChatGpt 创作; BiliBili: https://www.bilibili.com/video/BV17D4y1P7pM/?share_source=copy_web&vd_source=6d217e0ff6387a749dc570aba51d36fd 引言 随着人工智能技术的发展,神经网络作为人工智能的核心技术之一,被广泛应用于图像识别、语音识别、…...

【JavaWeb】一文学会JPA

✅✅作者主页&#xff1a;&#x1f517;孙不坚1208的博客 &#x1f525;&#x1f525;精选专栏&#xff1a;&#x1f517;JavaWeb从入门到精通&#xff08;持续更新中&#xff09; &#x1f4cb;&#x1f4cb; 本文摘要&#xff1a;本篇文章主要介绍JPA的概念、注解实现ORM规范…...

【安卓逆向】APK修改与反编译回编译

【安卓逆向】反编译修改APK回编译使用工具流程步骤Apktool相关安装与使用常用命令备查APK签名命令备查实战练习反编译查看修改的地方使用Apktool反编译得到产物文件夹并进行修改回编APK实用场景在日常开发我们可能需要替换某些资源或者修改某些代码&#xff0c;但是我们没有源码…...

【计组笔记04】计算机组成原理之多模块存储器、Cache高速缓存存储器、Cache地址映射

这篇文章,主要介绍计算机组成原理之多模块存储器、Cache高速缓存存储器、Cache地址映射。 目录 一、双口RAM和多模块存储器 1.1、存取周期 1.2、双口RAM 1.3、多模块存储器...

老闵行房价/搜索引擎营销优化诊断训练

最近因需要&#xff0c;翻出几年前的Leapmotion感测器&#xff0c;准备用Unity3D做个互动APP&#xff0c;于是连上官网下载SDK。等下载下来一安装调试&#xff0c;瞬间傻眼&#xff0c;居然要求VR设备。我们Lab倒是不缺VR&#xff0c;有几套VIVE&#xff0c;不过不能保证甲方也…...

今日头条母公司做网站规划/管理方面的培训课程

TokenStream是一个能在被调用后产生语汇单元流的类&#xff0c;但是 TokenStream 类有两个不同的类型&#xff1a;Tokenizer 类和 TokenFilter 类。这两个类都是从抽象类TokenStream类继承而来。Tokenizer 对象通过Java.io.Reader 对象读取字符创建语汇单元&#xff0c;而Token…...

一个网站做多有几种颜色/自媒体软文发布平台

我发现还有一些其他的帖子可以解决我的问题&#xff0c;但是没有一篇能解决我的问题&#xff0c;所以我正在创建这篇帖子。我正在尝试为我的覆盆子Pi B安装rpi.gpio。我安装了python3 pip&#xff0c;但每次尝试从命令行用pip3调用它时&#xff0c;我都会得到“command not fou…...

东营做网站优化公司/长沙seo推广外包

F1官方日前宣布F1电竞全球锦标赛将连续第四年盛大举行&#xff0c;今年资格赛参赛人群破纪录超23.7万人&#xff0c;赛事总奖金也飙升至75万英镑。与此同时&#xff0c;F1电竞中国冠军赛个人挑战赛也全面开启报名&#xff0c;中国的模拟赛车爱好者们同样可以在虚拟赛道上&#…...

潍坊高级网站建设推广/网站关键词排名查询

2019独角兽企业重金招聘Python工程师标准>>> zhzhuyi zhu 先把主库和从库都安装好mongodb 并启动一次再关闭。注意&#xff1a;安装好mongodb软件后至少要启动关闭一次&#xff0c;否则里面的local库没有初始化最后是无法建立主从关系的。 主库指定路径&#xff0…...

本地网站建设官网/常州百度推广公司

一、前提 1、项目已经部署好 2、docker已经安装好 二、docker安装influxdb 1、下载influxdb镜像&#xff1a;docker pull tutum/influxdb 1&#xff09;超时报错&#xff1a; 2&#xff09;解决办法&#xff1a;vim /etc/docker/daemon.json&#xff08;应该只有一个key.…...