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

开发人员与测试人员关系的理解

 在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试。在这里我仅针对于有专业的测试和专业的开发的项目。

  每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真。但如果根据测试测出来的bug数来评判测试的绩效,就假设测试为了自己的绩效瞎测怎么预防?

  单纯地根据bug数来评判开发和测试的绩效,我认为显然不合适。这会导致开发写代码时小心翼翼没问题,但测试就可能会不可避免的测一些莫名其妙的bug,bug多了测试的绩效高了,同时开发的绩效不就低了么?当然实际当中显然也不会根据这一个维度来评判绩效。

  很多时候开发和测试的关系仅是零和博弈。

  开发和测试存在目的是什么?开发是为了实现客户的需求,测试是为了保证软件的质量。两者应该是合作共赢的关系,不是零和博弈,不是此消彼长,不是你胜我败。开发和测试实际上是很矛盾的,两者既对立又统一。

  毫无疑问开发和测试应该是对立的,如果因为开发过多干涉测试的工作,那这个工作根本无法开展,软件质量根本无法保障,测试岗位的设立毫无意义。两者不存在上下级关系,开发应不惧怕测试测出来的bug,同时测试应“多”测出bug,这个“多”并不是数量上的多,而是质量上的多。开发的代码有质量之说,我想说的是bug的质量也是一个测试水平的体现。开发不能把测试当做大爷一样来对待,测试更不能把自己摆在大爷的位置。

  开发和测试的关系同样也是统一的。我认为测试的职责或者测试的成就感不是来自于测出bug,而是能协助开发找出问题并且定位问题。这里的协助并无主次的关系,对于出现bug地方的代码实现测试也许不懂,开发也许也懒得听测试的意见,这个时候并不是测试要和开发一起去寻找代码实现上的问题,而是和开发一起梳理功能的逻辑有无问题,测试以测试的经验和专业技能协助开发。两者统一关系的体现在这个软件是共同的结晶,并不是开发一方的成果,目的都是为了软件能更快更好的发布。

  我想在计算机类的专业里,开发和测试两个方向就类似高中时期的理科和文科。很大部分在高中数学不行或者成绩不行就选择文科认为简单,计算机类的专业里稍微有点“志气”的学生也会选择做开发而不会选择做测试,测试的标签就是简单 ,当然这个现象和类比也许并不准确。

  测试人员在测试的时候应有一定的专业素养,测试不能毫无逻辑,毫无规划的一通乱测,这有个好听的名字——探索性测试。举个例子:

  测试:“出问题啦!某某某快来看啊!”

  开发:“怎么操作的?”

  测试:“我就点了哪儿就出现这个了啊。”

  开发:“那等等,我看下后台日志,你再操作一下。”

  测试:“怎么不能复现了啊,刚刚我就是这么点的啊。”

  开发:“……”

  这个场景常见,如果这个bug本身就是偶现的bug那还说得过去。如果问测试怎么操作的,测试一脸懵逼的说:“我不知道,我忘了。但是你这个有问题就是bug。”这得多花多少开发的时间去排查这个问题啊,不是不让你测,是让你有套路有思路的测,这是对于测试自身素养问题。

  同样对于开发人员也是一样的,自测是一个很好的习惯,抛开开发的代码能力,这是对于开发人员最基本的素养。举个例子:

  开发内心:“终于做完这个功能了,不测了,反正有测试,让他们去测,测出问题再改。”

  很大部分的bug是因为开发自身没有做好自测,单元测试并不是在每个公司每个项目每个模块都有,甚至很多开发人员几年工作经验也不知道怎么编写单元测试。认为自己的工作就是写代码,检验功能是否完善是否有bug的工作应该交给测试去做。

  对于开发和测试素养的问题我想这是在理想状态下,或者只存在理论上。实际上开发测试鱼龙混杂、参差不齐、滥竽充数都有可能。但对于开发和测试关系万万不可将开发和测试放在对立面,同样应考虑他们是统一的,矛与盾缺一不可,合作共赢而不是零和博弈。如何维系两者的关系也是一个很值得研究的问题。

对于测试怎么学习,我的建议是

 ​学习建议

1、一般来说,测试新人的话首先需要把基础打好,测试理论基础可以通过看一些经典书籍或网上也有很多免费的资源,选择前两本基础的看,你会受益匪浅。

