00后从事软件测试一年的心路历程

news2025/2/1 6:56:28

初识软件测试

不知不觉,我做软件测试已经快一年了,入职第一天的场景仿佛还在昨天。入职前,我对测试的认识仅仅停留在一些软件测试和测试方法的理论知识上,最多也是对自己的代码进行一些单元测试。

我之前所理解的测试是与开发分开,测试人员只需要“鼠标点点点”,根据需求寻找bug,不需要写代码、看代码。然而,通过项目实践,我对测试工作有了真正的认识和见解,认识到测试前置的重要性,依据W测试模型,在需求和设计阶段就介入测试,尽早发现缺陷,如需求文档、设计可行性,也需要提前编写接口用例,例如在测试交易链路时,提前设计用例以覆盖链路的每个分支。除此之外,还需要深入代码的设计逻辑才能更好地测试。

项目实践与成长

入职第一周,安装测试常用软件和平台,做好测试前的预备工作:

  • Xmind:思维导图软件,用于编写测试用例。
  • SwitchHosts:hosts管理利器,用于管理、快速切换Hosts小工具。
  • Fidder:抓包工具,将手机的网络设置手动代理,连接电脑端的IP与端口,可以抓取手机访问的URL以及一些参数。注意,要抓取http请求时需要安装Fiddler证书,下载方式“http://电脑IP:端口”。Fidder与SwitchHosts一般配合使用。
  • Git、SourceTree:在gitlab上下载分支,使用SourceTree切换分支。
  • IDEA、Maven:使用IDEA配置Maven,导入gitlab上的项目。
  • Xshell:访问远端的服务器,主要进行一些日志的查看,学会日志查看的相关命令,如tail、grep等。
  • TestNG:用于单元测试,学会常用注解。例如,@Test、@BeforeTest、@AfterTest、@DataProvider。
  • TAPD平台:敏捷项目管理平台,用于创建需求、项目跟进、提交bug等。
  • 环境管理平台:用于申请环境、管理机器、管理服务调用关系。
  • Beetle平台:转转测试部主导研发的CI/CD分支管理平台,集成了code review、code diff、增量代码覆盖率等功能。

实践项目:我主要参与了清结算业务线配置、pop售后维修、退款等项目的测试工作。项目的流程主要分为这几个阶段:

1、熟悉需求:根据PM所出的需求文档提前了解本期项目的背景、需求点。

2、需求评审:主要是PM讲述需求,作为测试人员,要积极参与其中,对一些模糊点或疑问点及时提出并解决,如果开发后再解决成本高。

3、设计评审:主要是技术评审,RD会对自己的库表、开发思路讲解,测试人员需要从中评估是否符合项目的功能性与非功能需求,并评估需求的可测性,提前思考和规划后续的测试方案。

4、用例设计:从需求中提炼出测试点,使用xmind编写用例,设计的用例要注意几点:

  • 页面:是否与原型相符、非法数据前端是否校验、文案内容。
  • 流程:业务流转是否正常。
  • 数据:非法数据是否校验、传参是否正确,数据展示处理,数据库中记录、值是否正确。

做好测试前置工作——编写接口测试用例,接口测试在接口开发完成后就可介入,不需要关注接口的内部实现逻辑,只需构造入参、校验出参。首先需要引入pom依赖查看接口,测试过程要做到几点:

  • 构造数据:初始化测试数据,例如我们要测试申请售后的接口

首先需要构造交易完成的订单数据,其次需要构造申请售后需要的参数,如该接口需要一个Map,把数据通过<key, value>封装到map中即可,注意key值与RD开发时使用的key对应,避免解析后的不一致,value即为构造的数据。

  • 调接口:输入接口参数,调用接口,测试接口能否成功调通。使用原子层Atomic调用接口,传入构造的map参数。
  • 断言:获取接口返回的结果,判断response数据是否符合预期,注意异常数据的测试。

在做白盒测试时,要深入代码逻辑,使测试用例做到语句覆盖、判定覆盖、条件覆盖,提高测试的覆盖率,例如,对于多分支代码,用例需要考虑每个分支的情况,将所有if...else分支覆盖到,对于判定条件中有“||”或者“&&”的代码,设计的用例要覆盖每个条件。

除此之外,在设计用例时还需要使用等价类划分法、边界值法等方法,比如对于钱款相关的测试,边界值是必不可少的。

