我相信每一个刚入门软件测试的萌新都会琢磨一个问题:软件测试人员,要不要懂代码?其实这个问题同样困扰着已经在测试行业闯荡了几年的测试小司机们。
那今天,我就来给大家分析一下:
在软件测试初级阶段,不需要编程能力。
但是任何一个职业,都会追求长期发展,
想要可持续发展,变成能力还是很必要的!
软件测试的方法会因软件产品的需求、行业的不同而所有不同,而优秀的测试员在整个产品的测试过程中扮演着极其重要的角色。
软件测试员掌握多少编程技能才够?
一提到编程和调试,绝大部分人一定会说这是软件开发工程师的工作,那为什么软件测试工程师也必须掌握编程能力呢?
下面我们分析下原因:
做自动化测试时,你需要写代码
做白盒测试时,你需要读懂代码和写代码
做数据库操作时,你需要会sql的增删改查操作
在敏捷测试过程中, 你需要会写自动化测试
做性能测试,你需要写代码
做安全测试时,你需要写代码
做数据测试时,你需要写代码
软件测试的基本测试策略: 手工测试和自动化测试。又可能进一步划为黑盒测试、白盒测试、灰盒测试。不同的测试策略要求不同的测试技术。
你会发现:
从事黑盒测试,你可能不需要编程能力,测试人员只是通过输入数据来测试软件,然后检查输出。
从事白盒测试或基于代码驱动测试模式时,你必须具备编程能力,掌握例如python、java、c++、sql等等各种编程语言
从事自动化测试或代码检测时,你需要足够好的编程能力,因为你需要关注代码覆盖、语句覆盖。开发自动化测试框架等等,同样你也可能需要具备前端、数据库等等一些技术。
sql,你需要掌握各种数据库的增删改查操作,以便验证一些数据,甚至实现自动验证
sql-注入,“sql注入“是通过插入不必要的命令来进行数据库黑客攻击的技术之一。对.有很好的了解JavaScript和SQL使用命令可以避免这种软件安全威胁。
敏捷测试敏捷测试整个团队负责软件的质量。在整个敏捷过程中,测试人员将与一个或多个程序员一起编写测试。因此,为了创建一个自动测试,测试人员必须知道代码。
所以,作为一名想要可持续发展的软件测试员,会编程懂代码是非常有必要的!
整个项目阶段,测试员的工作过程
1、版本或者产品的规划阶段:
作为一个测试人员,这个时候可以从一个更高的角度对产品的规划提出自己的想法,来更好的帮助产品取得成功。
需要具备的能力或者知识:对于产品的商业理解以及整个行业和市场的理解都比较深入,实际上这个时候我们可以将自己看成是一个产品经理。
2、版本的需求阶段:
测试人员已经能够开始做需求阶段的缺陷预防,保证需求是能够满⾜足用户的原始需求,并且整个需求都是非常清晰和合理的,版本后期没有需求不合理或者需求不清晰的问题。
需要具备的能力或者知识:对于客户的使用场景非常清楚,能够在客户角度上面思考问题;有自己的一套需求分析的方法,最好是模型或者checklist之类的;非常好的分析能力,能够通过需求文档分析到可能潜在的问题。
3、设计阶段:
测试人员开始做设计阶段的缺陷预防,能够对于研发的整个设计方案非常清楚,能够根据研发设计文档里面的业务逻辑图自己能够站在测试的角度来画出一份让测试人员更加容易理解的业务逻辑图,并且能够发现研发在设计方案上存在的一些问题,并且指导研发进行修改。
需要具备的能力或者知识:比较深入的业务背景知识;熟悉开发使用的语言;业务分析和转换的能力;
4、编码阶段:
测试人员开始编写单元测试、接口测试用例、测试工具或者自动化测试用例,并且开始思考后面如何去更好的测试,并且帮助研发提前做好编码阶段的缺陷预防,甚至做得测试驱动开发。
需要具备的能力或者技能:熟悉开发使用的编码语言、能够对开发的代码进行静态走读、熟悉开发使用的编码语言的单元或者接口测试方法和框架、具备测试工具开发的能力、具备自动化的能力,良好的代码分析能力和用例设计能力。
5、测试阶段:
测试人员开始制定测试策略和测试计划、执行测试用例、发现和定位bug、跟踪和回归bug,质量分析,有效的探索性测试等等,目的是花更短的时间来更好的保证质量。
具备的能力或者技能:制定策略和计划的能力、执行能力、分析和排查问题的能力,业务的理解能力,对代码的熟悉程度,模块的质量分析能力等等!
总结:
软件QA通常分为两类,
Qa测试人员:它不需要编码知识。
SDET:它需要编码知识
一个优秀的测试员应该具备什么?
良好领域知识
良好的逻辑思维
良好的编程知识。
测试人员在进行自动化测试时需要良好的编码知识。
领取专属 10元无门槛券
私享最新 技术干货