2、刚开始不太建议加入过多技术群或其他论坛提问,初期遇到问题可以自己搜索自己尝试解决,当然需要控制一个止损点,不要为一个问题耗费太长时间

3、自学基础的同时一定要做好笔记,且一定是通过自己的理解后做的。可以使用思维导图把前后学到的东西给关联起来

4、读完一本书或一个阶段结束后,可以自测一下,通过找一些经典的笔试题或一些istqb中的题目,来巩固或查漏补缺,有针对性的再次巩固学过的东西

5、接下来可以找一些项目来做或去众测平台看一些基本的项目测试流程,包括基本测试文档的书写规范等等,testin众测平台是一个锻炼的不错平台,至少测试用例设计、执行及bug探索提交缺陷都是挺好的。

6、目前有好多平台会开设一些免费的公开课,通过技术讨论组可以接收消息推送,设定好时间听一些专业领域的测试方法,可以快速了解到大体的流程。(一定要经过严格筛选,选择质量高的,否则会浪费一大部分时间):

第一阶段 测试基础

测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。 最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。 毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。 那测试基础有哪些内容呢?

测试的定义、测试的分类、测试的方法、测试的生命周期。 测试计划、测试方案、测试策略、测试用例的编写。 BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。 测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。 PDCA、5W2H等分析管理的方法 质量管理体系CMMI(了解) 嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。

第二阶段 常见的测试工具

测试工具永远是软件测试人员的得力助手,不能完全依赖工具,但也不能没有工具,在学习软件过程中,要著中软件测试工具的使用,下图覆盖初、中级软件测试工程师所需具备的测试工具,要想学好,下手学习吧。

混在软件测试职业圈,工具千千万,不可能每个都会用,至少要知道有哪些工具可用,什么时候该用什么工具,每个工具能解决什么问题,然后再深入应用几款工具即可,下面就带大家总结一下。

测试管理工具

禅道:简单好用,市场主流,互联网行业居多 Jira:简单好用 QC/ALM:复杂,收费,电信/金融行业使用较多 bugzilla:功能简单 svn:代码和文档管理工具 git:但是多分支管理比svn好

接口测试工具

Jmeter(开源) postman SoapUI 推荐使用 jmeter 和 postman。

性能测试工具

loadrunner:大而全,要学精通还是有点难度,重量级工具,过去和现在都是行业老大 jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用 Locust:基于python的一个性能测试工具

白盒测试工具

junit/testng:java下的单元测试框架 unittest/pytest:python下的单元测试框架 cppunit:跨平台的c++单元测试框架 PhpUnit:Php语言下的单元测试框架 TestBed:一个重量级的白盒测试软件,可以进行单元测试、集成测试、静态测试,军工行业常用 Klockword:静态测试工具,军工行业常用

持续集成工具

Jenkins:比较常见的一种CI工具 Hudson

网络测试工具

以HTTP/HTTPs协议为主,网络测试工具有: wireshark fiddler charles


app自动化工具

appium:这个应该算是目前最流行的基于app的自动化测试框架了 uiautomator:安卓自动化测试框架,基本上支持安卓的所有事件操作 Monkey:安卓自带的测试工具 Monkey Runner:Monkey改进版,支持自己编写脚本测试,用Python语言 Robotium:一款国外的Android自动化测试框架,用法比较

web安全测试工具

appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来 fiddler:网络抓包工具 burpsuite:暴力破解、抓包工具 skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。

第三阶段 代码学习

好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。 接下来,你要考虑你的发展方向了 是成为一个自动化测试工程师呢? 还是性能测试工程师呢? 还是安全测试工程师呢? 啊!这个问题好难!我也不知道该怎么选。 反正我啥都会一点,哪个岗位都能去面一面。 关于方向的选择,看我的这篇文章

嗯,相信你心中已经有了答案了,那我们继续往下面说。 这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。 还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了! 所以现在各位可以去学习编程语言了, 不过不用像开发那样,学的那么深入。 比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。 总之前期你两者二选一的学习就OK了。 啥?你问我学的啥。 我当然是两种都会啊 哈哈哈哈哈哈哈,惊不惊喜!意不意外!

自动化方向

等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。

各种单端测试框架:unittest(python)、pytest(python)、JUnit(java) WEB自动化测试框架:selenium(适用于java\python\javascript) APP自动化测试框架:appium(适用于java\python\javascript) 以上的内容,根据你学的语言进行选择。 appiunm和selenium根据你参与的项目进行选择。 不过无所谓了,反正迟早都要学会的。 这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。 而且凭你那时候的水平,你都能轻松的看懂。

