软件测试前途如何?要学吗?

news2024/10/5 21:24:25

1.前言

当我们面临择业问题的时候,因为我们本身对自己认知的不清晰和对现有自己能选择的岗位的不了解,往往不知道如何选择才是最优解。这个博客就专门来解答大家对于软件测试这个岗位的疑惑,让大家对软件测试这个岗位有更广义的了解。

本博客主要的解读下面这几个问题:

  1. 1.什么是软件测试
  2. 2.软件测试的发展史
  3. 3.软件测试和研发的区别
  4. 4.软件测试岗位分类
  5. 5.软件测试在公司的定位
  6. 6.优秀的测试人员需要具备的素质

2. 什么是软件测试

最容易理解是:软件测试就是找BUG,发现缺陷;程序员找不到BUG的我找!程序员做不对的,我帮你兜底!一句话,程序员你放手干!有我测试怕个啥?

现实生活中在很多情况下我们都在默默进行测试:

新买来一部手机,我们会试试相机的性能、屏幕显示是否完好、声音是否清晰等,就算是“测试”。

一场考试, 做完一遍题目之后, 进行一遍检查, 就是在 “测试”。

买一台电视, 安装好之后打开试试看能不能正常使用, 也是在 “测试”。

软件测试就是验证软件产品特性是否满足用户的需求

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

1983年,Bill Hetzel将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了其预期的效果。

从这话我们可以看出以下两点:

测试试图验证软件是“工作的”,也就是验证软件功能执行的正确性

测试的活动是以测试人员“预期的结果”为依据,这里的“预期结果”指的是需求定义。

3.软件测试的发展

1.软件调试为主,发生在20世界50年代。

2.1957年Charles Baker对调试和测试进行了区分。

这是软件测试史上一个重要的里程碑,标志已经有独立的软件测试了。

3.1979年,《软件测试的艺术》中给出了软件测试的定义:测试是为发现错误而执行程序的过

程;它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。

4.1983年,美国国家标准局(National Bureau of Standards)发布了VV&T,VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation);这些意味着软件测试正作为一门独立的,专业的,具有影响力的工程学发展起来了。

5.预防为主是当下软件测试的主流思想之一软件测试已经贯穿到了整个软件开发的生命周期当中了

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

4.1 难易程度

开发广度小,专业度高。测试广度大,专业度低。

如何理解上面这句话呢?就是专业知识在某个方面必须突出,并且在这个方面还必须了解的有深度;测试专业知识需要知道的多,理解的要多,但是对于知识掌握的深度不需太深。

4.2 工作环境

基本相同,软件测试工程师和软件开发工程师都在一起工作,并没有歧视关系!!!不但没有歧视关系,反而可以说是相辅相成的!相互成就对方。

4.3 薪水问题

对于中小企业总体来说软件测试工程师比软件开发工程师低,在自动化等专业测试领域和研发基本无差距;但在大厂中研发测试基本无差别。

4.4 发展前景

自动化测试、安全测试等领域发展前景和研发基本一致,只要有软件开发就需要做测试,只是有的公司可能会让程序员一人担任两个角色,既负责开发,又负责测试。

4.5 技能要求

软件测试工程师要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分

析和理解,编程能力等。

5.软件测试岗位分类

软件测试岗位又很多,我们就先看看最常见的又哪些吧~~~

软件测试工程师:工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等。

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

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

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

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

6.软件测试在公司的定位

6.1 无组织性

最简单的软件测试组织形式就是没有任何组织的测试,几个人就把所有软件测试工作做完,这样做没有任何分工、没有任何层次结构。

简单的软件测试组织带来的问题是:软件测试依附在软件开发的组织下,不能真正发挥软件测试的优势。

一两个人的软件测试缺乏交流和思维的碰撞,导致测试人员的进步非常有限。缺乏测试的组织,导致测试无计划进行,测试人员疲于应付各项突如其来的测试任务,测试经验也得不到很好的总结。

6.2 专职与兼职

按照测试人员的职责明确程度,可以划分成兼职测试和专职测试两大类。

目前在很多软件企业,尤其是小规模的软件企业,往往没有专职的测试人员。在做测试工作的同时还要兼顾软件幵发、配置管理、技术文档编写、用户教育、系统部署实施等工作。

即使是在一些比较大规模的软件企业,拥有专门的质量部门,也会有兼职的情况,最常见的兼职工作是测试+配置管理,或者测试+QA。这种方式的好处是节省成本,可以充分利用资源。但是这样测试人员缺乏专门的独立的发展空间,不利于测试的纵深方向的发展,很难把测试做得精细,也不利于测试经验的积累和测试知识的传播。

目前软件企业的现状,很多企业还是使用这种方式。对于新入行的测试人员来说,可以认为这是对自己很好的锻炼机会。

测试本身的要求就是知识面要广,而这些工作有助于从不同层面、不同角度、不同角色的位置考虑软件的相关问题。

