测试人员必须编写代码吗? Code技能与职业指南
测试人员是否应该学习 Code?
软件的一个非常常见的问题是 测试与验证 应聘者可能会问——测试人员需要编写代码吗?在回答这个问题之前,必须对各种软件测试角色有全面的了解。
软件质量保证通常分为两大类:
- 质量分析师: 质量分析师负责验证测试的功能性和完整性。质量分析师仅在开发阶段结束后才对软件进行验证。该职位的技术要求不如开发人员,可能不需要编写代码。
- 软件测试开发工程师 (SDET): 另一方面,软件开发测试工程师 (SDET) 则了解产品的内部运作机制。SDET 理解数据库概念和编程语言,并且参与产品设计、数据设计和用户界面设计。SDET 在开发阶段工作,需要具备编码知识。因此,SDET 的角色更具挑战性,因为它结合了开发人员和测试人员的工作。自动化测试人员(使用诸如……之类的工具) QTP 和 Selenium)也可以归类为 SDET。
下图对比了这两者。 tracks,显示每个阶段相对于开发阶段的位置。
因此,根据测试人员的角色,您可以确定是否需要具备编程知识。接下来,我们再回答几个相关的问题。
优秀测试人员应具备的素质
软件测试方法会根据软件产品的需求和规范而有所不同。无论采用哪种方法,优秀的质量保证人员或软件测试人员在测试过程的完成中都扮演着重要的角色。 测试类型 项目需要。
优秀测试人员应具备以下特质:
- 良好的领域知识
- 良好的逻辑思维能力
- 具备良好的编程技能
对于每位测试人员来说,领域知识和逻辑思维能力都是必不可少的。然而,编程技能因岗位而异,下一节将对此进行探讨。
测试人员需要具备多少编程知识?
编写代码和调试代码是开发人员的工作。那么问题来了:为什么测试人员需要具备编码知识呢?
让我们来看看为什么测试人员需要掌握编程知识。下图总结了这些知识的实际应用领域。
软件测试主要包括两种方法: 手动测试 和 自动化测试从更高级的角度来看,测试可以分为白盒测试、黑盒测试和灰盒测试。不同的测试技术对测试人员的技能要求各不相同。
- 表演时 黑匣子测试测试人员无需具备编程知识。他们只需输入数据并检查输出结果即可测试软件。
- 白盒测试或者说代码驱动测试,需要具备代码知识。了解编程概念,例如: C,C#, C++和 关系数据库管理系统概念 可能会有所帮助。
- 灰盒测试 介于两者之间:测试人员对内部结构有部分了解,因此即使不总是需要编写代码,阅读代码也是有用的。
- 测试人员在从事自动化测试或白盒测试时,需要具备良好的编码知识。这是因为自动化测试涉及语句覆盖率、代码覆盖率等。 圈复杂度所有这些概念都需要良好的编程和数据库知识。
- SQL (结构化查询语言)——有时测试需要验证数据库。因此,测试人员需要具备 SELECT、CREATE 和 UPDATE 等 SQL 命令的基本知识。
- SQL注入—— SQL注入 这是通过插入恶意命令进行数据库攻击的技术之一。对……有深入的了解。 JavaScript 和 SQL 命令在避免此类软件安全威胁方面非常有用。
- 敏捷测试 在敏捷测试中,整个团队都对软件质量负责。在整个敏捷过程中,测试人员会与一位或多位程序员合作编写测试用例。因此,为了创建可自动化的测试用例,测试人员必须了解代码。
软件质量保证分析师的重要提示
- 具备手动测试知识以及脚本语言知识,例如 JavaScript 这将提升您的测试技能。
- 作为测试人员,你应该掌握一些编程语言的基础知识,例如: Java 和 VBScript中虽然并非强制性要求,但掌握SQL和数据库管理系统(DBMS)的概念非常有价值。
- 学会读懂堆栈 trace 和构建日志。阅读代码的门槛比编写代码低,而且它已经使 测试用例 报告更加精确。
除此之外,还有一些通用技能对每位软件质量保证分析师都很有帮助:
- 交流技能
- 分析思维
- 能力倾向
掌握软件测试中的编码技能对质量保证分析师或测试人员的整个职业生涯都大有裨益。下一节将逐一分析这些需求在各个角色中的作用。
测试需要编码的角色与不需要编码的角色
“测试人员需要编写代码吗?”这个问题没有标准答案,因为“测试人员”并非指单一职位。下表列出了常见的测试角色及其实际所需的编程水平。
| 测试角色 | 典型作品 | 所需编程水平 |
|---|---|---|
| 手动/功能测试员 | 设计并执行测试用例,报告缺陷 | 没有 |
| 探索性的 / 可用性测试员 | 非脚本式调查,用户体验反馈 | 没有 |
| 领域/业务测试员 | 根据规范验证业务规则 | 没有 |
| 数据库测试员 | 验证存储的数据、连接和完整性规则 | 仅限 SQL |
| API 测试员 | 基于 JSON 或 XML 构建请求和响应断言 | 基础版 |
| 自动化测试员 | 编写和维护脚本 Selenium剧作家,或 Cypress | 中级 |
| 性能测试员 | 脚本加载场景,关联动态值 | 中级 |
| SDET | 构建框架、测试工具和持续集成管道 | 开发人员级别 |
把这张表格看作是职业阶梯,而不是一堵墙。大多数测试人员都是从不需要编写代码的那一行开始,然后随着编程能力的提升而向下移动。优秀的测试人员完全可以一直待在表格的顶端,但自动化预算和高级职位通常都集中在表格的下几行。
测试人员应该学习哪些编程语言?
测试人员不需要掌握所有编程语言。通常两种就足够了:一种是用于自动化测试的通用编程语言,另一种是用于数据验证的 SQL。下面的比较展示了每种选择的优势所在。
| 语言 | 它对测试人员有什么帮助? | 为什么选择它 |
|---|---|---|
| Python | Selenium 以及剧作家脚本、PyTest 测试套件、数据检查 | 最简单的语法,最快实现首次可运行测试的方法 |
| Java | Selenium - TestNG or JUnit, Appium企业框架 | 大型组织中最常提出这种需求。 |
| Java脚本 / TypeScript | Cypress剧作家、前端和组件测试 | 与被测应用程序已使用的语言相匹配 |
| SQL | 后端验证、测试数据设置和清理 | 即使在从不自动化浏览器的角色中也很有用 |
| Shell脚本 | 日志解析、环境设置、CI作业步骤 | 投入少量精力,即可获得立竿见影的日常回报 |
尽可能选择开发团队已经使用的语言。使用同一种语言意味着可以共享代码审查、共享库,并且在测试失败时可以互相帮助。一位精通一种语言且熟悉 SQL 的测试人员就能胜任绝大多数的自动化测试工作。
如何开始学习 Code 作为测试员
在完成全部测试工作的同时学习编程,关键在于循序渐进,而非天赋。以下步骤将指导您从零基础开始,逐步构建并维护一套自动化测试套件,而无需放弃日常的测试执行工作。
第一步)学习语言基础知识。 变量、条件语句、循环语句、函数和集合足以编写测试脚本。面向对象理论可以稍后再讲。
步骤 2)尽早添加 SQL。 只需几个带有连接和 WHERE 子句的 SELECT 语句,即可验证应用程序实际存储的内容,从而立即改进缺陷报告。
步骤 3)自动化一项枯燥的任务。 转换单个重复项 回归 检查一下脚本。一个有效的测试用例胜过一个月的教程。
步骤 4)学习测试框架,而不仅仅是工具。 断言、测试用例、设置和拆卸以及报告比点击录制器更重要。这就是脚本成为一套完整系统的原因。
步骤 5)使用版本控制。 将测试代码像开发人员一样提交到 Git。 Rev查看差异也是测试人员学习阅读生产代码的方式之一。
步骤 6)将套件连接到管道。 每次构建时自动运行的测试能够带来价值;而仅在笔记本电脑上运行的测试则不然。这一步骤使测试与更广泛的系统保持一致。 软件测试生命周期.
预计需要三到六个月的持续练习才能熟练掌握自动化操作。这个过程是循序渐进的,确保每一步都能取得实际成果后再进行下一步。