性能方向

​对loadrunner和jmeter的掌握更加的深入。 可以手写脚本、脱离录制。 学会了多线程编程、能够手写java或者python、不用工具直接实现压测。 学习linux,毕竟性能总是和服务器打交道的。 学习系统架构的相关知识、方便你更容易的分析系统瓶颈。 说实话、性能方向的提示更难、因为需要掌握的东西太多了。 性能测试做深入了,基本上就是架构师的水平了。 可能你现在看着这个性能方向的学习一脸懵逼。 没关系、等你把上面的编程语言学会了你就不懵逼了。

安全方向

渗透测试 SQL注入 暴力破解 脱库 等等 其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。 推荐知道创宇的学习体系。 我估计你看到这里就更懵逼了。 没关系、等你把基础的东西学会就知道我在说啥了。 毕竟你现在还是一个小白嘛。 不要去纠结这种小事。

各位在这个阶段,正常情况都应该是中级测试工程师的水平了。

第四阶段 架构学习

前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。 怎么去测试更全面。 怎么才能更好的保障项目的质量。 我认为,在这个阶段,应该回头重新学习一遍测试基础。 因为这个阶段的提高是思想、方法的提高了。 上面讲的都是教你应该怎么做。 在这个阶段你要自己去发现、为什么要那样做。 跨过了这个阶段就基本上可以成为专家了。 学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。 自动化测试框架、性能测试框架等等。 已经有了属于自己的一套东西了。 在群里或者论坛上去装逼、别人都会尊称你一声大佬了。 可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。 总之,到了这个阶段就没什么学习路线了。

小结

  上述都是一些个人体会,文笔有限写的有点零碎,但是内容都是真实感受的,如果能对一部分人有所启发那就再好不过。目前自己还是一直在思考未来,自己可以做什么,还是期望未来可以多赚钱^_^,过更好的生活。。

2023最新Jmeter接口测试和接口自动化测试从入门到精通,全套项目实战!!!

相关文章:

开发人员与测试人员关系的理解

在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试。在这里我仅针对于有专业的测试和专业的开发的项目。 每个公司应该都有考核机制&am…...

直面原理:5 张图彻底了解 Android TextToSpeech 机制

ChatGPT 如此火爆,但它的强悍在于 NLU(自然语言理解)、DM(对话管理)和 NLG (自然语言生成)这三块,而 Recognition 识别和 TTS 播报这两块是缺失的。假使你的 App 接入了 ChatGPT&…...

Ruby Socket 编程

Ruby提供了两个级别访问网络的服务,在底层你可以访问操作系统,它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持。 Ruby 统一支持应用程序的网络协议,如FTP、HTTP等。 不管是高层的还是底层的。ruby提供了一些基本类&a…...

Vue3+ElementPlus+koa2实现本地图片的上传

一、示例图二、实现过程利用Koa2书写提交图片的后台接口这个模块是我写的项目中的其中一个板块——上传图片,这个项目的后台接口主要是是使用了后端的Koa2框架,前端小伙伴想要试着自己书写一些增删改查的接口可以从这个入手,Koa2用来了解后端…...

常见漏洞之 Fastjson

数据来源 01 Fastjson相关介绍 》Fastjson概述 》Fastjson历史漏洞 02 Fastson的识别与漏洞发现 》Fastjson寻找 》Fastjson漏洞发现(利用 dnslog) 03 修复建议 建议1:使用fastjson1.2.83版本; Github地址:https:…...

绕过Nginx Host限制

目录绕过Nginx Host限制SNI第三种方法:总结绕过Nginx Host限制 SNI SNI(Server Name Indication)是 TLS 的扩展,这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称。 作用:用来解决一个服务器拥有…...

Visual Studio 2022 常用快捷键,记录一下别忘记~

Visual Studio 2022 常用快捷键,记录一下别忘记~ CtrlEC 注释代码 CtrlEU 取消注释代码 CtrlED 格式化全部代码 CtrlShiftA 新建类 CtrlRG 删除无效Using CtrlH 批量替换 CtrlG 跳转到指定行 CtrlEE 在交互窗口中运行选中代码(很实用) AltEnter 快速引用 …...

软件测试回顾---重点知识

