测试工程师是干什么的
测试工程师是项目开发过程中的质量检测者和保障者,负责产品质量的把关工作。主要的工作职责是理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug)决定软件是否具有稳定性(Robustness),并写出相应的测试规范和测试案例,从而提供用户满意的产品和服务。
以下是测试工程师的职责和作用的详细解释:
软件测试目的:减少软件缺陷(BUG),保障软件质量!
软件产生过程:
软件测试的过程:
一、测试工程师的职责
测试工程师的职位对任何生产过程都至关重要。
在将产品推向市场投入使用之前,需要测试工程师对其进行一个彻底的测试,来确保产品功能的正常,为客户提供满意的产品与服务。他们的日常工作可能取决于行业和项目,但包括以下一项或多项:
- 在整个生产或开发阶段监控安全措施和标准。
- 与各部门紧密合作,了解产品目标,打造高品质产品。
- 构建测试框架,并根据产品设计团队的输入定义测试参数。
- 使用测试框架来监控流程,记录结果并采取措施进行故障排除。
- 开发多个测试用例并创建适当的测试环境来检查产品。
- 提供改进测试产品的建议。
- 确保产品符合团队和客户设定的所有质量标准。
- 记录所有测试程序、结果和建议。
- 使用测试结果进行数据分析。
二、测试工程师的工作内容
- 使用各种测试技术和方法来测试和发现软件中存在的软件缺陷,测试技术主要分为黑盒测试和白盒测试两大类,其中黑盒测试技术主要有等价类划分法、边界值法、因果图法、状态图法、测试大纲法以及各类典型的软件故障模型等;白盒测试的主要技术有语句覆盖、分支覆盖、判定覆盖、基本路径覆盖等。
- 测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括单元测试、集成测试、系统测试和验收测试工作。单元测试工作主要在编码阶段完成,由开发人员和软件测试工程师共同完成,其主要依据是详细测试。集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系结构设计。系统测试是在软件开发完成后,验证软件的功能与需求的一致性、验证软件在相应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求。验收测试分为内测和公测,使用不同的人群来发现项目的缺陷。
- 测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。缺陷报告编写最主要的要求是保证缺陷的重现。要求测试人员具有很好的文字表达能力和语言组织能力。
- 测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等。
- 测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计测试用例,形成测试用例报告。设计测试用例是保证测试质量的核心工作,很多测试技术都可以用来指导设计用例。
- 测试人员需要分析软件质量。在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺陷率、缺陷分布、缺陷修复趋势等。给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间与资源特性等的具体度量。最后给出一个软件是否可以发布或提交用户使用的结论。
- 为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自动化测试工具,编写测试脚本,进行性能测试等。
- 测试负责人在测试工作中,还需要根据实际情况不断改进测试过程,提高测试水平,进行测试队伍的建设等。
三、必备技能
测试工程师需要具备以下几个方面的技能:
- 编程基础:了解基础的编程概念和语言如Java、Python等。
- 测试方法:熟悉多种测试方法,包括单元测试、集成测试和系统测试。
- 沟通能力:需要与开发团队、产品经理和其他利益相关者有效地沟通。
四、工作工具
测试工程师通常会使用以下几种工具:
- 缺陷追踪工具:如Jira、PingCode等。
- 接口测试:如postman、Apifox等。
- 自动化测试工具:如Selenium、Appium等。
五、测试的主流测试
1、、功能测试:测试主要验证程序的功能是否满足需求
测试用例:是为测试项目而设计的执行文档
测试用例的作用
- 防止漏测
- 实施测试的标准
2、自动化测试:使用代码或工具代替手工进行测试。
//仅供参考
import pytest as pytest
import requests
from common.send_request import SendRequest
class TestApi:
access_token = ""
#获得token
def test_post_token(self):
url = "http://ghcs123.test.dacaigou.cn:8000/uaa/oauth/token"
datas = {
"username":"13100000006",
"password":"Abcd@123",
"grant_type":"password",
"client_id": "app_test",
"client_secret":"test123"
}
res = SendRequest().all_send_request(method="post", url=url, data=datas)
result = res.json()
TestApi.access_token = result["access_token"]
print(res.json())
def test_post_login(self):
url = "http://ghcs123.test.dacaigou.cn:8000/uaa/loginByUsername"+TestApi.access_token
datas = {
"username": "13100000006",
"password": "Abcd@123",
}
res = requests.post(url=url, data=datas)
print(res.json())
if __name__ == '__main__': #入口
pytest.main()
3、接口:有地址有参数
接口测试(代码实现):使用代码或工具对服务提供的接口进行测试
六、软件缺陷的核心内容:
- 缺陷的标题
- 缺陷的预置条件
- 缺陷的复现步骤
- 缺陷的预期结果
- 缺陷的实际结果
- 缺陷的必要附件