一步一步从功能测试到测试开发,我这一路的坎坷谁能懂?

news2024/11/27 2:36:12

读者提问:

测试开发工程师到底是测试,还是开发 ?

鱼鱼回答:

既是测试,也是开发。

首先,测试开发是测试工程师,他们是服务于业务测试同学的,目标是解决业务测试工程师的具体问题。这就要求他们必须具备测试思维。

其次,测试开发也是开发工程师,他们会针对业务测试同学的具体诉求设计研发对应的小工具,或者研发定制化的一套测试平台。这就要求他们同时具备编程能力。

测试开发工程师,通常是指具备开发能力的测试人员。

近年来,随着DevOps和敏捷过程越来越广泛地被采用,软件测试、特别是自动化测试得到了迅速的发展。DevOps希望建立一个快速、频繁、可靠的一体化交付过程;敏捷则要求对交付件质量进行持续、及时、全面的反馈。软件测试作为研发过程中的重要环节,其能否达到快速响应、有效度量,实现过程自动化、系统一体化的目标,对整个组织的研发效率和产品质量将产生深远的影响。

这几年,Scrum和XP(极限编程)等敏捷开发过程愈发流行,Shift-Left Testing(测试左移)和TDD(测试驱动开发)得到了越来越多的重视。抛开通常以开发人员为主导的UTDD(单元测试驱动开发)这里不做赘述,ATDD(验收测试驱动开发)需要测试人员在需求分析和系统设计方面有着更多的参与和见解,这样才能够设计出高可用的用例场景,以驱动需求进一步明确、设计更加周全,从而推进相关干系人做到对需求统一理解,做好同行评审,并保障后续开发工作的顺利进行。

随着企业软件系统越来越复杂,很多公司选择了微服务的架构和前后端分离的技术,带来了更多的自动化、性能、接口和安全性等方面的测试需要。加上DevOps、持续集成和部署相关平台的应用,容器和虚拟机云服务的引入,这些测试有关的平台、工具和环境的开发、维护,无不需要更多的技能。我们预见,自动化测试作为质量度量活动中的重要一环,未来将具备以下几个趋势,这将带来自动化测试人员从简单的工具使用者到平台开发者的一个重大转变。

过程一体化

  • 使用统一的平台完成测试设计、脚本开发和调试、执行调度、统计分析、报告展示等活动;
  • 同其他DevOps、CI/CD工具实现无缝对接,作为整个研发系统的一个有机组成部分而发挥效用。

资产集中化

  • 将测试脚本、测试数据,AI测试的语音、说法和图片等资产进行集中化管理,在组织层面实现共享;
  • 将测试设备硬件接入云端,实现集中管理、远程访问;采用虚拟化技术构建不同类型、版本的操作系统和浏览器,并做到按需启动和销毁,在组织层面实现共享。

测试服务化

  • 提供方便的测试管理页面或接口,含测试人员外的任何人、在任何时候,可方便地发起指定范围和环境上的一次测试;
  • 测试完成后,及时生成、分发测试结果和分析报告,完成度量和评估,为后续工作安排和决策提供依据。

著名咨询公司凯捷与Micro Focus在2020年末联合发布了全球质量报告2020-21。来自32个国家、10个行业的1750名QA/测试经理、首席信息官和其他IT高管参与了有关软件测试发展趋势的调查,总结出测试领域的主要趋势,内容包括:QA团队正逐步转型为质量协调者;自动化测试比重不断上升;测试环境和数据管理不断完善;AI技术在测试中的作用持续上升。这些趋势为软件测试从业者指明了方向,也提出了更高的技能要求。

这是测试工程师最好的时代,因为以手工测试为主的重复劳动已成为过去,测试从业者的能力和待遇不再亚于开发人员;这是测试工程师最坏的时代,很多大厂已经将劳动密集性的重复测试工作外包给了第三方,转而只雇佣相对少量具备更强专业能力的高端人才。

为适应软件测试的发展趋势,帮助大家提高测试方面的综合技能,我们即将推出测试开发有关的专题。内容包括以下3个方面,欢迎大家一起探讨和多提宝贵建议。

  • 测试人员开发技能:编程语言、计算机系统、网络和数据库等;
  • 软件测试高级技术:自动化、性能、接口测试工具使用和开发;
  • 软件研发工具链: DevOps、CI/CD持续集成和部署等工具链。