5、用例评审:“一千个人就有一千个哈姆雷特”,每个人对同一个需求的理解不同,关注点不同,总会存在一些遗漏点,因此需要其他人员评审用例是否存在遗漏,以保证测试用例的覆盖率,并对用例设计过程中存在的疑问点再次与PM确认。

6、开发自测&冒烟:根据测试人员提供的冒烟用例进行自测,自测完成后项目提测,并发送提测邮件,测试人员正式介入测试。

7、 测试阶段:测试环境分为动态测试机和稳定机两类,动态环境用来部署本次有改动的服务,稳定环境保持一套与线上一致全量服务并定时同步。测试工作主要是在动态环境上进行,需要在动态测试环境验证和沙箱环境验证。

(1)测试环境:环境平台上的一套多人共享、按需求隔离的环境,连接线下数据库,用于部署web/rpc服务。在测试环境中,首先验证冒烟用例是否通过,然后验证其他用例。在验证过程中,使用TAPD平台提交bug,对bug的复现描述要清晰,提交bug注意以下几点要素:

  • bug标题:言简意赅,说明是什么bug
  • bug内容:bug出现的环境、重现步骤、预期结果、实际结果、截图标明bug位置、错误日志截图、logId
  • bug严重程度:致命、严重、一般、提示
  • bug 优先级:高、中、低
  • bug处理人:定位bug的修复人

在测试过程中要注意在Beetle上查看代码的覆盖率,以防用例未完全覆盖修改的部分,用例全部测试完并通过后,才能进入沙箱环境验证。

(2)沙箱环境:一套预上线环境,连接线上数据库。沙箱验证时要谨慎,不能对线上用户造成影响。沙箱验证完成后,即可进入上线阶段。

8、上线阶段:在上线前要求RD梳理一下上线流程以及回滚方法。上线完成后,进行线上测试。

9、项目复盘:回顾项目的各个阶段,对过程中存在的问题进行总结、分析,吸取经验教训,避免出现重复错误。

实践中的成长:

  • 首个测试任务“清结算业务线配置”中,我主要是对web页面进行测试,本次测试中,我熟悉了清结算业务,学会使用Fiddler抓包,以定位错误问题是前端还是后端,能够使用Xshell查看一些错误日志,然而,在测试过程中,我忽略了一些前端校验和样式问题,明白了对于页面来说,肉眼可见的不适均可能为bug。
  • 在“pop售后维修”的测试任务中,我熟悉了售后维修的流程,学会在IDEA编写接口用例、查看离线任务。然而,在测试过程中,我忽略了客服仲裁后操作的链路是否正常,理所当然的认为只要出现过的操作都是对的,归根结底,我认为是缺少对RD设计逻辑的研究,不了解其状态机配置的链路,测试过程中没有将每个订单流程走到终态。针对这一问题,首先需要提前了解RD的设计逻辑,明确状态机的链路、链路的分支,在测试各链路的分支时,一定要从起始状态走到终止状态,从而保证整个流程的正确性
  • “pop售后退款”项目是对维修项目的一个升级,与之不同的是,退款涉及钱款交易。我的测试内容是客服仲裁与退款验证,积累了一些经验后,我这次能够更熟练进行测试了,编写接口用例后,不用自己点点点了,一来验证了流程的跳转,二来直接进入到自己的测试点,可以只关注仲裁结果和退款结果了。但是,对没有接触过的测试点,缺少测试前置规划,没有提前深入了解,导致测试过程中的时间浪费

改进点:

  • 熟悉自己的业务,将自己融入产品的角色中,脑袋里要形成每个需求点的操作流程、结果,在测试过程中,更要身临其境,身临用户的情景,验证人机交互是否流畅,是否是用户最期望的结果;提高自己的测试效率;为自己规划,每日总结一下测试遇到的坑,“不积跬步,无以至千里”,要想成为一名优秀的测试工程师,必须拥有丰富的测试经验,在每次测试过程中提高自己的怀疑精神和洞察力。

团队氛围

工作的第一天,我就感受到了团队的生机与活力,感受到了大家对工作充满着热情。完全没有电视中的那种勾心斗角,在这个年轻的团队中,同事之间的交流无代沟,互帮互助,小组里的每位同事都为我这个测试小白解答了不少问题,很有耐心。工作之余,大家也很懂得劳逸结合,成功教会我打桌上足球。

