测试人员需要具备哪些基本技能或者素质。这个问题在几年前常见于软件测试工程师笔试题上。对这个问题,我觉得应该有新的解读。现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域。而不再是点点点就完事儿。
另外,不管你的职位名是叫测试人员也好,测试开发人员也好,本质上都是一回事儿。这里列的大多是硬技能。其实不管你每一项掌握得多么薄弱也好,最少这些要有一点点基本了解。这些基本都有一点点懂之后再选主攻的技术方向不迟。
一、基本技能:编程语言
1.掌握 python 的基本用法。能写简单的脚本或小型的应用。即使你现在做测试需要写的测试代码是纯 java 系的,也同样建议你学习一下 python。特别是未来你面对一些测试和运维交叉的领域时(比如部署和维护一些测试服务器及 web 应用),掌握 python 非常有用。
2.要懂点 java。Java 系的工作机会目前比 python 多。一点 Java 都不懂也可以找到好工作,但要是懂的话机会更多。另外你也可能遇到用 java 做主语言的测试框架,这类框架很多公司都有。如果你所在的公司用 java 做开发,那么你还可以处理一些测试与开发交叉的领域的问题。另外面试常见问题很多和 jvm 之类的有关。
二、基本技能:计算机网络
1.对计算机网络的基本了解。比如各层的主要协议。我们测试现在最常接触到的可能是 HTTP,TCP,IP。这些应该最高优先级去了解。
2.相应的,抓包工具,如 fiddler,wireshark,tcpdump 之类的,应该至少要会用。
3.着眼未来,你很可能遇到测试和运维的交叉领域。比如,云计算平台上测试环境的网络规划和环境出问题时的调试。需要了解更多的网络知识和常用命令。
三、基本技能:操作系统
1.还是为了应对测试和运维的交叉领域,要维护自己的测试环境。一定要熟悉 linux 基本概念和命令。
2.可以写简单 shell 脚本。复杂的可以交给 python。
3.如果你现在或将来打算做移动 app 测试,那么对应的 ios 或 android 系统也要有所了解。
四、基本技能:前端基础
1.为了应对一些测试和开发的交叉领域务必要掌握一点前端的基础。html,css,javascript,bootstrap,jquery。应用于要做一
些 web 自动化测试脚本的时候。不过即使对于一点 web 测试都不做的人,这一条的优先级可以放低,但你还是可以开发一些基于 web 的小工具,或者学了用来美化自己的测试报告。
五、基本技能:需求分析
1.小到你拿到手的每一个任务,大到你所在做的项目的需求。掌握基本的需求分析方法,对任务发布者提出合适的问题、把任务分解、划分优先级。最怕拿到任务什么问题都问不出来的人。
六、基本技能:搜索
1.有很多人遇到问题只会问人。这挺好,但问之前搜索一下就更好了。
七、基本技能:英语
1.不懂英语就缺了一大块资料来源。如果你不在外企工作,不求英语多厉害,至少得看得懂文档和 stackoverflow。
八、基本技能:数据库
1.这块是我的短板。可能专职做性能测试的人会更多地遇到这块。还有一些做接口测试的人也会遇到需要对比数据库数据的场景。
九、基本技能:配置管理基础
1.最基本的 git 要会用。常用命令要熟。其中一些和操作系统、网络基础有交叉。比如 git 里面免密码登录。还有常见的 git 流程策略,比如 feature branch。
2.老系统可能还在用 svn。svn 的命令也可以了解下。
十、基本技能:算法基础和设计模式
1.平时用不到,纯粹是为了应对面试的。可以通过背书和刷题来提高。另外特别提示一下,设计模式,在 python 写的测试框架里最好别用(除非你真的知道你在做什么,很多人只是为了使用一下刚学的设计模式。。。)。我遇到过无数的老测试代码和框架,都因为作者滥用设计模式变得非常难以维护。特别是在 python 上,很多功能根本不需要设计模式就能很好地实现。我在同一个公司的两个不同部门看到过为了十分类似的两个命令行程序设计的两种 python 测试框架。其中用了命令模式的那个框架完败(除了作者都不会有人想维护这个东西,我怀疑作者原来是写 java 的)。
本文首发于公众号:测试进阶(test_up)欢迎关注。