测试工程师的工作
目录
1.何为软件测试工程师?
2.软件测试工程师的职责?
3.为什么要做软件测试?
4.软件测试的前途如何?
5.工具和思维谁更重要?
6.测试和开发相差大吗?
7.成为测试工程师的必备条件
8.测试的分类有哪些?
9.提高测试质量的要诀?
10.测试流程是什么?
theme: channing-cyan
测试这份工作确实入门相对来说是比较低的,看起来谁都能做,但是不一定谁都能做好,并且在一些小公司里面,测试往往还会被其他人认为是没有技术含量的工作,但是我想说在大厂里面,测试是跟开发同等级的存在,无论是工资还是声望,相对的大厂里面需要的要求就会高很多。
对于工作不久的同学来说,你会发现其实自己在测试的时候并没有用到很高深的技术啊,为什么在面试的时候会问到很多东西,并且招聘要求这么高,这是一个很现实的现象,公司招人肯定是想招一个能力超出成本的员工,这样既可以完成当前的工作量,还可以在特殊情况下完成新加的任务,而面试时那些额外多问的技能就是用于后者。
相信很多同学会有这样一个心理想法,那就是:测试一下子就测试完了,我现在好闲啊,这样会不会不太好?测试也太没有意思了吧,我学了几年的计算机竟然做这么没有技术含量的工作,那我不是白学了?我觉得我已经测完了,这个软件没有什么可以测试的了,我现在在等开发修改bug,那我现在应该做些什么呢?
1.何为软件测试工程师?
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性(Robustness)、安全性、易操作性等性能,写出相应的测试规范和测试用例的专门工作人员。
2.软件测试工程师的职责?
软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求。
软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。
3.为什么要做软件测试?
1.发现软件缺陷
2.发现功能错误
3.检查是否功能遗漏
4.超出需求部分(画蛇添足)
5.性能不符合要求
6.软件质量高低:是否符合用户习惯、符合用户需求
4.软件测试的前途如何?
说到软件测试的前途,我觉得应该说是软件测试人员的职业规划,请注意我说的是人员,因为这个岗位的前途肯定是有的,就算要陨落也不是在你这一代测试工程师中陨落,因为这是一个新鲜的岗位,是个年轻的岗位,未来需求很大,是一个很重要的岗位。工作没有好坏,能决定未来的只有自己。
5.工具和思维谁更重要?
相对于测试工具,我更加倾向于测试思维。 当然这两者是相辅相成的,双向提升会让你在测试的工作中得到很大的提升,测试的思维贯穿整个测试的职业生涯,从一个0基础的测试工程师进阶到一个中级测试,前一两年的成长基本上都是在测试思维上的提升,这段时间很多人都会很迷茫,觉得自己是一个没有什么技术的人,其实这个成长的期间更多是要寻找自己的定位,落实自己作为一个专业测试工程师的思维方式。
当自己具备了一定的测试思维之后,我们面临的一个挑战就是在测试技术上的关卡,在招聘上面我们往往可以看到基本上的测试工程师都是需要测试工具的使用,而且会使用测试工具比不会使用测试工具的人工资要高,显而易见,在具备了测试思维之后,要进一步的提升自己就要在技术上的加强了,不管是测试工具的使用,还是自动化脚本的编写,这些都可以视为辅助我们去测试一个软件产品的工具,为达目的想尽一切办法去发现软件中的缺陷。
6.测试和开发相差大吗?
简单的一句话概括:测试和开发就像是互补关系。 开发注重的技术的深度,而测试注重的是知识面的广度,开发懂测试,但是在测试方面上没有测试工程师那么专业,因为不具有测试的思维方式;中高级测试工程师很多是具有开发能力的,但是他在开发技术上没有专职开发理解的那么深刻,所以开发的闪光点是技术的深度,测试的闪光点是知识面的广度和测试思维。
7.成为测试工程师的必备条件
首先第一点,作为一个测试工程师,计算机相关专业的知识在工作中起至关重要的作用,这是作为一个测试工程师必备的,其中就包括(计算机网络,操作系统,数据库系统,开发语言以及开发工具等),我们一定要具备这方面的知识,但是工作中不一定都会用上,不同方面的测试需要的技能也就不同,比如功能测试也就是点点点的操作,基本上没有谁不会使用一个软件吧,就是这个道理。
第二点就是测试思维,也是我认为一个人是否能做好这个岗位的标杆,上面一点我说了,计算机相关的知识我们在工作中可能用不到,但是测试思维一定要时刻应用,因为思维决定行为,有一个完整的系统的准确的测试思维,才能把工作做到细致做好,因为测试工作是无穷的,不存在没有bug的程序。
第三点就是需要具备测试技巧,有更多的测试方法,熟悉测试工具,当然就相当于是后续的工作经验积累出来的产物了,需要我们在工作中不断的去整理,去学习,去应用。测试这份工作是探索性的工作,在工作中,真正去执行测试用例执行测试工作的时间是占的比较少的,更多的时间都花在探索上和整理文档上。
第四点就是工作中的一个学习和沟通能力了,找bug是测试的工作,改bug是开发的工作,所以这之间就少不了沟通和交流,在沟通过程中,测试和开发直接需要有一个共通的表达方式去描述这个bug,使得测试人员能清楚的描述bug,并且开发人员也可以准确的知道bug的现象,方便在快速定位问题并且解决问题。既然测试是一个探索性的工作,所以就需要更多的知识和技巧做铺垫,我们在工作中需要带着强烈的求知心去工作,去吸收去学习一切能在工作中帮到自己的知识点,对自己的提升也会起到至关重要的作用。
8.测试的分类有哪些?
说到测试分类,在网上搜一下就出现了很多,有功能测试,性能测试,自动化测试,数据库测试,接口测试,安全测试,还有细致一点的就是app测试,web测试,游戏测试等等等等。我们暂且就分为功能,性能,自动化这三类。
功能测试简单来说就是测试产品能做什么功能,性能测试就是测试产品的功能做的怎么样,自动化就是利用脚本来代替人工去完成一个功能操作的测试(自动化测试一般在测试阶段的后期,当产品达到了一定的稳定性之后,利用自动化脚本进行快速的回归)。
9.提高测试质量的要诀?
另外一个值得注意的方面就是工作效率和质量,或许高级测试工程师与普通测试工程师的主要区别在于高级测试工程师可以更快地发现更多软件中的严重错误。对此,有什么可以借鉴的诀窍吗?请尝试以下方法,保证不会使您失望。
-
首先测试程序的核心功能,然后测试辅助功能。
-
首先测试功能,然后测试性能。
-
首先测试常见情况,然后测试异常情况。
-
首先测试经过变更的部分,然后测试没有变更的部分。
-
首先测试影响大的问题,然后测试影响小的问题。
-
首先测试必须测试的部分,然后测试可选或没有要求测试的部分。
10.测试流程是什么?
测试既然是一个必不可少的岗位,自然就有一套完整的测试流程来支持。那么软件测试的流程是什么呢?什么时候测试工程师才进入测试工作呢?在测试前需要一些什么准备呢?每个流程阶段我们应该做一些什么?
软件测试工程师的整个工作流程:项目立项–>需求分析–>测试分析–>测试计划–>编写测试用例–>执行用例–>bug管理–>测试报告 ,这一整套流程下来,也许看起来你会觉得自己根本就没有参与几个,但是如果你是研发组唯一的测试,又或者你是测试组的大佬,那么这一整套流程下来你必不可少。
项目立项和需求分析 :
这两个基本是同一时间进行,就是产品经理或者是市场经理有一个可以赚钱的好点子,想跟大家讨论一下,这就是一个项目的萌芽阶段(项目立项);然后确定了项目之后,大家一起分析一下功能,需要满足什么样的需求,这个产品的架构是怎样的等等。
说到这里你是不是发现好像这些事就是开发和产品那边的事儿,跟我们测试不搭边呢,其实不是,作为测试,在参加这次会议中,目的就是要知道接下来有一个什么项目需要我来测试,项目的定位是什么,客户群体是哪些,用户环境在什么场景等等一些信息都对我们进行测试有很大的帮助。往往一个专业的测试人员是要完整的介入整个产品的研发和测试阶段。
测试分析:
在这个阶段,就开始考验到了一个专业的测试工程师的一个业务能力了。这个阶段如果分析的好,就能提高用例的覆盖率,尽可能的保障了软件的测试质量。
测试分析和测试用例设计是有一定的区别。
测试计划:
计划的撰写有助于工作的进行,写好一份测试计划,可以让我们在工作中按照一定的流程去完成工作,并且在测试计划中,有比较详细的人员分工,时间安排,环境搭建要求,测试的目的,项目的介绍,这些基本的信息都会出现在测试计划当中。
当然这个环节不是每个测试人员都要去做的,一般出现在组长或者组长以上的人才去完善这份工作,或者组织内有一定的测试架构和项目分支,测试人员和项目版本比较多,项目复杂多样化,那么测试计划就起到了至关重要的一步。
编写测试用例和执行用例:
那么在编写用例的环节,我们从测试分析为出发点,利用等价类,边界值,场景法,因果关系等一些用例设计方法来设计测试用例,并且在用例中表明需要用到哪些测试数据。
在完成了测试用例的编写之后,接下来就是用例的执行了,按照测试用例的一些步骤和预期结果,来执行我们的用例,判断是否通过,未通过的用例就可定义为一个bug。
测试用例看起来就是玩文字游戏,其实它的作用体现在的是一个记录作用,因为如果没有测试用例这个文档,那么我们在测试的时候难免会出现漏测现象,这样就造成的工作的不合格,再则就是用例还可以用来当做一个凭证来证明自己的工作,如果在工作中发生争执了,可以及时的拿出用例来为自己作证。
bug管理:
有了测试的用例,那么就会出现测试的产物,就是bug,作为一个专业的工程师,我们所需要做的无非就是想尽一切的办法去判定开发写的程序,所以我们在找到问题的时候,需要给出的是一个高质量的bug。
什么是高质量bug呢?所谓的高质量的bug,就是必须有一个准确的复现步骤,有一个直观的bug现象,必要的时候可以加上log,加上截图,加上测试数据,甚至有时候出现了特别难以出现但是严重级别高的bug,直接就保留现场,叫上开发过来了解情况。
有了这些东西,开发同志就无力反驳我们抛出的bug了,为什么我们提出bug要这么准确呢,原因就是我们是专业的工程师,产品上线之后,如果市场上没有重大的bug反馈,那么这是我们尽到了责任,但是如果市场有重大的反馈,导致对公司造成了损失,那么就是我们的失职。
我们不仅要提交bug,还要跟踪bug,使bug从产生到关闭有一个较快的闭环,将那些严重的,优先级高的bug及时的催开发修改,一个优秀的团队就是要做到每一个员工尽责。
测试报告:
测试报告书写的目的就是将自己的测试结果通过这份报告让别人可以了解到目前产品的一个状况,所以在测试报告上,我们尽可能描述重点,写一些有价值的东西。因为别人是通过你的这份报告来间接性的了解产品的状态,所以如果你写的太复杂,像流水账一样,给人的感觉并不是细致,而是啰嗦,所以在写完报告之后,我们应该站在一个阅读者的角度去审阅自己的测试报告,看看是否明确是否完美。
以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了
各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~
相关文章:

