做软件测试的同学们,你在平时的测试工作中有哪些困惑或困扰呢?你可以自行简单思考一下。下面我梳理一下,大家可以看看自己是不是也有如此的感受。
从测试整体角度分析:
第一个痛点是入门容易深入难。
很多人认为软件测试也就那么回事,其实不然。测试需要非常扎实的技术功底和非常全面的知识储备。在国外,很多情况下都是技术大牛转型做测试,而在国内则偏偏相反。
第二个痛点是价值体现。
产品部门是定义产品的,做的是用户分析和需求确认,确认要不要做;研发部门是创造产品的,这是一个从0到1的一个阶段,确认能不能做;测试部门是什么?测试部门是验证产品?检测产品能不能用?还是别的?从客观角度来说,测试价值被严重的低估和误解,很多人觉得测试人员提供的价值输出不够。就我的理解而言,测试的基本价值就是保证质量,这是测试人的生命线,也是最基本的价值体现。就拓展价值来说,测试可以协助优化研发流程和效率、提高交付和运维的效率、为产品的持续改进提供建议和支持等等,可以做的事情非常多。因为测试人最熟悉产品,最了解用户,最理解研发体系,这是测试人的优势。
第三个痛点是永远不知道系统还有多少缺陷。
这个时间就是如此,我们有非常多的位置领域。对于开发的产品,我们同样永远都不知道还有没有缺陷,所谓的质量好也都是相对而言的。我们无法穷尽测试,更无法直接确定质量,只能基于一定的标准和测试方法来判断产品是否真的合格。
第四个痛点是与研发人员“干架”。
由于所处的立场不同,测试人员与研发人员发生冲突的情况很多。简单举例下,研发人员认为测试人员提出的BUG有问题,不予修复,测试人员则认为研发人员应该修复这个BUG,双方僵持不下,类似的场景非常多。
第五个痛点是测试人员是“背锅侠”。
在客户现场测试出问题了,系统上线出问题了,很多人第一意识反应就是测试人员没有测试到位,有漏测。对于测试人来说,这种误解心里非常难受,难免觉得自己委屈。所有的BUG都是开发人员引入的,但是测试人员作为质量的“守护神”,需要守住最后一道防线,得守住了,守稳了,虽然有的时候会受埋怨,其实大家也都清楚,问题的根本在研发端或产品端。
从测试执行角度分析
第一个痛点是测试环境。
不同的测试对象,所需要的环境会有差异,尤其是软硬件一体的社保(硬件不稳定或软件功能复杂),或者说性能测试、比较复杂用例的测试,测试环境对于测试人员历来都是非常“痛”的一件事。有的时候折腾测试环境需要多半天,而测试执行仅仅需要5分钟、十分钟就完事了。测试环境的搭建如此重要,有时直接关系着测试用例的执行质量。
第二个痛点是测试用例。
测试用例的编写、测试用例基线的维护、不同项目测试用例的整理、测试用例的标识(重要性、场景、类别、是否自动化、测试环境、前置条件等)等等,都非常的重要,而这里的每一项工作都非常的不容易。
第三个痛点是测试分析。
测试分析包括测试缺陷的定位分析、基于缺陷本身的分析(趋势图、分布图、原因图等)、测试执行过程的分析、产品质量的分析、测试策略的分析等等。测试分析是测试执行中经常运用的技能,它更多是一种思维方式、一种工作习惯、一种工作方式。
第四个痛点是回归测试。
回归测试是版本系统测试中必经的一个测试阶段。回归测试到底由缺陷提交人员回归自己提交的缺陷呢?还是由其他人回归呢?回归测试到底是仅仅回归缺陷本身,还是围绕缺陷和修正代码展开更多的测试?这里面的测试策略非常多。我觉得我们要结合测试资源、项目实际情况、测试流程和机制等综合决策如何更好的展开回归测试。
第五个痛点是缺陷复现。
对于测试人员来说,缺陷的复现尤其是难以复现的缺陷真的非常恼人。因为那些缺陷本身非常难以复现,必然需要非常多的复现技巧和方法。很多时候,大家会发现复现了很长时间,但是最终什么都没有复现出来,拜拜折腾了很长时间,还浪费了很多精力。我觉得对于缺陷复现,如果两三次之内可以复现出来的,基本上就算完事了。复现超过三次以上的,我不建议测试人员再花费太多的时间在复现问题上,反倒应该让研发人员进行代码阅读和代码审核,从代码本身寻找问题。
第六个痛点是补丁测试。
如果没有现成的测试环境,补丁的测试非常的麻烦,测试环境、测试版本、补丁发布说明等都会影响补丁的测试。如果没有持续集成环境,补丁测试会非常的折腾和麻烦,重新搭环境、部署版本、设计补丁测试用例等非常的耗时。我相信很多人一定会有同感,尤其是线上的缺陷非常的着急。
第七个痛点是任务对接。
很多测试人员都会有感触,研发人员找测试人员测试个小模块,技术支持人员找测试人员验证个小器件,供应链人员找测试人员验证个物料,产品经理找测试人员测试个临时项目等等。所有任务的对接,不一定完全的对接测试负责人,因为有些小任务、临时类任务可能就直接找相关测试人员了,他们也许并非有意不按套路出牌;有时候出于良好的个人关系直接就说了;有时候不知道找谁寻求帮助,就找到测试这了。所有的这些情况我们都需要考虑,再严格的任务下发流程,也一定会有特殊的情况,测试人员一定要学会灵活应对。
总之,测试的痛点非常多,以上的这些痛点并没有严格的先后顺序,但是话说回来,哪个职位和角色没有痛点呢,如果有痛那我们就解决痛。路需要往前奏,生活需要向前看,工作需要在发展之中前进。乐观的心态和向上的态度是我们前进的动力、要永远相信明天会更好。
所以总结就是自身自觉主动学习在加上大佬全程带你,其实学习就是这么简单的事情,无非就是这两个关键的要素,少了其中一个都很难成功。
我的自学路线(只是个人意见不代表一定能学会,主要还得看自己的学习能力加决心)
第一阶段 测试基础
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。
毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?
测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法
质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
第二阶段 工具学习
软件测试的基础学完了过后,应该学习工具了。
其实学工具真的很容易,所以大家不用去纠结工具的选择。
把最基础的几个工具学习了就行了,以后用到什么工具就去学什么。
在这个阶段,学习工具什么的,重点在于接口测试的学习,所有的工具的学习,都是在为了接口测试的学习做铺垫。
下面我会列出需要学习的工具和知识点,按顺序学习就好。
简单的网络协议:TCP/UDP,HTTP/HTTPS
Linux的基本操作和常用指令。
MySQL数据库的基本操作和常用sql语句。
fiddle抓包工具的使用。
postman接口测试工具的使用。
jmeter和loadrunner性能测试工具的使用。
第三阶段 代码学习
好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
接下来,你要考虑你的发展方向了
是成为一个自动化测试工程师呢?
还是性能测试工程师呢?
还是安全测试工程师呢?
啊!这个问题好难!我也不知道该怎么选。
反正我啥都会一点,哪个岗位都能去面一面。
关于方向的选择,看我的这篇文章
嗯,相信你心中已经有了答案了,那我们继续往下面说。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。
还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了!
所以现在各位可以去学习编程语言了,
不过不用像开发那样,学的那么深入。
比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。
总之前期你两者二选一的学习就OK了。
啥?你问我学的啥。
我当然是两种都会啊
哈哈哈哈哈哈哈,惊不惊喜!意不意外!
自动化方向
等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。
各种单端测试框架:unittest(python)、pytest(python)、JUnit(java)
WEB自动化测试框架:selenium(适用于java\python\javascript)
APP自动化测试框架:appium(适用于java\python\javascript)
以上的内容,根据你学的语言进行选择。
appiunm和selenium根据你参与的项目进行选择。
不过无所谓了,反正迟早都要学会的。
这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。
而且凭你那时候的水平,你都能轻松的看懂。
性能方向
对loadrunner和jmeter的掌握更加的深入。
可以手写脚本、脱离录制。
学会了多线程编程、能够手写java或者python、不用工具直接实现压测。
学习linux,毕竟性能总是和服务器打交道的。
学习系统架构的相关知识、方便你更容易的分析系统瓶颈。
说实话、性能方向的提示更难、因为需要掌握的东西太多了。
性能测试做深入了,基本上就是架构师的水平了。
可能你现在看着这个性能方向的学习一脸懵逼。
没关系、等你把上面的编程语言学会了你就不懵逼了。
安全方向
渗透测试
SQL注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
推荐知道创宇的学习体系。
我估计你看到这里就更懵逼了。
没关系、等你把基础的东西学会就知道我在说啥了。
毕竟你现在还是一个小白嘛。
不要去纠结这种小事。
各位在这个阶段,正常情况都应该是中级测试工程师的水平了。
第四阶段 架构学习
前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。
怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。
上面讲的都是教你应该怎么做。
在这个阶段你要自己去发现、为什么要那样做。
跨过了这个阶段就基本上可以成为专家了。
学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。
自动化测试框架、性能测试框架等等。
已经有了属于自己的一套东西了。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!