6.3 项目性与职能性

按测试人员参与项目的形式来划分,可分成项目型和职能型。

项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密协作,一般是从头到尾跟着项目走。当然,也有些项目是到了中后期才考虑把测试人员加入到项目中。

项目型结构图:

这种类型的测试组织一般不会有测试组长,测试的管理由项目的主管或项目经理负责。当然,在一些大的项目中,会划分出幵发组长、也会划分出测试组长,但是最终报告的对象都是项目经理。因此项目经理是负责测试资源调配和测试计划的主要人员。

职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。

职能性结构图:

在这种结构中,一个测试人员有可能不仅仅测试一个项目的产品,可能会同时测试多个项目的产品。测试人员也可能不是长期稳定地从头到尾参与一个项目。

测试人员不向项目主管或项目经理报告工作,而是向自己所在的部门经理报告工作。并且这种结构的项目经理也可能是虚拟的,或者由多个部门经理共同担当。

这两种方式各有利弊。项目型的好处是测试人员参与的力度很强,能深入了解项目方方面面的信息,有利于稳定持续有效地测试出更多细节问题;但是同时也有弊端,测试人员受项目负责人的管理,在对待Bug的处理意见上往往受到约束,同时由于过于亲密,很可能出现“网开一面”,不能严格要求的惜况。并且由于缺乏独立的组织,测试人员的知识可能局限在项目组内传播,不利于测试经验在不同项目组之间的传播。某些测试人员在这种组织中可能会感到孤独和无助。

职能型的好处是能避免项目型的部分问题,并且能节省部分测试资源,充分利用各个项目阶段之间的时间差来合理利用测试资源;但是也不可避免地存在一些问题。例如,深入程度不够,尤其是对项目涉及的领域知识和业务知识理解可能不够深入,导致测试的问题比较表面。

6.3 综合性

尽管独立的测试部门会有一些不可避免的问题,例如参与项目的深入程度,容易导致“扔过墙”的测试。

但是很多软件企业还是倾向于建立一个相对独立的软件测试组织。一个理想的软件测试组织可以是综合和兼容了几种结构方式的组织。

例如,可以将项目型结构和职能型结构组合并加以改造。测试部门是独立的部门,测试部门经理根据各项目组中项目经理的请求,结合公司对项目的投入和重点方向,决定委派哪些测试人员加入到项目组,并且长期稳定、持续地跟进项目,在项目的各个阶段都参与并做测试的相关工作内容。测试人员作为一种服务资源供项目组调用,测试的结果和报告作为评估软件产品质量的必要参考信息,为项目经理做出产品发布的决定提供参考价值。

综合性结构图:

7.优秀软件测试人员需要具备的素质

7.1 综合能力

沟通能力

测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力是一个技术优秀的测试工程师获得更好发展的"敲门砖"!

快速学习的能力

对不同业务需求和功能的快速学习与理解能力。 对于测试新技术和新方法的学习能力。

开发能力

我们在测试的时候,首先要能知道项目为啥这样写;因此,需要具备一定的开发能力

文字能力

当我们对项目做好测试后,需要将测出来的BUG使用书面语表达出来,便于开发人员阅读观看。

7.2 掌握自动化测试技术

掌握自动化测试技术,可以把你从大量重复性的手工劳动中解放出来,这样可以把更多的精力花在更多类型的测试上。

7.3 优秀的测试用例设计能力

测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优秀测试用例。

如何提高测试用例设计的能力?

这个就没有捷径就少了,需要我们多做测试,经历多了就知道要开啥测试用例了;还是总结了三条掌握技巧如下:

1、掌握设计测试用例的方法

2、积累,总结

3、阅读好的测试用例设计案例

7.4 探索性思维

探索性思维是指,测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验、知识、直觉,进行系统的错误猜测和逻辑推理,整理和分析出更多有针对性的的测试关注点。

7.5 兴趣!!!

有责任感和一定的压力,

责任感是任何工作的都需要的,对于测试工作者而言:

测试往往是产品质量的最后一个把关者;由于测试工作成效很难衡量,测试用例执行、BUG数目的多少都无法说明产品的质量是否合格;所以,责任感是最重要的测试必备素质之一。

压力对于测试工作者也是有必要的,特别是属于互联网行业需要能够抗住各种压力。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

观察者模式(下):如何实现一个异步非阻塞的EventBus框架?

上一节课中,我们学习了观察者模式的原理、实现、应用场景,重点介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。 同步阻塞是最经典的实现方式,主要是为了…