测试工程师的工作
目录 1.何为软件测试工程师? 2.软件测试工程师的职责? 3.为什么要做软件测试? 4.软件测试的前途如何? 5.工具和思维谁更重要? 6.测试和开发相差大吗? 7.成为测试工程师的必备条件 8.测试的分类有哪…...

压力测试与测试工具jmeter的介绍
目录 一、性能指标 二、jmeter (一)JMeter 安装 (二)JMeter 压测示例 1、添加线程组 2、添加 HTTP 请求 3、添加监听器 4、启动压测&查看分析结果 (三)JMeter Address Already in use 错误解决 压力测…...

解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE)
解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE)结论分析 解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE) 解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE) ,java 二进制 最小值 减法 减1 结论 …...

【openpcdet】dbinfo内的信息
这就是kitti_dbinfos_train_sfd_seguv.pkl中【car】类别存储的信息。...

clickhouse查询缓存
为了实现最佳性能,数据库需要优化其内部数据存储和处理管道的每一步。但是数据库执行的最好的工作是根本没有完成的工作!缓存是一种特别流行的技术,它通过存储早期计算的结果或远程数据来避免不必要的工作,而访问这些数据的成本往…...
vue中使用Base64加密、解密以及des加密、解密
Base64加密、解密 第一步: npm install js-base64 --save 下载依赖 第二步: 直接引入即可 import { Base64 } from js-base64; 第三步: Base64.encode(xxxx) 其中 .encode() 加密 .decode() 解密 中间不需要使用加密的key等…...