软件测试重点知识回顾 8.1.1软件测试的目的是 尽可能的发现程序中的错误并不是发现所有的错误并不是证明程序是错误的也不是为了调试程序8.1.2白盒测试根据什么设置测试用例?黑盒测试根据什么设置测试用例? 白盒测试根据内部逻辑来设计的黑盒测试根据的是…...

2D图像处理:2D Shape_Base_Matching_缩放_旋转_ICP_显示ROI

文章目录 调试结果参考调试说明问题0:并行运行问题问题1:模板+Mask大小问题问题2:组合缩放和旋转问题3:可以直接将计算边缘的代码删除问题4:如何在原始图像上显示匹配到的ROI问题5:计算的原始旋转角度不需要判断,直接可以在ICP中使用问题6:绘制坐标轴问题7:绘制ROI调试…...

HTTP、HTTPS

目录 1.HTTP 1.1.概述 1.2.报文结构 1.2.1.请求报文 1.2.2.响应报文 1.3.方法 2.HTTPS 1.HTTP 1.1.概述 HTTP,超文本传输协议,WEB体系选用了该协议作为应用层协议。 1.2.报文结构 1.2.1.请求报文 HTTP的请求报文(request&#xff0…...

计算机网络之http03:HTTPS RSA握手解析

不同的秘钥交换算法,握手过程可能略有差别 上文对HTTPS四次握手的学习 SSL/TLS Secure Sockets Layer/Transport Layer Security 协议握手过程 四次通信:请求服务端公钥 2次 秘钥协商 2次 (1)ClientHello请求 客户端向服务端发送client…...

一款针对EF Core轻量级分表分库、读写分离的开源项目

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 在项目开发中,如果数据量比较大,比如日志记录,我们往往会采用分表分库的方案;为了提升性能,把数据库查询与更新操作分开,这时候就要采用读写…...

Linux环境变量讲解

目录 环境变量 alias命令 type命令 变量分类 Linux最主要的全局环境变量 环境变量 变量是计算机系统用于保存可变数值的数据类型 在Linux中,一般变量都是大写,命令是小写 在Linux中,变量直接使用,不需要定义(更快…...

iptables和nftables的使用

文章目录前言iptable简介iptable命令使用iptables的四表五链nftables简介nftables命令的时候nftables与iptables的区别iptables-legacy和iptables-nft实例将指定protocol:ip:port的流量转发到本地指定端口前言 本文展示了,iptables和nftable命令的使用。 # 实验环…...

中小学信息学相关编程比赛清单及报名网站汇总(C++类)

1、NOI系列比赛(CSP-J CSP-S NOIP NOI APIO CTSC IOI ISIJ等) NOI官网 NOI全国青少年信息学奥林匹克竞赛https://www.noi.cn/ 2、蓝桥杯青少年创意编程大赛 https://www.lanqiaoqingshao.cn/home 3、中国电子协会考评中心...

06Makefile

Makefile 1、Makefile简介 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂…...

【C++】模板初阶

🍅讨厌废话,直接上车 ☃️1.泛型编程 void Swap(int& left, int& right) { int temp left; left right; right temp; } void Swap(double& left, double& right) { double temp left; left right; right temp; } void Swap(char&…...

vue+nodejs考研资料分享系统vscode - Visual Studio Code

前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正常。 Express 框架于Node运行环境的Web框架, 目 …...

LeetCode_单周赛_332

6354. 找出数组的串联值 题意 将数组首尾元素接在一起,就是串联值。 串联之后删除,如果只剩下一个元素,加上这个元素即可 双指针,从首和尾向中间移动即可 code **注意:**用 long 没看题目用了 int wa了一发 clas…...

[LeetCode周赛复盘] 第 332 场周赛20230212

[LeetCode周赛复盘] 第 332 场周赛20230212 一、本周周赛总结二、 [Easy] 6354. 找出数组的串联值1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6355. 统计公平数对的数目1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6356. 子字符串异或查询1. 题目描述2. 思路分析3. 代…...

C++轻量级RPC库RpcCore

C轻量级的RPC库,可用于任何项目中,甚至单片机。 方便平台直接相互进行功能调用。 基于asio的实现 asio_net 也可用在esp32适用于ESP32/ESP8266的实现 esp_rpc 目前也有一些轻量的库,参考了protobuf(或者依赖它)&…...

Mysql的视图

视图的特点: 1.视图可以看做一个虚拟的表,本身是不存储数据的。 视图的本质可以看作是存储起来的select语句 2.视图中涉及到的表都统称为基表 3.针对视图多DML操作,会影响到对应基表中的数据。反之亦然 4.视图本身的删除,不会…...

2/12考试总结

时间安排 8:30–8:50 读题,T1 不知道是个啥,T2是个dp ,T3可能也是 dp 之类的。 8:50–9:30 T1,读了好几遍才理解了题意,对于部分分有爆搜。考虑正解,想到预处理后O(1) 查询,问题是如何由已知的信息得到所有…...

第三章虚拟机的克隆,快照,迁移删除

1.虚拟机的克隆 如果你已经安装了一台linux操作系统,你还想再更多的,没有必要再重新安装,你只需要克 隆就可以,看演示。 方式1,直接拷贝一份安装好的虚拟机文件,再用虚拟机打开这个文件方式2,使用vmware的…...

华为OD机试 - 任务总执行时长(Python)| 真题含思路

任务总执行时长 题目 任务编排服务负责对任务进行组合调度。 参与编排的任务又两种类型, 其中一种执行时长为taskA, 另一种执行时长为taskB。 任务一旦开始执行不能被打断,且任务可连续执行。 服务每次可以编排 num 个任务。 请编写一个方法,生成每次编排后的任务所有可…...

LeetCode 热题 C++ 114. 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…...

Spring的事务控制-基于AOP的声明式事务控制

Spring的事务控制-基于AOP的声明式事务控制 Spring事务编程概述 事务是开发中必不可少的东西,使用JDBC开发时,我们使用connection对事务进行控制,使用MyBatis时,我们使用SqlSession对事务进行控制,缺点就是&#xff…...

SSO(单点登陆)

Single Sign On 一处登陆、处处可用 0、前置概念: 1)、单点登录业务介绍 早期单一服务器,用户认证。 缺点:单点性能压力,无法扩展 分布式, SSO(single sign on)模式 解决 : 用户身份信息独…...

线程和QObjects

QObject的可重入性: QThread继承了QObject,它发出信号以指示线程开始或完成执行,并提供一些插槽。 QObjects可以在多个线程中使用发出调用其他线程中槽的信号,并将事件发布到在其他线程中“活动”的对象。这是可能的&#xff0…...

最新中文版FL Studio21水果软件下载安装图文教程

FL Studio是目前流行广泛使用人数最多音乐编曲制作软件,这款软件相信广大网友并不陌生,今天带来的是FL中文版本,所有的功能都能在线编辑,用户直接就能操作,同时因为是21水果是最新版,所以增加了新的功能&am…...

wordpress怎么使用阿里图标/怎样做关键词排名优化

当“大数据”铺天盖地般向我们涌来,人们往往期冀能够对大数据能够有更进一步的了解,“数据挖掘”因此成为我们理解大数据概念绕不过去的“坎”。通过将大数据与数据挖掘进行对比分析,将有助于人们了解大数据的来龙去脉和未来真实走向。 数据…...

西安网站网站建设/营销策略的概念

今天,我们列出了10个jQuery灯箱插件,以使您的媒体在网站上优雅地显示而无需加载新窗口,图像和视频可以加载在叠加在当前页面上的弹出式窗口中。 宏伟的响应式弹出灯箱 1. piroBox 这是pirobox的高级版本,我比以前的版本实现了更…...

学校网站建设厂家/活动策划方案

中国红十字总会救灾专用帐号热线四川震灾专题报道四川震灾滚动新闻转载于:https://blog.51cto.com/imysql/308633...

中国建设银行网站首页怎么销户/推广普通话手抄报

由于华为受到美国的压制,华为在欧洲市场的手机出货量持续下滑,这让业界担忧中国手机在欧洲市场可能因此遭遇挫折,不过现实却并没有如此悲观,小米、OPPO正迅速填补华为的空缺,它们已分别位居欧洲智能手机市场第四名、第…...

百度 手机网站 友好性/链接网

我已经使用下面的代码使用Sqlite创建数据库。我已将自动增量设置为一列。当我尝试向表中插入值时,它会给出错误。db.execSQL("CREATE TABLE IF NOT EXISTS " SAMPLE_TABLE_NAME " (user_id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR,age…...

射阳做企业网站多少钱/seo网站推广工具

rap2的接口数据可以全部导入postman; 在collections集合里面点击run; 转载于:https://www.cnblogs.com/Chamberlain/p/10619433.html...