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

测试人员的启蒙指南

文章目录

  • 一. 了解测试
    • 1. 生活中的测试场景
    • 2. 什么是软件测试
    • 3. 实战练习
  • 二. 软件测试和软件开发的区别
  • 三. 软件测试和软件调试的区别
  • 四. 软件测试的发展
  • 五. 软件测试的岗位
  • 六. 一个优秀的软件测试人员具备的素质

本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是以下几个问题:

  1. 什么是软件测试
  2. 软件测试和软件开发的区别
  3. 软件测试和软件调试的区别
  4. 一个优秀的测试人员所具备的素质

一. 了解测试

1. 生活中的测试场景

思考一下, 生活中的测试场景都有哪些?

  1. 考试

考试也是一种测试, 测试你有没有将老师所讲的的内容给掌握了.

  1. 逛街买衣服

买衣服时, 肯定不能把货架上的衣服都试一遍吧, 首先你要选一件大体上自己看的顺眼的. (外观测试)

然后, 看这件衣服是否与自己相匹配, 衣服是否衬托肤色, 衬托气质. (款式, 颜色测试)

还会, 通过触摸, 感受衣服的舒适度. (舒适度测试)

另外, 你还会查看 衣服的牌子上 所记录的制作材料. (材质测试)

在上面的条件都满足之后, 我们才会去问尺寸和价格, 尺寸合适才能合身, 价格需要在我们的预算之内. (尺寸, 价格测试)

2. 什么是软件测试

在了解软件测试之前,我们首先需要知道软件是什么?

软件, 就是安装在硬件上的一些应用程序, 比如: web系统 (学校的教务系统, 办公系统等); APP (qq, vx, csdn).

软件的功能是由是开发人员来实现的, 功能被实现了, 之后要进行的工作就是测试了, 测试该功能是否满足用户的需求, 是否还存在一些bug, 对于这种针对系统功能的测试,就叫做软件测试。

最常见的理解是: 软件测试就是找BUG, 发现缺陷.

其实软件测试就是验证软件产品特性是否满足用户的需求, 这里的用户: 指的是使用软件的人, 但是这个人, 不一定就是用户, 也可能是东家; 更为准确的来说: 用户就是购买软件的人, 具有软件的拥有权, 而我们平常所说的用户, 是指那些具有软件使用权的人(花钱购买的那种), 还有一些流量用户, 就是使用一些免费软件(微信 / QQ)的用户; 这三者相加, 才是真正的用户.

最早,人们更多的将测试看成对软件产品的"检验",检查软件的每个功能是否运行正常。

1983年,Bill Hetze将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了预期的效果,从这话我们可以看出以下两点:

  1. 测试试图验证软件是"工作的",也就是验证软件功能执行的正确性.
  2. 测试的活动是以测试人员"预期的结果"为依据,这里的’预期结果"指的是需求定义.

通俗点讲, 软件按照用户提出的需求而设计了很多的功能, 软件测试人员就需要验证软件功能的方方面面:

  1. 验证功能是否能正常运行 (代码能跑, 不代表就能达到预期的效果).
  2. 验证功能是否满足用户的需求 (用户的需求 == 预期的效果).

软件测试的特点:软件测试只是一个样本试验,具有不可穷尽性.

3. 实战练习

假设我们在测试某软件的登录功能, 写出测试要点.

要注意的是, 题目要测试某软件的登录功能, 并没有明确是一个怎样的系统, 给出范围很模糊; 所以, 我们不能进行 “一锅端” 的操作, 我们需要通过 “分类” 的方式, 来分析这个问题.

img

img

img

还需要注意的是这里不可能把所有的可能性都尝试一遍, 一定要明确的是, 穷举所有情况是不可能的!

软件测试只是一个样本实验, 软件测试人员要保证主要功能 (用户频繁使用的功能) 和核心流程的正确性, 也就是说:测试是有优先级的, 先把重要的测试了, 其它的, 可以往后放一放.

二. 软件测试和软件开发的区别

关于互联网的工作岗位大概有以下三种:

软件开发: 进行软件系统的开发, 功能实现的工作, 像我是学 Java 的, Java里面就会有一些框架, 数据库, 数据结构等, 这些内燃内容都是属于软件开发中需要涉及到的知识.

软件测试: 验证软件功能性的正确性, 具体的验证方式主要有手工验证和自动化验证.

