什么是测试开发工程师(SET)?

经常有人问到:什么是“ 软件测试开发工程师 (Software Engineers in Test, 缩写为SET)” 借用Google的规范来说其实就是——在测试中的软件工程师;其工作性质上首先是测试,然后才是开发。

那么这里会让大家产生一个矛盾的感觉: 既然SET需要开发的技能,那岂不是既能做开发又能做测试, 直接做开发的岗位不行吗?

我个人的观点是:通常情况下是不行的。因为一名优秀的开发工程师所具备的能力, 不仅仅是熟悉编程语言本身,还需熟悉整个开发阶段的框架和环境,如:代码管理、表结构设计、常用算法和第三方库、常用工具链、环境的持续集成部署等等,而SET岗位里的“开发”环节的维度是不同的,SET是间接接触目标软件【基于在目标软件的测试环节之上的流程改进,或者说测试技术的改进,从简单的已有工具自动化升级到定制工具的自动化, 甚至是从0开发一个专项测试工具;最终目的是提升测试效率,保证软件质量】

按软件开发流程表示关系:测试开发的工作性质
用目标图来表述或者更清晰:

在这里插入图片描述

另外,有的软件测试工程师们经常会疑问:测试工程师生涯里, 应该不会用到编程吧?
------答:当前阶段可能用不到编程, 可是后续一旦接触到自动化测试、精准测试等方面后,必定还是要利用编程手段辅助我们来高效解决某些复杂的问题。

我们来看看软件测试工程师(Software Testing Engineer, 缩写为TE)们大致的工作流程有6个:
  • 需求分析
  • 功能用例编写
  • 功能用例评审
  • 黑盒测试
  • 问题跟踪
  • 测试报告
而测试开发工程师们大致的工作流程有7个:
  • 需求分析(需要把2份需求融合起来做分析:第一是产品需求分析, 第二是项目经理或测试工程师给出的需求)
  • 测开用例设计(分析功能用例和自研需求,对专项测试、自动化场景做分析,形成测开用例)
  • 测开用例评审
  • 自研工具的编码和测开用例覆盖(一般会邀请测试工程师共同验证)
  • 用自研工具做黑、白盒测试(单元测试 注入测试 接口mock测试等等)、自动化、性能测试、安全测试
  • 问题跟踪
  • 自研工具改进及持续集成
测试开发工程师在用自研工具去测试目标软件时 ,同时也是在校验自研工具的有效性

打个比方:

  1. 本来是用手抓饭,有些烫
  2. 研发一个隔热手套
  3. 升级成功:戴上手套去抓饭
  4. 手套好不好用?能不能隔热? 得抓一下饭试试才知道,好用则用,不好用则改进~
### 测试开发工程师 Python 面试题目 #### 数据结构与算法 Python 中常用的数据结构有列表(list)、字典(dict)、集合(set)以及元组(tuple)。其中,列表和元组都是序列类型的容器,但是列表是可以修改的序列,而元组中的内容一旦创建则无法进行修改[^4]。 ```python # 列表示例 my_list = [1, 2, 3] # 元组示例 my_tuple = (1, 2, 3) # 字典型数据结构用于存储键值对 my_dict = {"key": "value"} # 集合型数据结构用于去除重复项并支持集合运算 my_set = {1, 2, 3} ``` #### 控制流语句 `break`、`continue` 和 `pass` 是 Python 的控制流关键字。`break` 用来立即退出最内层循环;`continue` 跳过当前迭代进入下一次迭代;`pass` 不执行任何操作,通常作为占位符使用。 ```python for num in my_list: if num == 2: break # 当num等于2时跳出整个循环 elif num % 2 != 0: continue # 如果不是偶数,则跳过本次循环剩余部分 else: pass # 占位符,不做处理 ``` #### 函数定义与调用 函数是可重用代码块的一种方式,在 Python 中通过 `def` 关键字定义: ```python def add(a, b): """返回两个参数相加的结果""" result = a + b return result print(add(5, 7)) ``` #### 类与对象 面向对象编程概念也是面试重点之一。类是一种抽象的概念,它描述了一组具有相同属性和行为的对象。下面是一个简单的类的例子: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): print(f"Hello! My name is {self.name} and I'm {self.age} years old.") person_instance = Person('Alice', 30) person_instance.greet() ``` #### 实际案例分析——冒泡排序实现 给定数组 `[2,10,7,8,9,5,4,1]` 进行升序排列,以下是基于交换相邻元素位置完成排序过程的一个具体例子[^5]: ```python data = [2, 10, 7, 8, 9, 5, 4, 1] def bubble_sort(arr): n = len(arr) for i in range(n - 1): for j in range(n - 1 - i): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr sorted_data = bubble_sort(data.copy()) print(sorted_data) ``` #### Web 开发相关知识点 对于从事Web开发方向的工作而言,掌握 Flask 或 Django 等框架是非常重要的。这里给出一个简单的Flask应用实例[^3]: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(debug=True) ``` #### 自动化试工具的应用 了解如何编写单元试脚本同样不可或缺。unittest 库提供了丰富的断言方法帮助验证程序逻辑正确性[^2]: ```python import unittest class TestMathOperations(unittest.TestCase): def test_addition(self): self.assertEqual(sum([1, 2]), 3) if __name__ == '__main__': unittest.main() ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木法星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值