关于丢失安卓秘钥的撞sha-1值的办法
实验得知,安卓sha-1和keytool生成秘钥签名文件的时间有关。 前提条件是,开发者必须知道生成秘钥的所有细节参数 以下是撞文件代码(重复生成) import time import osidx 0while True:cmdkeytool -keyalg RSA -genkeypair -alia…...

maven如何打包你会吗?
1.新建一个maven项目,在main/java中建立Main类 public class Main {public static void main(String[] args) {System.out.println("hello java ...");} } 2.添加依赖,使其成为可执行包 <build><plugins><!--打包成为可执行包-…...
idea 控制台 打印 Tomcat日志Tomcat Catalina Log控制台乱码问题
修改tomcat的日志配置文件 conf一>logging.properties 修改【1catalina.org.apache.juli.AsyncFileHandler.encoding】的值为gbk 1catalina.org.apache.juli.AsyncFileHandler.level FINE 1catalina.org.apache.juli.AsyncFileHandler.directory ${catalina.base}/logs 1…...

python我的世界
我的世界不知道大家有没有玩过,今天博主用python的Ursina库复刻了我的世界给大家分享 安装Ursina pip install ursina 导入Ursina from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController 创建app app Ursina() 创建Voxe…...

SpringBoot+vue 大文件分片下载
学习链接 SpringBootvue文件上传&下载&预览&大文件分片上传&文件上传进度 Blob & File & FileReader & ArrayBuffer VueSpringBoot实现文件的分片下载 video标签学习 & xgplayer视频播放器分段播放mp4(Range请求交互过程可以参…...

scanf函数读取数据 清空缓冲区
scanf函数读取数据&清空缓冲区 scanf 从输入缓冲区读取数据数据的接收数据存入缓冲区scanf 中%d读取数据scanf中%c读取数据 清空输入缓冲区例子用getchar()吸收回车练习 scanf 从输入缓冲区读取数据 首先,要清楚的是,scanf在读取数据的时候ÿ…...
js 文件常用转换
获取上传文件的arrayBuffer:var u8arr await file.arrayBuffer() 通过arrayBuffer转换成Buffer:Buffer.from(u8arr) 1. Blob、File → Base64 function fileToDataURL(file) {let reader new FileReader();reader.readAsDataURL(file);reader.onload…...

基于Open3D的点云处理15-特征点
Intrinsic shape signatures (ISS) 参考 ISS关键点: 基本原理是避免在沿主要方向表现出类似分布的点上检测关键点,在这些点上无法建立可重复的规范参考框架,因此后续描述阶段很难变得有效。在剩余点中,显着性由最小特征值的大小决定,以便仅包…...
算法刷题Day 58 每日温度+下一个更大元素I
Day 58 单调栈 739. 每日温度 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {vector<int> rst(temperatures.size());vector<int> decsStk; // 单调递减栈for (int i 0; i < temperatures.size(); i)…...

认识 spring AOP (面向切面编程) - springboot
前言 本篇介绍什么是spring AOP, AOP的优点,使用场景,spring AOP的组成,简单实现AOP 并 了解它的通知;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1. 什么是s…...
将css文件中的px转化为rem
pxToRem.js /*** 使用方式:* 与引入的文件放在同一目录下进行引用配置,执行:node (定义的文件)*/ const fs require(fs) const path require(path) /*** entry:入口文件路径 type:Strng* pxtopx:以倍数转…...

JNI之Java实现远程打印
打印机是最常见的办公设备了。一般情况下如果需要实现打印,可通过前端print.js包来完成。但是,如果要实现智能办公打印,就可以使用JNI技术、封装接口、远程调用实现完成。 导包 jacob:Java COM Bridge <dependency><g…...

YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解
前言:Hello大家好,我是小哥谈。YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法,存在着很多可以学习…...
免费的scrum敏捷开发管理工具
Scrum中非常强调公开、透明、直接有效的沟通,这也是“可视化的管理工具”在敏捷开发中如此重要的原因之一。通过“可视化的管理工具”让所有人直观的看到需求,故事,任务之间的流转状态,可以使团队成员更加快速适应敏捷开发流程。 …...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

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

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...