目录
大家上网可能看到这样的笑话:互联网技术岗位流传着这样⼀个鄙视链: 算法>后端开发>前端开发>测开>测试.....这只是互联网民工茶余饭后的无聊消遣,然而不同的岗位工作的重点不同,每个角色都不能被代替;虽然测试门槛低但是相对于开发等其他来说的,但不是随便有手就行,比如让你去字节应聘测试就难了;下述有的概念不需要背只需要理解记忆;有的人也会说男生走开发的多,女生走测试的多;
什么是测试
测试在生活中无处不见
生活中的测试场景
案例一
比如说去商场买衣服,整个过程都包含测试;我们一层一层一家一家的逛,在外面看到了适合自己的衣服就进去看看,然后选颜色尺码试穿价格等然后付钱;
外观测试:初筛选,先进门店,先挑衣服,测试是否存在符合个人审美的衣服
试穿测试:选择尺码,测试试穿之后衣服对个人的外观是否有提升
⾯料测试:纯棉、涤纶、布料....等
价格测试:询价,在自己的心理预期以内购买衣服,交易完成
每一步都是生活中存在的步骤 ......
案例二
对某款购物软件进行测试
这时候就不需要去线下购买东西,我只需要点开这个app,比如我想买袜子或者裤子,在搜搜索框搜索内容就可以显示商品,就可以一点一点看,看中了点进去看详情等,最后下单;
启动测试:点击软件图标,测试软件是否可以正常打开(版本问题或者兼容性问题)
搜索测试:点击输入框,输入关键词,点击搜索(是否正常搜索)
商品测试:点击商品进入详情页
购物测试:点击购买下单成功
案例三
对⼀个JAVA程序进⾏测试
测试代码逻辑是否符合预期:
a=1,b=2,返回的c是否等于3
a=1,b=-2,返回的c是否等于-1
a=-1,b=2,返回的c是否等于1
a=-1,b=-2,返回的c是否等于-3
当前程序存在bug,除数不能为零 ......
由此可见,测试不仅在日常⽣活中以及学习中都处处可见。
为什么需要软件测试
企业为何需要招聘大量的测试人员呢?
招聘人员需要额外的花费但是对于企业来说他也是要控制成本,尽可能少的人完成最大的工作;
那么比如企业完成了一个游戏如果直接上线那么能更早的进行收益,但是为什么开发完成后还要测试人员进行测试,测试没问题才上线呢?
企业最终的目的是“盈利”,互联网企业借助软件/系统来跟用户交互从而获得盈利,也就是说企业的受众群体主要是广大的使用用户,而用户的使用感受将直接影响企业的盈利,若产品质量太差(闪退,功能质量,页面经常卡顿等)将导致大量用户的流失,所以企业非常重视测试。
一款好的并且用的体验感好的软件离不开测试人员。但是软件测试目的是为了我的软件投入使用带来更多的收益但是对于小企业来说他们的成本高预算少,如果再来招收测试人员那么就无法降本增效甚至带来危机,那么他们的软件可能功能简单,但是复杂的软件必须需要软件测试人员的参与
软件测试定义
软件测试就是验证软件产品特性(多方面如功能,性能,界面等)是否满足用户的需求。
测试的岗位有哪些![](https://i-blog.csdnimg.cn/direct/2bafb41849f1496fa6e597e441740ad6.png)
但是我们登录BOSS直聘的时候看到测试有很多种,其实测试是一个统称,相当于开发人员不管前端开发还是后端开发都叫做开发;然而我们在投递简历时,会看到各种各样的测试名称,形如:
不同的企业对于测试的命名不同,不管是测试工程师、功能测试、移动端测试、客⼾端测试等等都是测试岗位,性质要么是测试工程师,要么是测试开发工程师。
测试岗位主要分为以下两个方面
1. 软件测试开发工程师(简称测开)
工作重新为可测试性以及通用测试基础框架。编写单元测试框架和自动化测试框架。软件测试开发工程师关注质量提升和测试覆盖率。
其实工作重心是测试软件/业务,开发测试效率工具(自动化,性能测试,覆盖率...等) ;
测试工具一方面可以提高测试效率(让机器替人执行效率高)另一方面也可以提高测试质量; 测试工具是测试人员开发出来的,测试人员也需要进行后期的工具管理,因此效率工具不能代替测试人员;
这里的开发与后端开发不一样,后端开发指的是业务代码,他们俩的开发区别很大。对于测试人员来说是没有权限开发业务代码的。
2. 测试工程师
与软件测试开发工程师关系密切,但把用户放在第⼀位来思考。测试工程师组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试。
其实工作重心是业务测试,不用开发测试工具,对于纯测试工程师来说更多的是点点点的测试(模拟用户使用)
在大部分的中大厂,他们的测试岗位基本都是软件测试开发性质的。所以有的公司写了招聘软件测试工程师但是实际上是测开尤其是对于中大厂的招聘来说,只不过他们岗位名称是这样写的;
高频面试题
软件测试开发工程师和测试工程师的区别:
相同点: 1.都统称为测试⼈员 2.对产品质量负责,保障产品的质量
不同点: 测试开发比测试多“开发”二字,而这个开发并不是指业务开发,因为业务开发是开 发人员的主要职责,这里的开发指的是需要开发测试效率工具,通过效率工具来提升测试效率和测试质量,比如我们的自动化、性能测试等就属于效率工具。
软件测试和开发的区别
工作内容
开发人员:
绝大多数走开发岗位的人进入企业做的都是业务开发
1. 通过⼀些编程语言,如C,C++,C#,Java, Python,PHP实现软件的特性
2. 修改BUG
测试人员
走测试岗位的人进入企业做的就是业务测试
1. 编写测试用例,执行测试用例,发现软件的缺陷,验收缺陷...
2. 利用测试工具保障软件的质量
比如有个网站要新增一个个人信息栏,后端开发:新增一个接口(新增一个方法,方法里实现往数据库查询个人信息(底层查询操作已经实现好了,我们只需调用即可),然后将个人信息格式化返回) 测试人员:点击个人信息栏看是否跳转到相应的页面,个人信息展示的对不对
难易程度上
开发:
应届⽣要求掌握语言基础、开发框架、数据库、 数据结构、Linux等课程
在职人员还需掌握更多中间件如:Redis、 rabbitMQ、ES等
要求掌握以上技术并能运用在代码开发中
测试:
应届生要求掌握语言基础、开发框架、数据库、 数据结构、Linux等课程
掌握测试技能:测试概念、设计测试⽤例、执行测试等
在职人员还需掌握更多中间件如:Redis、 rabbitMQ、ES等
开发人员要写代码,测试人员要测试代码/程序得具备语言基础才能测试; 同样其他类似的测试人员也要具备。
总结:开发广度小(学的东西比较聚),专业度高。测试广度大(学的东西比较发散),专业度相对较低,大型互联网企业对测试人员的专业要求可能跟开发差不多。 甚至有的大厂对于测试人员的技术要求比开发人员更高,因为更希望产品的质量更好
工作环境
很多公司,测试人员和开发人员都是坐在一个办公楼层的不同区域(因为沟通比较频繁,前提是一个业务线),所以他们的工作环境,工作设备基本都是一样的(一台显示器和一台笔记本)。
薪水
对于中小企业来说测试薪水总体比研发低,自动化等专业测试和研发基本无差距。大厂研发测试薪资基本无差别
以下是从某网站根据提供的样本统计出来的软件测试和开发的平均校招薪资(仅供参考)。
其他不同
测试人员经常会进行测试动作,而开发人员进行进行调试动作,调试和测试是同⼀个含义吗?
维度 | 调试 | 测试 |
⽬的 | 调试的任务是定位并且解决程序中的问题(发现并解决已知的bug) | 测试的任务是发现程序中的缺陷(未知的bug) |
参与角色 | 主要由开发人员完成 | 测试主要是由测试人员和开发人员来执行, 黑盒(功能)测试 主要由测试人员完成、单元/集成测试主要是由开发人员执(比 如开发写了一个接口/方法,那么开发自己就要首先测试一下通 不通过;而一个大项目一般是由一个一个单元组成的; |
执行阶段 | 开发阶段 | 测试贯穿整个软件开发生命周期(开发前中后和后续操作) |
高频面试题
走测试岗位为什么还要学习开发知识?
1. 测试人员也需要编写代码,如自动化测试、性能测试、开发测试效率工具等。测试人员需要能够看懂代码、了解开发框架。
2. 学好开发知识能够提高软件测试质量。通过查看代码中数据的走向能够更好的从代码层面去发现问题。
优秀的测试人员具备的素质
综合能力(软素质)
沟通能力
测试工程师的沟通能力会直接影响工作开展的效率。良好的沟通能力是测试工程师获得更好发展 的“敲门砖”(面试、工作都需要沟通) 面试的时候,有些同学就存在明明知道是什么,却怎么都表达不出来或者表达不清楚,导致面试评价比较差。
比如我们发现bug了应该如何向开发人员描述bug,只有沟通好了才能解决问题;
快速学习能力
对不同的业务需求和功能的快速学习和理解能力:
未来我们都会经历跳槽,不同的公司,业务不⼀样,所以测试人员需要具备快速学习业务的能力
对于测试新技术和新方法的学习能力:
计算机行业发展迅速,每一个技术人员需要时刻保持一个学习新技术的能力,不断提升自己,从而适应业界的需求
对不同语言的快速学习能力:
大多同学在工作之前基本掌握⼀到两门语言,我们基本都掌握C、C++或者C、JAVA。 然后实际在工作中,可能需要接触其他的语言,比如PHP、GO、Python等。
开发能力
测试人员除了保障项目质量之外,也需要针对当前业务开发效率工具,来提升测试效率和质量。 如自动化、性能测试等就是效率工具。
文字能力
测试人员需要编写各项文档,如测试计划、测试用例、测试报告等等。
掌握自动化测试技术
自动化测试是中大厂必不可少的技术事务。
自动化测试技术在测试领域中占有举足轻重的地位,掌握自动化测试技术,可以将测试人员从大量重复性的手工劳动中解放出来,这样可以把更多的精力花在更多类型的测试上。
我们经常遇到有的软件隔段时间就要更新一次(新增或优化一些功能),历史功能不受影响的基础上增加新功能;那么新老功能都需要测试,那么每次更新迭代历史功能都需要手动测试一遍,耗时费力,而历史功能测试内容基本都是一样的,如果借助自动化来测试历史功能将极大的节省人力和时间;
浅浅认识一下自动化
经常听到自动化一词,到底什么是自动化呢?
在日常生活中,自动洗手液的出现,避免了人们按压瓶子动作,在疫情阶段使用自动洗手液有效减少了交叉感染的风险。
在农业上,自动洒水器的出现,大面积的土地也能够实现快速、均匀的洒水。
在交通上,交通灯的出现。使得交通有序进行,极大减少了堵车或其他事故的概率。
在测试中,我们常常会见到接口自动化、UI自动化(web自动化、移动端自动化),接口自动化能够自动的去请求接口并校验接口返回属性是否符合预期结果;UI自动化能够自动在界面或者移动端上模拟人的行为进行操作,并检查元素和操作等是否符合预期结果。
测试用例的设计能力
测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优秀测试用例。
如何提高测试用例设计的能力?
1.掌握设计测试用例的方法
2.阅读好的测试用例设计案例
3.多写多练,积累,总结
探索性思维
测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验,知识,直觉,进行系统的错误猜测和逻辑推理,整理和分析出更多有针对性的的测试关注点。探索性思维的质量取决于测试人员的经验。
软件测试人员只能极大程度上保证产品不会出现明显问题,但是并不能保证产品一定就没有问题!
⽣活中有很多要做的事情都需要人们具备探索性思维。 比如炒菜,油温的大小控制,火候大小的控制,调味品量的控制都非常考验厨师的探索性思维。炒的好那叫菜,炒的不好那就是放毒了......
兴趣
兴趣是就业择岗的重要因素之一,选择了但是仍然对个人的工作性质不感兴趣,可想而知,这样的选择也不会走的太远。
责任感和压力
责任感是任何工作的都需要的,对于测试工作者而言:
测试往往是产品质量的最后的把关者;由于测试工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品的质量是否合格;虽然在敏捷模型中团队中每个人都需要对产品质量负责,但是产品的测试质量是跟测试人员密切相关的。所以,责任感是最重要的测试必备素质之⼀。
压力,测试工作者,特别是属于互联网行业需要能够抗住各种压力。
高频面试题
为什么走测试岗位而不走开发岗位?
回答思路:从岗位工作性质分析+个人性格/爱好+个人职业规划三个方面阐述。
1. 个人兴趣爱好:从性格和兴趣出发,测试工作需要测试人员具备良好的耐心、细心,接触了试内容后对测试工作产生浓厚兴趣
2. 岗位性质:不管是测试还是测试开发都统称为测试人员,测试人员主要以保障项目测试质量为主,通过开发⼀些测试效率工具(比如自动化就是效能工具,除此之外还有内存泄漏工具等等)来提高测试效率。而软件开发主要以业务编码为主。
3. 个人职业规划:大学期间就树立了走测试方向的目标,今后将继续提高测试和开发能力,争取在测试领域做出⼀番有影响力的事务