开发人员与测试人员关系的理解
在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试。在这里我仅针对于有专业的测试和专业的开发的项目。
每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的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࿰…...
计算机网络之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. 代…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
