昨天晚上在知乎上看到一个网友问题,我做了一个详细的回答,收到了许多测试人的喜欢与点赞,我把我的回答贴出来分享一下。
既然问题问的这么官方,那我来做一个科普?后面再来解答你的问题。
软件测试(Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
学习软件测试从哪里入手?
我认为分为初级、中级和高级三个阶段,不足之处欢迎朋友们指出,我会及时改正。
初级阶段
初级阶段需要掌握四个方面的内容:
一、软件测试的基础知识,编写测试用例的方法及测试流程
二、掌握禅道、SVN等必要工具,及缺陷定义和测试计划编写方法
三、web测试与app测试的方式方法与协议
四、接口测试postman工具的操作使用,前端基础知识H5及CSS
中级阶段
中级阶段需要掌握六个方面的内容,从中级开始就是涉及到一些工具的使用
一、QTP自动化工具的环境搭建
二、loadrunner性能工具的环境搭建
三、jmeter性能工具的环境搭建及接口压力测试
四、jmeter脚本增强,app/web性能测试
五、fiddler抓包工具的操作使用、Jenkins自动化部署工具
六、数据库MySQL、SQL语句
高级阶段
鉴于问题的角度,我的观点是实践出真知,当你到了中高级阶段,也许你比我的体会更加深刻,就留一个白。正好昨天在编辑一个软件测试全栈思维导图,有需要的可以私信我。贡献我的微薄之力,做好了也会发出来,记得关注我!
随着互联网IT产业的蓬勃发展,软件测试的行业也日趋火热,软件测试基础入门知识都是固定的那一些,要想成为一个优秀的软件测试工程师要学的并不少。回到你的问题,软件测试是不是很简单?什么人都可以学?我想你心里已经有了答案。
我说你只要学一个月就可以学成,入门到放弃啊!滑稽狗头
零基础容易从自学到放弃,太多个这样的例子了,一个人的精力有限,还会涉及到每个人自制力,白天上班下班了很多都是只想呆着不动葛优瘫一会,你需要鼓励需要有人给你加油打气!遇到一些自己解决不了的技术难题,容易诱发焦虑迷茫等不利于学习软件测试的情绪,我深有体会,因此建了一个软件测试交流群,有什么问题可以直接在群里问,(718897738)欢迎来学习交流,免费学习资料可供下载)
那么怎样成为一个好的测试工程师?
作为一名软件工程师,需要的能力并不多,但是要成为一名优秀的软件测试工程师,需要的能力就比较多了,自己整理出来8个方面,每个方面都会分成很多细小的方便并进行举例说明。
知乎是一个开放性的平台,有问题上知乎!那我就再为软件测试人或者在路上的测试人说一下优秀的软件测试工程师必备的8个能力。正所谓,做一行爱一行,既然选择了测试,就要把他做好!
《优秀的软件测试工程师必备的“8个能力”》
一、业务分析能力
1.分析整体业务流程
不了解整个公司的业务,根本就没办法进行测试
2.分析被测业务数据
了解整个业务里面所需的数据有哪些?哪些是需要用户提供的?哪些是自己提供的?有哪些可以是假数据?有哪些必须是真数据?添加数据的时候可以用哪个库?
明白了整个软件的数据库架构,才能知道哪一个数据是从哪一个表里头带出来的,它的逻辑是什么,有没有连带关系。
3.分析被测系统架构
用什么语言开发的?用的是什么服务器?测试它的话需要用什么样的环境进行测试?整体的测试环境是什么样的?
如果缺少了,需要进行环境搭建,架构搭建。一般去一家新公司之后,架构是搭建好的,了解它即可,熟悉之前的这些老员工们使用什么样的架构发表去做的。
4.分析被测业务模块
整个软件有哪些模块,比如说首页面、注册页面、登录页面、会员页面、商品详情页面、优惠券页面等等
明白有多少个模块需要测试,每个模块之间的连带关系,进而怎样进行人员分工
5.分析测试所需资源
我需要几台计算机,需要几部手机,手机需要什么样的系统,什么样的型号。
比如测一个网站的性能的时候,电脑的配置达不到测试并发5000人的标准,要么升级电脑的硬件配置,要么多机联合,多机联合时需要几台电脑,都需要提前筹划。
6.分析测试完成目标
我的性能目标是什么样的?我的功能目标是什么样的?我要上线达到的上线标准是什么样的?性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等
把这些问题都弄清楚,测试的思路会非常的清晰
二、缺陷洞察能力
1.一般缺陷的发现能力
至少你要满足一般缺陷的发现能力,这个是最基本的,如果要连最简单的一般的缺陷都发现不了的话,别说优秀测试工程师了,你说你是测试我都不信
2.隐性问题的发现能力
在软件的测试过程当中有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。
比如说买双鞋必须选择的是什么品牌,必须选择是红颜色,必须选择44号,而且必须选择用特定的支付方式才会出现这样的bug的时候,那么这种就属于特别隐性的bug,对于这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug。
3.发现连带问题的能力
当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。
^_^
最后:
凌晨码字不容易哇~点个赞同是对我最大的支持!其实我也就晚上闲下来才有时间来知乎回答一些我认为有价值的问题。帮助到更多想入行或者已经在路上的测试人。软件测试学习群,欢迎来学习交流,免费学习资料可供下载。
晚安 测试人