作为一名软件测试工程师，需要具备哪些能力？
技能上需要掌握如下知识： 很多新手，不知道软件测试学习该如何开始，软件测试需要掌握哪些知识。下面是根据本人的理解，粗略整理的一个学习大纲，希望对刚入行或者准备学习测试的朋友提供一点指引。 — 1 — 测试基础理论 软件测试基础理论是软件测试的重要基石，首先，要了解常见的软件开发流程及模型，主要了解敏捷开发相关知识。然后，要学习软件测试的定义、分类、测试的流程、测试用例编写方法以及缺陷（bug）的管理及生命周期。其次，要了解web端和app的常见测试点和测试方法。最后，要会编写常见的测试文档，如bug单，测试计划、软件测试报告等。 — 2 — 数据库学习 软件前后端的交互，本质就是数据的交互，不管是功能测试、接口测试、性能测试、自动化测试等，都离不开数据库的支撑和使用。这一部分，主要了解数据库的基本概念，数据库SQL增删改查，常见的表操作语句，以及数据库工具（Navicat）的使用。 — 3 — Linux使用 linux系统是主要的服务端操作系统，作为软件测试工程师，我们常常需要在服务器端查看日志，从而定位问题的源头。当然，更多的场景是，我们需要在linux系统上搭建测试环境。这些都需要我们掌握基本的linux系统知识，熟悉常见的命令及工具。 — 4 — 接口测试 接口测试本质也是功能测试的一种，通过脚本或者工具，模拟客户端对服务端接口进行调用。因为是从接口层测试，所以能更早的发现问题，从而提高测试效率，降低修复成本。 — 5 — 性能测试 性能测试的技术要求很高，不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解。还要学习系统业务和架构相关知识，这样才能更好的设计性能场景，分析出系统的性能瓶颈。性能测试常用的工具有jmeter和loadrunner，大家可以根据需要进行学习。 — 6— 自动化测试 学习自动化测试的基础是掌握一门编程语言，个人优先推荐Python，其次Java，并且还要掌握一定的前端知识。另外，还要掌握相关的自动化测试工具selenium、appium等，当然还要掌握常用的自动化测试框架。对于接口自动化测试，如果用python实现的话，则需要掌握requests库和unittest框架的使用。 — 7 — 其他 这部分主要测试需要掌握的公共知识，比如版本控制以及持续集成等。  -End- 后续会继续优化这个测试技能图谱，希望对大家的学习有帮助。 如果觉得文章有用，欢迎点在看，转发，感谢！ 非技术能力 1.良好的沟通表达能力，有耐心，态度诚恳。 2.有逆向逻辑，会进行发散思考。从不同角度分析软件的缺陷，设计不同的测试场景。 