总之,感觉大家都是快乐地在工作,这种充满人情味的团队真的很吸引我。

新人预备知识及能力

作为前辈,给新人们一点小小的建议。首先,你需要一些“硬件”知识,我第一周所安装的工具,你也可以提前体验一下。还有,我们QA也是技术人员哦,可以学习一下Java编程、SQL的常用语句、计算机网络等等技术知识。

如果你想学习测试相关知识,建议学习一些软件测试理论,黑盒测试方法、白盒测试方法,自己学会编写测试用例,然后了解一下单元测试、TestNG、接口测试、自动化测试、性能测试等等。如果你想提升自己的测试能力,平时多留意身边的bug,提升发现问题的能力,再多找些QQ群加入,你会有意想不到的收获。

未来规划

在业务测试方面,熟悉自己负责的业务、与自己相关的业务、公司其它业务,学会看RD的代码,了解开发的过程,以便更好地测试;在测试方法方面:我需要了解并学习团队现有的测试方法,并不断探索新的测试方法;在技术方面,多看一些技术型文章,了解测试技术的发展趋势,学习一些新的技术和测试方法。

技术上的一点帮助

最后分享自己整理的【备战资源库】,基本涵盖了软件测试的全部核心技术点:测试理论,Linux 基础,MySQL 基础,Web 测试,接口测试,App 测试,管理工具,Selenium 相关,性能测试,计算机网络,组成原理,数据结构与算法,逻辑题,人力资源,技术脑图等等…质量非常高!!!应对技术面试绰绰有余!【点击文末小卡片免费领取】

一、软件测试基础

了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维

在这里插入图片描述

二、Linux必备知识

Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。

在这里插入图片描述

三、Shell脚本

掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数

在这里插入图片描述

四、互联网程序原理

自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理

在这里插入图片描述

五、MySQL数据库

软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。

在这里插入图片描述

六、抓包工具

Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的

在这里插入图片描述

七、接口测试工具

接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman

在这里插入图片描述

八、Web自动化测试Java&Python

了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理

在这里插入图片描述

九、接口与移动端自动化

专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用

在这里插入图片描述

十、敏捷测试&TestOps构建

揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心

在这里插入图片描述

十一、性能测试&安全测试

软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!

在这里插入图片描述

合理的利用每一分每一秒的时间学习来提升自己,不要再用"没有时间“的理由来掩饰自己思想上的懒惰!趁着年轻,使劲拼,给未来的自己一个交代!

我这里也给要去面试的朋友准备了一份《软件测试面试宝典》希望能够帮助到你!

整份文档一共有200多页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习!希望大家都能够有些收获!

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

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

相关文章

Django-可重用注册登录系统--项目搭建

文章目录 一、项目开始前的思考二、搭建项目环境三、设计数据库模型数据库模型文件设置数据库后端注册app生成迁移脚本并写入数据库测试是否成功数据库模型后台管理 路由与视图函数框架搭建路由配置视图函数的配置模板template的配置测试是否成功 前端界面设计与优化完善登录的…

【C/C++】函数参数默认值

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

VPN(Virtual privacte network)浅谈

文章目录 VPN概念VPN类型站点-站点VPN客户端-站点VPN VPN的工作原理VPN职责职责一&#xff1a;保密完整性认证PSK算法实现&#xff08;献给大佬&#xff09;PSK应用演示RSA算法实现&#xff08;献给大佬&#xff09;RSA应用演示&#xff1a;实现签名 VPN两大框架VPN的误解VPN合…

Java调用Pytorch实现以图搜图(附源码)

Java调用Pytorch实现以图搜图 设计技术栈&#xff1a; 1、ElasticSearch环境&#xff1b; 2、Python运行环境&#xff08;如果事先没有pytorch模型时&#xff0c;可以用python脚本创建模型&#xff09;&#xff1b; 1、运行效果 2、创建模型&#xff08;有则可以跳过&#xf…

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用 1 YOLO-V1的简述 1.1 目标检测概述 ​ 目标检测有非常广泛的应用&#xff0c; 例如&#xff1a;在安防监控、手机支付中的人脸检测&#xff1b;在智慧交通&#xff0c;自动驾驶中的车辆检测&#xff1b;在智…

TCP与UDP的可靠性传输