测试开发: 开发测试工具,开发测试脚本,其目的就是为了提高测试效率.

要注意在实际工作中测试工作可能既包含了软件测试, 也包含了测试开发, 实际上不做细致区分.

关于软件测试和软件开发主要有如下区别:

  1. 工作内容和技能

软件开发最常见的工作就是通过不同的编程语言, 最终做出软件(coding), 这就要求开发人员技能集中, 专业度高(需要学习到一定的深度), 关于软件开发的职位, 我们见得最多的就是各种语言的工程师, 就拿Java来说:

作为一个 Java工程师, 就需要我们对底层的实现和原理很清楚, 才能写出高效的代码; 比如数据结构:哈希表,链表,顺序表等, 学习这些就是为了在某些场景中, 引入合适的数据结构来提高运行效率, 开发人员只有将技能掌握的足够深入, 了解底层的逻辑实现, 才能知道什么场景使用什么数据结构, 就好比刷力扣题一样, 是有限时间与空间复杂度要求的, 达不到要求就不能通过.

软件测试的工作就是写测试用例, 执行测试用例, 发送测试报告, 编写自动化测试用例, 开发相关的测试工具, 测试人员就要求技能广度的掌握, 因为测试人员要对产品进行全方面的测试, 外观是否好看, WEB的UI自动化, 后端的接口进行测试, 性能, 安全等等, 如果你不对这些方面涉及的技术有一定的了解, 测试工作可能就无从下手了, 测试人员技能的广泛, 主要体现在你要学操作各种测试工具, 比如:

  • 接口: soupUI, postman, jmeter
  • 自动化测试: java, Python, unittest, testNG, robotFrameWork(RF框架), selenium 工具
  • 性能测试工具: loadrunner, jmeter
  • 抓包: Charles, fiddler (fiddler还可以模拟弱网)
  • APP测试: appium, Macaca

别看这里写的很多, 但其实你只要会使用它们来协助工作就行, 不需要太过深入去了解底层是怎么样的.

  1. 发展前景

测开的待遇其实与其它技术岗位差距不大, 发展前景也是很不错的, 尤其自动化测试, 安全测试等领域发展前景和研发基本一致; 看如下路线:

  • 开发: 初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 -> 架构师 -> CTO
  • 测试: 初级测试工程师 -> 中级测试工程师 -> 高级测试工程师 -> 架构师 -> 项目经理

而且很多校招生在找工作时是不知道有测试开发这个职位的, 他们可能更多的只是知道软件开发和软件测试这两个技术岗位, 竞争的压力会小很多.

  1. 薪资及工作环境

通常情况下, 大厂同一个级别的员工, 不管是前端, 还是后端, 以及测试, 工资都相差不大; 中小厂的测试薪资比开发略低, 至于工作环境, 大厂的环境是非常好的, 中小场就碰运气喽!

三. 软件测试和软件调试的区别

  1. 角色不同

软件调试: 纯开发人员来做, 也就是开发自己去调试.

软件测试: 测试+开发一起执行(通常情况下, 黑盒测试由测试人员执行, 部分白盒测试, 系统测试是由开发人员执行).

  1. 阶段不同

软件调试: 开发阶段才会进行调试.

软件测试: 测试是伴着整个软件的生命周期的(测试介入的时间比调试早的), 是从产品的制作到发布全阶段的, 贯穿了整个软件开发过程, 开发过程中, 处处都有软件测试.

  1. 目的和手段不同

软件调试:要确保程序做了程序员想它做的事情, 我们在敲代码的时候, 代码出现了问题, 我们是需要进行调试的(通过debug来观察), 将这种调试, 称为软件调试.

软件测试: 要确保程序解决了它该解决的问题, 测试人员验证软件是否实现了用户的需求, 通过等价类划分法, 边界值法, 黑白盒测试等进行分析测试.

其实软件测试和软件调试是从不同的角度去发现问题和解决问题的, 调试是从自身的角度出发, 我只要完成领导让自己实现的功能就行, 只在乎自己实现的功能是能正常执行的;而调试是用户的角度出发, 看看有什么功能还没有满足用户的需求.