最后,我们翻译一份来自微软,这个市值重回世界第一的软件公司的一份用人需求,供正在朝着测试开发方向努力的朋友参考。

Responsibilities 职责:

Design, develop and implement automated tools and test infrastructure for validating Exchange features and interfaces; 设计、开发和实现自动化测试工具和平台,用于验证Exchange邮件服务的功能特性和接口。

Participate in ongoing product specification and code reviews; 参与产品需求规约和代码的评审;

Translate customer requirements and product goals into appropriate tests; 根据客户需求和产品目标,设计充分、有效的测试用例;

Overall 60-80% of your time will be developing code in C++ (moving toward C#). 工作中6到8成的时间,将使用C++语言进行开发编程(未来有可能切换到C#)。

我相信,有很多测试人员会不断问自己,自己到底要不要坚持做测试,测试的职业发展到底怎么样?如果你还在迷茫,在到处找各种大牛问类似的问题,我希望这篇文章,你看完能够结束你的这个烦恼,给你更多的指明方向,当然也有更多的压力。

     所以,现在开始聊聊,如何提高技术能力这个话题。大致的意思就是,从软件测试入门,学习各种技术,然后到达一个比较好的职位和薪资水平。这是一个很长的,很痛苦的过程。有很多人,没开始就放弃,有很多人,开始了一点,就死在沙滩上,不想改变自己。有的人前进了一大步,初步达到了他想要的结果和目标。下面,我给出一个学习成长路线,也许不适合你,但是希望对你有帮助。

       上面只是描述了一种测试职业道路发展规划,偏重代码技术方面。测试领域有,服务器端测试,客户端测试,安全测试,性能测试,接口测试,自动化测试,渗透测试,测试开发。所以,如果你达到了测试开发的水平,其他方面测试,对你来说也不会太难。

       软件测试理论知识,这个必备,当然,有些基本概念我都不清楚,所以,有时间,我也得去学习,复习下软件测试理论。这部分包括,软件测试基础理论和方法。例如软件生命周期,测试用例编写方法,软件测试原则。软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等等。 

       语言基础,这部分,你可以选择Java或者Python入门。或者其他编程语言,这部分,在我博客都有入门教程。看你适合Python还是Java,我个人推荐先Python入门,然后再去学习Java。初学诶,认真学习一个月足够,第二门语言,一个礼拜就可以入门。基本上很多思想和语法是相通的。

       手工转自动,这是一个痛苦过程,有些人天天看语言基础,不知道如何练习,天天入不了门。这里推荐,在你学习了一个语言之后,你一定要找一个事情去练习,熟悉这个语言的基本使用。推荐,结合Selenium学习Web自动化测试。通过脚本编写,有助于你提高语言基础知识的理解和运用。在练习自动化脚本过程中,你得到快乐,会帮你提升学习兴趣。

       自动化脚本开发,这个是在手工转自动过程之后,你需要大量的练习,如果Selenium自动化脚本开发,你起码要完成100个自动化测试用例,你需要对seleinum达到熟练使用的地步。快速写出自动化测试用例。

       了解和接触框架,这里提到框架,是只自动化测试框架,不是指开发用到的框架。继续深入研究Selenium和一些自动化测试框架的知识。例如,什么是框架,框架解决什么问题,框架组成组件有哪些。这部分包括,单元测试框架,Java中Junit或者testNG,Python中unittest.

        设计简单测试框架,这个在我博客也有,例如Python+Selenium从零开始到设计自动化测试框架。先学会设计一个POM设计思想的框架。

       常见设计框架设计,前面我们有了POM设计框架的思想,接下来我们要学习数据驱动框架,关键字驱动关键,混合测试框架,还有行为测试驱动框架。

        Linux和数据库,不用说,自动化测试到一定深度,也需要用代码连接数据库去进行测试,linux和shell脚本,基本上测试环境也会接触到。如果要做自动化部署和运维,常见的linux和shell脚本是有必要学习的。这部分,请看linux和shell脚本入门系列。

       版本控制和持续集成,有些人在公司接触了版本控制软件,例如SVN和git,随意选择一个你公司在使用的版本管理软件,去学习它,要学会基本的操作,工作中常见的,用得到的需要掌握。持续集成,这个一个很火的话题,看到持续集成就要想起Jenkins,需要安装和简单配置Jenkins,如何在上面挂一个job等等,这部分,接下来我会写系列文章。

       Web前端,放在这里,是为后面的web开发学习做准备的,前面的自动化测试,我们接触了一点点前端的知识,这部分已经有了javascript入门教程写,接下来会写HTML和XHTML和XML和CSS等入门教程。

写一些小程序,假如你是选择Python,你可以试试爬虫。Java其实也是可以写爬虫。

        完全掌握一门编程语言,这个可以放在和写一些小程序一起去学习和实践。如果你选Python,你可以学习Django框架进行开发一个web或者一个博客。如果是Java,你需要学会web开发入门,尝试去了解Java三大web框架,优先学习SSH框架。后面的阶段,我就不介绍了,我也不会,也是我的一个学习目标。

       虽然市场上,很多测试开发工程师,没有这里提到的各种水平,但是他们有一个特点,开发,代码基础特别扎实,甚至有些做过一两年开发。我强烈建议你按着这个学习路线进行学习,坚持学习,尽量到达测试开发的目标,如果达不到,你也会接近这个目标,你到时候的能力也会让大部分羡慕,相信自己,努力学习,坚持下去,不轻易放弃。

2023全栈高级测试开发测开平台之企业级项目开发实战篇

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

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

相关文章

基于flask的web应用开发——接受post请求

目录 0. 前言1. 了解post方法2. 在flask中实现3. 具体讲解 0. 前言 操作系统:Windows10 家庭版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:flask 1. 了解post方法 POST是HTTP协议定义的一种请…

尚硅谷JUC极速版笔记

尚硅谷JUC极速版笔记 1、JUC概述1.1 进程和线程1.2 线程的状态(6个)1.3 wait和sleep1.4 并发与并行1.5 管程(锁)1.6 用户线程和守护线程 2、Lock接口2.1 复习synchronized(java内置同步锁)2.2 什么是Lock接…

03使用IDEA快速开发一个WEB应用的具体流程

使用集成开发环境实现web开发 集成开发工具很多,其中目前使用比较多的是IntelliJ IDEA和Eclipse IntelliJ IDEA(居多): JetBrain公司开发的收费软件, IDEA在提示功能方面要强于Eclipse使用起来更加智能更好用Eclipse(较少):Eclipse是IBM团队开发的, Eclipse寓意是…

ChatGPT 国内镜像网站独家汇总:发现最优秀的人工智能对话体验!

欢迎来到我们的 ChatGPT 镜像网站汇总博客!在这个令人激动的人工智能时代,ChatGPT 作为一款顶尖的语言模型,已经引起了全球范围内的热议。但是,您是否曾经为了找到最佳的 ChatGPT 使用体验而苦苦搜寻?别担心&#xff0…

电商业务逻辑总结

一、后台模块:商品管理 1. 基本概念 ① spu: 标准化产品单元 不是一件具体的商品 eg iphone14 ② sku: 库存量单元 指的就是一件具体的商品 eg iphone14 128G 蓝色 ③ 销售属性 出现了商品详情页右侧的商品属性信息 ④ 平台属性 出现了商品详情页下…

vue 实现微信扫码登录的方法

一、准备工作: 1.微信公众号,扫码登录 2.域名,也就是域名解析(public_domain) 3.微信登录验证 4.配置微信扫码登录页面的代码,有了上面的准备工作,下面就可以开始编码了。 二、开发环境&#xf…

pinia的用法,一篇文章教你搞懂vuex的继任者pinia

一:pinia是什么? Pinia 是一个轻量级的、易于使用的 Vue.js 状态管理库。它是 Vuex 的一个替代方案,专为 Vue 3 设计,提供了更简单的 API 和更好的 TypeScript 支持。在你提供的代码中,Pinia 被用于管理应用程序的状态…

VAO、VBO、EBO简介

1.顶点缓冲对象(Vertex Buffer Objects, VBO) 顶点缓冲对象(VBO)的作用就是管理这个在GPU上创建的显存。使用这些缓冲对象的好处是我们可以一次性的发送一大批数据到显卡上,而不是每个顶点发送一次。从CPU把数据发送到显卡相对较慢&#xff…

java.security.MessageDigest的用法

java.security.MessageDigest MessageDigest的含义 message含义是:消息,信息 digest的含义是 digest 必应词典 n.摘要;文摘;概要;汇编 v.消化;领会;领悟;理解 海词 n. 摘要 vt. 消化;理解 vi…

进制转换(及规律)

Java变量命名规则和前端一样 约束 接口使用大驼峰 变量方法小托福 常量全大写 数值类型的 整型 byte a 1 所占空间1字节(-128-127) short a 1 所占空间2字节(-32768-32767)2^15-2^15-1 int a 1 所占空间4…

2023 华为 Datacom-HCIE 真题题库 11/12--含解析

单项选择题 1.[试题编号:190685] (单选题)通过iMasterNCE-Campus部署的虚拟化园区网络场景中,以下关于“添加设备”的描述中,错误的是哪一项? A、IMaster NCE-Campus支持通过设备角色添加设备 B、IMaster …

装饰器Python】进阶知识点

要明白装饰器首先得知道闭包 闭包:是内部函数对外部函数作用域的引用,并且一般外部函数函数的返回值是内部函数的函数名 def outer(x): # 外部函数 a x * 2 def inter(b) # 内部函数 …

手撕数据结构—单链表

✅作者:简单^不简单 🔥系列专栏:C语言数据结构 💖如果文章有错误,时刻欢迎大家的指正。当然觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝 💬格言:希望我…

设计模式之-模板方法模式C++实现与C++模板template用法

介绍 模板方法模式使用比较常见,也比较简单,模板方法模式是属于设计模式中的行为设计模式。行为设计模式是关注对象的行为或者交互方面的内容,主要涉及算法和对象之间的职责分配。 模板方法模式使用场景:在设计需求中,…

java并发编程:synchronized关键字与锁详解

文章目录 线程安全问题synchroinzed关键字几种锁Java对象头偏向锁轻量级锁自旋锁重量级锁锁升级的场景 JVM 是如何实现 synchronized 的?小结 这篇文章我们来聊一聊Java多线程里面的“锁”。 首先需要明确的一点是:Java多线程的锁都是基于对象的&#x…

御用飞场之惊险炸鸡寻根溯源

御用飞场之惊险炸鸡寻根溯源 1. 源由2. 分析3. 证据4. 总结5. 补充:BetaFlight Mark4 自锁螺母桨叶松动 炸机瞬间 1. 源由 这个炸鸡的原因千奇百怪,不过最终的结果都是相似的。 如果能很好的找到根原因,相对来说,今后炸鸡的概…

element-ui表格el-table的使用

先给大家展示一下效果 Table 属性 属性名说明类型可选值默认值data显示的数据array——heightTable 的高度, 默认为自动高度。 如果 height 为 number 类型,单位 px;如果 height 为 string 类型,则这个高度会设置为 Table 的 sty…

初阶指针(详解)

目录 前言 一 指针是什么 计算机又是如何编址的? 总结 二 指针和指针类型 指针-整数 总结: 指针的解引用 总结 三 野指针 概念 野指针的成因 1. 指针未初始化 2. 指针越界访问 3. 指针指向的空间被释放 如何规避野指针 四 指针运算…

iMazing2.16.9中文最新版iOS设备管理器下载教程

iMazing2.16.9是一款兼容Win和Mac的iOS设备管理软件。iMazing能够将音乐、文件、消息和应用等数据从任何 iPhone、iPad 或 iPod 传输到 Mac 或 PC 上。iMazing轻松管理和备份您的 iOS 设备,无需使用 iTunes,iMazing以自己的方式管理 iPhone。让备受信赖的软件为您传…

遗传算法(附简单案例及matlab详细代码)

作者:非妃是公主 专栏:《智能优化算法》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 专栏推荐序一、生物进化二、遗传算法原…