目录 一、TCP可靠性传输1、重传机制1.1、超时重传1.2、快速重传1.3、SACK1.4、Duplicate SACK 2、滑动窗口3、流量控制3.1 滑动窗口与流量控制3.2窗口关闭 4、拥塞控制4.1拥塞窗口4.2 慢启动4.3 拥塞避免4.4 拥塞发生4.5 快速恢复 二、UDP可靠性传输1、主要策略2、重传机制2.1 …

软件测试03:软件工程和软件生命周期

软件测试03&#xff1a;软件工程和软件生命周期 软件危机 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求&#xff0c;从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程 基本软件危机对于计算机发展的阻碍&#xff0c;1968年&#xff0…

史上最详细的安装Kali-linux教程(附视频教程)

之前不少人问kali怎么安装&#xff0c;今天就发一篇利用VM虚拟机安装kali的详细教程&#xff0c;每一步都截图了&#xff0c;让大家尽可能的清楚每一步的操作。 1.2 使用 VM 虚拟机安装 Kali 1.2.1 官方下载 Kali Linux 官方网址&#xff1a;http://www.Kali.org 下载方式分…

跨域 —— 反向代理配置

跨域问题在讲Node.js学习中编写接口的时候就已经讲到了&#xff0c;由后端配置解决跨域问题&#xff0c;使用cors中间件解决跨域问题以及使用JSONP解决跨域&#xff08;仅支持GET请求&#xff09;&#xff0c;具体可以看一下这篇文章的内容&#xff1a;十二、Express接口编写 —…

python面向对象操作3(速通版)

目录 一、多态和类名 1.标准多态 2.实例属性和实例方法 3.类对象和类属性 4.对象保存 二、方法 1.类方法 3.四种方法的区别 三、模块 1.导入模块 2.自动模块导入 3.模块导入的几种形式 3.1模块导入的两种方式和别名 3.2 from 模块 import 成员 4.两种方法的区别…

【运筹优化】最短路算法之A星算法 + Java代码实现

文章目录 一、A星算法简介二、A星算法思想三、A星算法 java代码四、测试 一、A星算法简介 A*算法是一种静态路网中求解最短路径最有效的直接搜索方法&#xff0c;也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近&#xff0c;最终搜索速度越快。 二、A星算…

day52_Spring

今日内容 零、 复习昨日 一、Spring 零、 复习昨日 一、引言 以前 public class HelleServlet extends HttpServlet{UserService service new UsrServiceImpl();void doGet(){service.findUser();} }public interface UserService{User findUser(); } public class UserServ…

Tigase-Server 8.3.0在windows11下安装

一、JDK安装&#xff1a; tigase-server要求JDK 17,请先下载JDK17, 下载地址&#xff1a;https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 配置环境变量&#xff1a;JAVA_HOME{JDK安装目录} 二、数据库安装&#xff1a;tigase-server8.3在windows下…

【算法系列 | 4】深入解析排序算法之——归并排序

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 决定开一个算法专栏&#xff0c;希望能帮助大…

Chrome内核插件开发报错:Unchecked runtime.lastError:的原因及解决办法。

本篇文章主要讲解,chrome内核插件开发时报错:Unchecked runtime.lastError: Extensions using event pages or Service Workers must pass an id parameter to chrome.contextMenus.create 的原因及解决办法。 日期:2023年6月10日 作者:任聪聪 报错现象: 查看报错路径,在…

项目经理必备!这四个高效管理工具帮你实现项目管理目标

在项目管理中&#xff0c;图形工具可以帮助我们让项目信息可视化&#xff0c;让项目管理更加高效&#xff0c;对于项目经理而言&#xff0c;这些工具都是好帮手。让我们一起看看&#xff0c;项目经理常用的管理工具都有那些吧~ 1&#xff0c;甘特图 甘特图是计划和管理项目的好…

【Spring使用注解更简单的实现Bean对象的存取】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、前言&#xff1a; 二、储存Bean对象和使…

天黑的时候如果下雨了,会比平常更亮一些

目录 一、最近的感受 二、自我的审视 三、如何变得强大 1.保持善良 2.不过度追求公平 3.在痛苦中找到自己的意义 4.令人振奋的生命力 四、情绪调节中的个人见解及如何处理情绪后的学习 1.运动 2.散步 3.找好朋友倾诉 五、总结 一、最近的感受 天黑的时候如果下雨了…

设计模式(十一):结构型之组合模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…