四. 软件测试的发展

  1. 以软件调试为主,发生在20世界50年代。
  2. 1957年Charles Baker对调试和测试进行了区分。这是软件测试史上一个重要的里程碑,标志已经有独立的软件测试了。
  3. 1979年,《软件测试的艺术》 中给出了软件测试的定义:测试是为发现错误而执行程序的过程。它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。
  4. 1983年,美国国家标准局(National Bureau of Standards)发布了VV&T,VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation)。这些意味着软件测试正作为一门独立的,专业的,具有影响力的工程学发展起来了。
  5. 预防为主,是当下软件测试的主流思想之一, 软件测试已经贯穿到了整个软件开发的生命周期当中了。

五. 软件测试的岗位

  • 软件测试工程师: 工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等;功能测试比较多, 涉及到的开发工作内容较少。

  • 测试开发工程师: 根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量; 测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决问题的能力尤为重要。

  • 自动化测试工程师: 设计自动化测试用例,开发自动化测试框架。

  • 性能测试工程师: 针对系统进行性能测试,包括使用工具和编写性能自动化测试脚本。

  • 安全测试工程师: 主要分析产品可能会出现的安全问题,做各个方面的渗透测试,提高产品的安全性。

  • 其它:系统测试工程师,嵌入式测试工程师,硬件测试工程师。

六. 一个优秀的软件测试人员具备的素质

技能相关

  1. 优秀的测试用例设计能力; 测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优秀测试用例; 那么提高测试用例设计的能力就很重要了, 我们要掌握设计测试用例的方法, 多去积累, 总结, 多去阅读好的测试用例设计案例以进一步提高自己设计测试用例的能力.
  2. 掌握自动化测试技术; 掌握自动化测试技术,可以把你从大量重复的手工劳动中解放出来,这样就可以把更多的精力花在更多类型的测试上.
  3. 探索性思维; 测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验进行系统的错误猜测和逻辑推理,整理和分析出更多针对性的测试关注点, 简单来说就是测试人员的思维不受条条框框束缚,要具有发散性思维,能够结合实际来思考问题.

综合能力

  1. 沟通能力; 测试工程师的沟通能力会直接影响事务开展的效率, 良好清晰的沟通能力是一个技术优秀的测试工程师是否能够获得更好发展的"敲门砖".
  2. 快速学习的能力; 不同业务需求和功能的快速学习与理解能力, 对于测试新技术和新方法的学习能力.
  3. 文字表达能力; 测试用例是用文字写出来的, 你找到的bug, 也是要通过文档来具体描述 BUG 的, 也就是说, 你测试完了之后, 是要总结出一个测试文档的, 里面详细记录了有哪些bug, 这些bug在哪里,什么效果等等…
  4. 开发能力: 掌握一定的开发技术, 这对于测试人员来说是优势.
  5. 抗压能力; 测试工作者,特别是属于互联网行业需要能够抗住各种压力, 比如: 工期进度紧张的话, 测试时间会由5天变成1天…
  6. 责任感; 责任感是任何工作的都需要的, 对于测试工作者而言: 测试往往是产品质量的最后个把关者;由于测试工作成效很难衡量,测试用例执行、bug数目的多少都 无法说明产品的质量是否合格;所以,责任感是最重要的测试必备素质之一; 也就是说, 发现BUG一定要及时改掉, 不能放任推拖.

实战练习, 培养探索性思维:

  • 假设我们现在要测试一个自动售票机的功能

img

imgimg

相关文章:

测试人员的启蒙指南

文章目录 一. 了解测试1. 生活中的测试场景2. 什么是软件测试3. 实战练习 二. 软件测试和软件开发的区别三. 软件测试和软件调试的区别四. 软件测试的发展五. 软件测试的岗位六. 一个优秀的软件测试人员具备的素质 本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是…...

Linux工具:vim常用快捷键

1、拷贝行(一般模式下) 拷贝当前行 将光标移动到指定行,yy 移动到想要粘贴的行,p 即可把拷贝的行粘贴到该行下方 拷贝n行 将光标移动到指定行,比如拷贝5行,5yy 移动到想要粘贴的行,p 即可把拷贝的几行粘贴到该行下方…...

TA-lib第三方库安装问题

因为学习的需要,用到Talib库做写指标分析,但是百度了好久,说是去要某某网站下载对应版本的文件进行本地安装,但是把…404 Not found 然后通过查找,Ta-lib库的安装已经迁移到这里了 https://github.com/TA-Lib/ta-lib-p…...

接口测试的测试要点