C++之std::is_same用法(一百五十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Flink HA方案介绍

1.Flink HA方案介绍 每个Flink集群只有单个JobManager,存在单点失败的情况。Flink有YARN、Standalone和Local三种模式,其中YARN和Standalone是集群模式,Local是指单机模式。但Flink对于YARN模式和Standalone模式提供HA机制,使集群…

【历史上的今天】7 月 12 日:世界上第一台商用数字计算机;Python 之父卸任 BDFL;Wacom 成立

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 7 月 12 日,在 1854 年的今天,伊士曼柯达公司的创始人、胶卷的发明者乔治伊斯曼(George Eastman )出生&#xf…

NC55 最长公共前缀

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** param strs string字符串一维数组* return string字符串*/public String longestCommonPrefix (String[] strs) {int n s…

类和对象(—)

今天,我带来类和对象的基础篇。 目录 面向对象和面向过程类类的概念类的定义类的访问限定符c中struct和class的区别封装类的作用域类的实例化类的存储结构体内存对齐规则【面试题】this指针this指针的概念this指针的特性 【面试题】 面向对象和面向过程 C语言是面向…

[PyTorch][chapter 44][时间序列表示方法3]

简介: word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。由于 word2vec 的作者 Tomas Mikolov 其主要知识点 目录: word2vec 基本思想 Skip-gram cbow Hierarchical sof…

MedNeXt的一些问题集锦

归纳偏差是一种关于机器学习算法的目标函数的假设,也就是目标函数评分的标准。 归纳偏差是指模型更容易学习到训练数据中的局部和表面特征,而较难捕捉全局和抽象特征。 scalable 可扩展的 network-wide优势??? 深度监…

(论文精读)PRUNING FILTER IN FILTER《滤波器中的剪枝滤波器》

论文地址:原文 代码实现 中文翻译 一、精读论文 论文题目 PRUNING FILTER IN FILTER 论文作者 Fanxu Meng 孟繁续 刊物名称 NeurIPS 2020 出版日期 2020 摘要 剪枝已成为现代神经网络压缩和加速的一种非常有效的技术。现有的剪枝方法可分为两大类:滤波器…

MVC三层架构

1.MVC三层架构 MVC(Model-View-Controller)是一种常见的软件设计模式,用于组织和管理应用程序的代码和逻辑。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器&#…

营销同质化,博鱼 sports牵手那不勒斯打开新大门

体育营销是企业进入新市场的经典方式,特别是对当今寻求高质量发展的国产品牌而言,从产品出海升级为品牌出海,体育营销可谓是一条必经之路。海信、OPPO、华为等中国品牌通过持续的体育营销不断拉近自身与海外消费者的距离,成功在海…

反常积分定义

目录 反常积分的定义 判断敛散性的方法 方法2: 例题 无界函数的反常积分 判断敛散性的方法 例题 反常积分的定义 该极限存在就表示该反常积分收敛 对于定义3,只有两个都收敛的情况下,原反常积分才收敛。 判断敛散性的方法 始终大的函数形成…

走进USB的U1模式

综述: PCIE有PM和ASPM两种功耗管理模式,USB只有一种 USB有U1/U2/U3三种低功耗模式 本文只针对U1进行分析 如下图所示,为主要状态变换 背景知识 U1是一种低功耗模式,定义的是link的状态不是设备的状态发送LGO_X进入低功耗模式&a…

C++图形开发(12):随机方块的速度和高度

文章目录 1.随机高度2.随机速度3.整段代码4.总结 1.随机高度 那既然是随机,自然少不了随机函数rand()咯~ 详见:C爱好者的自我修养(17):rand()随机函数 那么随机速度就可以是: rect_height rand() % int(height / 4)…

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pulseaudio 是什么?二、部署步骤1.下载PulseAudio2.前提条件3.开始配置1.配置pulseaudio2.配置麦克风权限3.配置WSL2外放4.配置WSL2麦克风 总结…

hbase之引入Phoenix

Phoenix简介 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce; 2&#xf…

RocketMQ5.0消息存储<四>_刷盘机制

RocketMQ5.0消息存储<四>_刷盘机制 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer),消息存储时首先将消息追加到文件内存映射(commit操作),再根据配置的刷盘策略在不同时间进行刷写到磁盘(flush操作)。同步刷盘,消息提交到文件内…

计算机实习学习总结报告10篇

计算机实习学习总结报告篇1 一、实习单位: 来到实习单位后主要是在门市从事产品的销售和商家间渠道工作。在工作的过程中了解计算机相关行业的发展现状及趋势;熟悉计算机硬件组装、计算机系统及软件安装、局域网搭建;掌握典型计算机网络工程的安装与维护;了解网站…

Linux之Shell进阶(变量和条件判定语句)

文章目录 变量变量的含义变量的定义与使用(重点)只读变量接收用户输入删除变量 条件判断语句 变量 变量的含义 什么是量? 量就是数据. 什么是变量? 数据可以发生改变就是变量。 在一个脚本周期内,其值可以发生改变的量就是变…

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员,脚本发现故障告警,自动调用发送详细告警内容,这点儿东西得会。 效果图如下: 普通发送方式 import requestsdef dingding_info(…