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

软件测试工程师要摆正自己的心态和位置

软件测试过程是我们在需求规格说明书的指导下完成对程序的验证,以发现程序错误为职责,以提高软件质量目的,并对其是否能满足设计要求进行评估的过程。换句话说,软件测试是一种实际结果与预期结果之间的比较过程。

所以,归根结底,软件测试是对软件的一个验证过程,测试工程师都是验证者而不是开发者。

这时候很多人就会有一个微妙的心理:一切开发说了算,毕竟是开发写出来的。

当新人发现了一个问题,再三确认之后会找测试组长确认,有时候组长也忙,就说:去找对应的开发吧,于是心怀忐忑甚至低三下四的去找开发说发现了一个bug,需要它去确认,开发到自己位置上重现了一次之后,说:这个问题不是bug,这时候新人就茫然了:我该怎么办?
在这里插入图片描述
要我说,还能怎么办?提bug!一切跟需求相悖的逻辑问题统统提bug!

为什么?

1. 测试要明确自己担当的角色

测试工程师的职责就是站在用户的角度去使用这款产品/软件系统,任何与用户认知不一致的地方都要进行质疑。我们测试的目的不仅仅是为了证明软件能够正确运行,还有更重要的一点就是证明软件在破坏性输入的情况下也能正确运行。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进,就是我们常说的:软件做了其应该做的,而没有做其不应该做的。

我在某公司做测试的时候有个项目,开发是个印度人,他做了一件让我从业n年以来颠覆我三观的事情:他写的代码只处理了正常输入的逻辑,没有任何非正常输入的逻辑,直接导致两个需求测出了2000多个bug。问其原因,曰:我也不清楚异常输入有哪些,我只能等你们测试测出了bug再把那些验证的逻辑加上去。。。我满脸写着崇拜:你是怎么混到现在的?

所以,不要开发说什么就是什么,开发并非全知全能,很多时候也需要测试的帮助来增强他们代码的健壮度。

2. 测试要站在用户的角度去思考问题

我们做系统最终目的是为了服务用户,好的测试人员,要懂得时刻从用户的角度出发,了解用户。所以,作为软件测试人员,学会揣摩用户的心理,多去思考用户潜意识遵守的规则行为,表达自己对产品的感受,就显得至关重要了。

市面上有很多app,应用商店里也有高分低分,打开评论就知道它们为什么是那个分数。拿某程的app来说,为什么很多人宁愿在网页端用也不下载app,因为那个app实在是反人类,用户根本不想用。

所以测试工程师应该从引导用户操作、使用功能,预测用户的使用感受等方面去猜测用户的心理和行为。不过,猜测用户心理和行为并不是一件简单的事情,毕竟子非鱼焉知鱼之所想。对于一个刚刚入行的新人来说,做到准确的猜测用户行为的确是非常的困难的,那需要有丰富的经验和积累。

3. 测试与开发并行,不存在高低贵贱

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

开发比较清楚软件的架构,可以事先判断出bug容易出现的地方,对出现的问题会很快定位;而测试作为软件的使用者,可以很快地反馈出自己对于软件使用的感受,让开发了解测试,帮助开发更清楚用户的要求,对软件如何被使用有了深刻的认识。好的测试,应该更多和开发交朋友,一起努力,把工作做好。

不过需要注意的是,测试主要是提出bug,但不能主动提出改进软件过程的具体改进措施,更不要直接干涉开发的工作方式,以免出力不讨好,影响今后的愉快合作。

记住,软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作。

最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

在这里插入图片描述

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

自学推荐B站视频:

零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

在这里插入图片描述

相关文章:

  • Vue的双向绑定及应用
  • 编程的基础知识
  • Vue介绍和入门,包括配置等
  • 编程猫创作工具:新版Kitten新体验
  • SpringBean面试题
  • Linux installation of Davinci Adaptive IDE
  • 基于SSM的住院病人监测预警信息管理系统毕业设计源码021054
  • 字节一面:说说TCP的三次握手
  • 数据中台不是万能钥匙,企业需求才是数据中台建设的根本
  • Hadoop 集群时间同步设置
  • yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  • Android——Activity和Fragment的通信方式
  • 【校招VIP】前端项目开发之正则表达
  • Vite创建Vue2项目中,封装svg-icon组件并使用——插件之vite-plugin-svg-icons和fast-glob
  • 洛谷题单 Part2.1 模拟
  • 2017-08-04 前端日报
  • Android框架之Volley
  • Angularjs之国际化
  • canvas 五子棋游戏
  • CSS 三角实现
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • extjs4学习之配置
  • Java编程基础24——递归练习
  • JS+CSS实现数字滚动
  • JS变量作用域
  • js如何打印object对象
  • JS题目及答案整理
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SpringBoot几种定时任务的实现方式
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 嵌入式文件系统
  • 事件委托的小应用
  • 我的zsh配置, 2019最新方案
  • 详解移动APP与web APP的区别
  • hi-nginx-1.3.4编译安装
  • mysql面试题分组并合并列
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 第二十章:异步和文件I/O.(二十三)
  • ​queue --- 一个同步的队列类​
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #Ubuntu(修改root信息)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.each()与$(selector).each()
  • (30)数组元素和与数字和的绝对差
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (九)One-Wire总线-DS18B20
  • (四)鸿鹄云架构一服务注册中心
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET 反射 Reflect
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调