接口测试的测试要点,你知道都有哪些吗? 接口测试是软件测试中的重要组成部分,它的目的是评估接口的质量和可靠性,以保证系统的正常运行。在进行接口测试时,必须要考虑到以下几个方面: 测试用例的编写 测试…...

直流电机 PID 控制系统仿真研究(Simulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

第三章 向量与线性方程组

引言 题型总结中推荐例题有蓝皮书的题型较为重要,只有吉米多维奇的题型次之。码字不易,如果这篇文章对您有帮助的话,希望您能点赞、评论、收藏,投币、转发、关注。您的鼓励就是我前进的动力! 知识点思维导图 补充&…...

数组题目总结 -- 花式遍历

目录 一. 反转字符串中的单词思路和代码:I. 博主的做法II. 东哥的做法III. 其他做法1补充知识点: IV. 其他做法2 二. 旋转图像思路和代码:I. 博主的做法II. 东哥的做法 三. 旋转图像(逆时针旋转90)思路和代码&#xff…...

Android 12.0开机过滤部分通知声音(莫名其妙的通知声音)

1.概述 在12.0的开发产品的时候,有时候在开机的时候会有一些通知的声音,但是由于系统模块太多,也搞不清楚到底是哪个模块发出的通知声音,所以就需要从通知的流程来屏蔽这些通知声音 2.开机过滤部分通知声音(莫名其妙的通知声音)核心代码 frameworks/base/core/java/androi…...

LeetCode-0525

102. 二叉树的层序遍历&#xff08;中等&#xff09; 思路&#xff1a;使用hash记录深度 class Solution {public List<List<Integer>> levelOrder(TreeNode root) {if(rootnull)return new ArrayList<>();Map<TreeNode,Integer> deep new HashMap&…...

【Linux 】scp命令

前言 Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的&#xff0c;rcp 是不加密的&#xff0c;scp 是 rcp 的加强版。 scp命令 前言一、示例1. 从本地复制到远程2. 从…...

Docker部署yolov5

目录 环境下载源码构建Docker镜像运行docker镜像运行目标检测出现partially initialized module cv2 has no attribute _registerMatType错误出现ImportError: libSM.so.6: cannot open shared object file: No such file or directory错误出现AttributeError: Upsample object…...

如何在 Axios 中去控制 Loading?大有学问!

目录 前言 按钮loading 局部loading 全局loading 前言 loading 的展示和取消可以说是每个前端对接口的时候都要关心的一个问题。这篇文章将要帮你解决的就是如何结合axios更加简洁的处理loading展示与取消的逻辑。 首先在我们平时处理业务的时候loading一般分为三种&#x…...

充电桩检测设备厂家TK4860C交流充电桩检定装置

TK4860系列是专门针对现有交流充电桩现场检测过程中接线复杂、负载笨重、现场检测效率低等问题而研制的一系列高效检测仪器&#xff0c;旨在更好的开展充电桩的强制检定工作。 充电桩检测设备是一款在交流充电桩充电过程中实时检测充电电量的标准仪器&#xff0c;仪器以新能源…...

一文3000字实现基于Selenium+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…...

Android 12系统源码_窗口管理(二)WindowManager对窗口的管理过程

前言 上一篇我们具体分析了窗口管理者WindowManagerService的启动流程,对于WindowManagerService有了一个初步的认识。在此基础上,我本打算应该进一步分析WindowManagerService是如何管理系统中的各种窗口的,然而由于Android系统的架构设计,在分析WindowManagerService之前…...

python3.8,torch1.10.2+cu113、torch-geometric 安装

【1】conda create -n name python=3.8 【2】安装 torch 注意先看可适应的最高cuda版本 https://data.pyg.org/whl/ 版本对应 【3】按照顺序安装torch-geometric: torch-sparse、torch-scatter、torch-cluster、 torch-spline-conv \torch-geometric pip install torc…...

堆(heap)、栈(stack)

在程序中&#xff0c;栈和堆是两种非常重要的数据结构。它们都用来存储数据&#xff0c;但是它们的定义略有不同。 栈Stack: 栈是一种线性的数据结构&#xff0c;它以 “后进先出”&#xff08;LIFO&#xff09;的方式存储数据。栈中的内存空间在编译时就已经确定&#xff0c;大…...

企业级API网关之典型应用场景

目 录 01 企业面对API与网关的现状‍‍‍‍‍ 02 APIGW介绍及企业应用场景 03 总结 01 企业面对API与网关的现状‍ 在企业中&#xff0c;进行新的系统/应用/产品开发时&#xff0c;具有周密的流程&#xff1a;从需求分析、设计、开发、测试、发布与验收。所以&#xff0c;一…...

【2023年4月美赛加赛】Z题:The future of Olympics 25页完整论文

【2023年4月美赛加赛】Z题&#xff1a;The future of Olympics 25页完整论文 1 题目 背景 国际奥委会(IOC)正面临着夏季奥运会和冬季奥运会申办数量的减少**[1]**。在过去&#xff0c;举办奥运会的竞争非常激烈&#xff0c;声望也很高。然而&#xff0c;最近&#xff0c;主办…...

Rocket重试机制,消息模式,刷盘方式

一、Consumer 批量消费&#xff08;推模式&#xff09; Consumer端先启动 Consumer端后启动. 正常情况下&#xff1a;应该是Consumer需要先启动 consumer.setConsumeMessageBatchMaxSize(10);//每次拉取10条 package quickstart; import java.util.List; import co…...

linux+onenet可视化(图形化步骤)

文章目录 一、ONENET项目搭建1.1 ONENET注册1.2 创建产品与设备1.3 添加数据流 二、可视化配置 OneNET是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接&#xff0c;快速完成产品开发部署&#xff0c;为智能硬件、智能家居产品提供完善的物…...

汇编的基础

原视频 基础篇&#xff1a;1.1编程环境的安装 打开DOSBox 0.74-3 Options.bat调整窗口大小 windowresolution1200x640 outputddrawmount c D:\masm c: debugDEBUG 用Debug的R命令查看、改变CPU寄存器的内容&#xff1a; 用Debug的D命令查看内存中的内容&#xff1a; 用Debu…...

并发编程学习(十四):tomcat线程池

1、Tomcat 功能组件结构 Tomcat 的核心功能有两个&#xff0c;分别是负责接收和反馈外部请求的连接器 Connector&#xff0c;和负责处理请求的容器 Container。 其中连接器和容器相辅相成&#xff0c;一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Servi…...

简洁灵活工单管理系统,支持工单模版字段、工单状态自定义

一、开源项目简介 本项目为FeelDesk工单管理系统的开源版&#xff08;OS&#xff09;&#xff0c;是基于开发者版&#xff08;DEV&#xff09;分离的标准版&#xff1b;支持工单模版字段、工单状态等自定义&#xff0c;可为不同的模版设置不同的路由规则&#xff1b;对工单需求…...

标签派单系统架构设计

需求描述 项目背景 根据员工历史成单情况&#xff0c;计算员工对不同类型工单的转化能力。根据员工和工单标签匹配进行派单。 业务流程图 规则描述 每10分钟&#xff0c;分城进行一次派单&#xff0c;派单规则可能会动态删减&#xff0c;需要支持动态配置 工单标签说明 一…...

Jmeter和Postman那个工具更适合做接口测试?

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…...

k8s污点与容忍

1.前言 污点是给node节点打上污点标签&#xff0c;使得pod不能往该node节点上调度&#xff0c;污点有三种模式&#xff0c;分别是NoSchedule、PreferNoSchedule、NoExecute&#xff0c;容忍是给pod打上和node节点一样的污点标签&#xff0c;使pod能调度到带有该污点标签的node…...

市面上有哪些软件可以结合agentgpt的?众包平台结合的好处!

使用AgentGPT&#xff0c;提升工作效率&#xff01; 随着科技的迅速发展&#xff0c;人工智能已经成为我们生活中不可或缺的一部分。而AgentGPT则是人工智能领域的一款杰出产品&#xff0c;它能够帮助我们提升工作效率&#xff0c;减少重复性劳动&#xff0c;让我们的生活更加便…...

【js】对象属性的拦截和Proxy代理与Reflect映射的用法与区别

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录 对象属性的拦截介绍SetGet 对象的拦截介绍使用对象属性拦截和对象拦截区别练习题 映射…...

Yolov8涨点神器:ODConv+ConvNeXt提升小目标检测能力

1.涨点神器结合,助力YOLO 1.1 ICLR 2022涨点神器——即插即用的动态卷积ODConv 论文:Omni-Dimensional Dynamic Convolution 论文地址:Omni-Dimensional Dynamic Convolution | OpenReview ODConv通过并行策略引入一种多维注意力机制以对卷积核空间的四个维度学习更灵活的…...