【软件测试】第1章 认识测试
片头
嗨~小伙伴们,大家好!今天我们来学习软件测试第1章——认识测试,准备好了吗?咱们开始咯~
一、什么是测试?
测试在生活中处处可见。
1.1 生活中的测试场景
案例一
举一个日常生活中案例,商场买衣服,买衣服的整个过程中都伴随着测试行为
- 外观测试:挑选符合个人审美的衣服
- 试穿测试:选择尺码,去试衣间试穿
- 材质测试:考虑一下衣服是否透气等相关材质的考虑
- 价格测试:询问价格是否符合预期
案例二
对某款购物软件进行测试
- 启动测试:点击测试图标,测试软件是否可以正常打开
- 搜索测试:点击输入框,输入关键字,点击搜索
- 商品测试:点击商品进入详情页
- 购物测试:点击购买下单成功
案例三
对一个JAVA程序进行测试
private static int myDiv(int a, int b)
{return a/b;
}
测试代码逻辑是否符合预期:
- a = 1,b = 2,返回的 c 是否等于3
- a = 1,b = -2,返回的 c 是否等于-1
- a = -1,b = 2,返回的 c 是否等于1
- a = -1,b = -2,返回的 c 是否等于-3
由此可见,测试不仅在日常生活中以及学习中都处处可见。
1.2 为什么需要软件测试
企业为何需要招聘大量的测试人员呢?
企业的最终目的是"盈利",互联网企业借助软件/系统来跟用户交互从而获得盈利,也就是说企业的受众群体主要是广大的使用用户,而用户的使用感受将直接影响企业的盈利,若产品质量太差将导致大量用户的流失,所以企业非常重视测试。
1.3 软件测试的定义
软件测试就是验证软件产品特性是否满足用户的需求
二、测试的岗位有哪些
测试的岗位主要分为以下2个方面:
① 软件测试开发工程师
- 简称测开,工作重心为可测试性以及通用测试基础框架。编写单元测试框架和自动化测试框架。
- 软件测试开发工程师关注质量提升和测试覆盖率。
② 测试工程师
- 与软件测试开发工程师关系密切,但把用户放在第一位来思考。测试工程师组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试。
然而我们在投递简历时,会看到各种各样的测试名称,形如:
BOSS直聘网站提供的测试岗位名称:
不同的企业对于测试的命名不同,不管是测试工程师、功能测试、移动端测试、客户端测试等等都是测试岗位,性质要么是测试工程师,要么是测试开发工程师。
绝大多数中大厂他们的测试岗位基本上都是软件测试开发性质的,腾讯、阿里、字节....软件测试工程师(岗位名称这样写的,实际上做的是测开的工作)
高频面试题
Q1:软件测试开发工程师和测试工程师的区别
A1:
相同点:1、都统称为测试人员 2、对产品质量负责,保障产品的质量 3、工作重点都是业务测试
不同点:测试开发比测试多"开发"二字,而这个开发并不是指业务开发,因为业务开发是开发人员的主要职责。
这里的开发指的是需要开发测试效率工具,通过效率工具来提升测试效率和测试质量,比如:自动化测试、性能测试等就属于效率工具。
软件测试开发工程师 | 后端开发工程师 |
业务测试(测试软件/业务) 和 开发测试效率工具 | 开发业务代码 -> 比如:新增一个功能 |
Q2:效率工具能替代测试人员吗?
A2:效率工具是测试人员开发出来的,测试人员除了开发效率工具外,还需要管理效率工具。因此,效率工具不能替代测试人员。
补充:
Ⅰ小白进入公司流程:
(1)熟悉工作和测试流程
(2)通过业务测试熟练个人的测试能力‘
(3)掌握各种各样的工具提高测试质量和测试效率
(4)开始逐步学习开发各种效率工具
Ⅱ找工作/实习的时候,怎么确定自己找的是测开还是测试呢?
(1)中大厂基本上都是测开
(2)先拿offer,询问hr/面试官组内有哪些技术事务(测开)
Ⅲ场景再现
前端开发人员:增加一个入口"个人信息",每访问一个功能,都是前端发起一个请求
后端开发人员:新增加一个接口(新增一个方法,方法里实现往数据库查询个人信息,然后将个人信息格式化返回给前端)
测试人员:当这个界面增加了一个功能,测试这个功能是否正确。
点击"个人信息"按钮,看是否跳转到相应的页面。跳转到相应页面后,看个人信息展示的是否正确。
三、软件测试和开发的区别
3.1 工作内容
开发人员 | 测试人员 |
1、通过一些编程语言,如C,C++,C#,JAVA,Python,PHP实现软件的特性 | 1、编写测试用例,执行测试用例,发现软件的缺陷,验收缺陷... |
2、修改BUG | 2、利用测试工具保障软件的质量 |
3.2 难易程度上
开发 | 测试 |
应届生要求掌握语言基础、开发框架、数据库、数据结构、Linux等课程 | 应届生要求掌握语言基础、开发框架、数据库、数据结构、Linux等课程 |
在职人员还需要掌握更多中间件如:Redis、rabbitMQ、ES等 | 掌握测试技能:测试概念、设计测试用例、执行测试等 |
要求掌握以上技术并能运用在代码开发中 | 在职人员还需要掌握更多中间件如:Redis、rabbitMQ、ES等 |
总结:开发广度小,专业度高。测试广度大,专业度相对较低,大型互联网企业对测试人员的专业要求可能跟开发差不多。
3.3 工作环境
很多公司,测试人员和开发人员都是坐在一个办公楼层的不同区域,所以他们的工作环境,工作设备基本都是一样的。
同一个业务线的测试人员和开发人员,通常都是坐在一起的。因为测试人员和开发人员的沟通会比较频繁,入职后,企业会发放一台显示器和一台笔记本。
3.4 薪水
中小企业总体比研发低,自动化等专业测试和研发基本无差距。大厂研发测试薪资基本无差别。
3.5 其他不同
测试人员经常会进行测试动作,而开发人员经常进行调试动作,调试和测试是同一个含义吗?
维度 | 调试 | 测试 |
目的 | 调试的任务是定位并且解决程序中的问题 | 测试的任务是发现程序中的缺陷 |
参与角色 | 主要由开发人员完成 | 测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成,单元/集成测试主要是由开发人员执行 |
执行阶段 | 开发阶段 | 测试贯穿整个软件开发生命周期 |
高频面试题
Q1:走测试岗位为什么还要学习开发知识?
A1:更好的应对我们的测试工作。① 提高软件测试质量 ② 提升测试效率,虽然测试人员主要的工作就是业务测试,但我们也要看懂以及编写代码
四、优秀的软件测试人员具备的素质
4.1 综合能力
① 沟通能力
测试工程师的沟通能力会直接影响工作开展的效率,良好的沟通能力是测试工程师获得更好发展的"敲门砖"(面试、工作都需要沟通)
面试的时候,有些同学就存在明明知道是什么,却怎么都表达不出来或者表述不清楚,导致面试评价比较差。
② 快速学习能力
对不同的业务需求和功能的快速学习和理解能力
未来我们同学都会经历跳槽,不同的公司,业务不一样,所以测试人员需要具备快速学习业务的能力
对于测试新技术和新方法的学习能力
计算机行业发展迅速,每一个技术人员需要时刻保持一个学习新技术的能力,不断提升自己,从而适应业界的需求
对不同语言的快速学习能力
大多数同学在工作之前基本掌握一到两门语言,应届生基本都掌握C、C++或者C、JAVA,然而在实际工作中,可能需要接触其他的语言,比如:PHP、GO、Python等
③ 开发能力
测试人员除了保障项目质量之外,也需要针对当前业务开发效率工具,来提升测试效率和质量。如:自动化、性能测试等等就是效率工具
④ 文字能力
测试人员需要编写各项文档,如:测试计划、测试用例、测试报告等等。
4.2 掌握自动化测试技术
自动化测试技术在测试领域中占有举足轻重的地位,掌握自动化测试技术,可以将测试人员从大量重复性的手工劳动中解放出来,这样可以把更多的精力花在更多类型的测试上
浅浅认识一下自动化
经常听到自动化一词,到底什么是自动化呢?
在日常生活中,自动洗手液的出现,避免了人们按压瓶子动作,在疫情阶段使用自动洗手液有效减少了交叉感染的风险
在农业上,自动洒水器的出现,大面积的土地也能够实现快速、均匀的洒水
在交通上,交通灯的出现。使得交通有序进行,极大减少了堵车或其他事故的概率
在测试中,我们常常会见到接口自动化、UI自动化(web自动化、移动端自动化),接口自动化能够自动的去请求接口并校验接口返回属性是否符合预期结果;UI自动化能够自动在界面或者移动端上模拟人的行为进行操作,并检查元素和操作等是否符合预期结果
4.3 测试用例的设计能力
测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优秀测试用例。
如何提高测试用例设计的能力?
1、掌握设计测试用例的方法
2、阅读好的测试用例设计案例
3、多写多练,积累,总结
4.4 探索性思维
测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验,知识,直觉,进行系统的错误猜测和逻辑推理,整理和分析出更多有针对性的测试关注点。探索性思维的质量取决于测试人员的经验。
生活中有很多要做的事情都需要人们具备探索性思维。
比如:炒菜,油温的大小控制,火候大小的控制,调味品量的控制都非常考验厨师的探索性思维。炒的好那叫菜,炒的不好那就是放毒了.....
4.5 兴趣
兴趣是就业择岗的重要因素之一,选择了但仍然对个人的工作性质不感兴趣,可想而知,这样的选择也不会走的太远
4.6 责任感和压力
责任感是任何工作都需要的,对于测试工作者而言:
测试往往是产品质量的最后把关者;由于测试工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品的质量是否合格;虽然在敏捷模型中团队中每个人都需要对产品质量负责,但是产品的测试质量是跟测试人员密切相关的。所以,责任感是最重要的测试必备素质之一。
压力,测试工作者,特别是属于互联网行业需要能够抗住各种压力。
高频面试题
Q1:为什么走测试岗位而不走开发岗位?
A1:回答思路:从岗位工作性质分析 + 个人性格/爱好 + 个人职业规划,这3个方面阐述
(1)个人兴趣爱好:从性格和兴趣出发,测试工作需要测试人员具备良好的耐心、细心,接触了测试内容后对测试工作产生浓厚兴趣
(2)岗位性质:不管是测试还是测试开发都统称为测试人员,测试人员主要以保障项目测试质量为主,通过开发一些测试效率工具(比如:我们学的自动化就是效能工具,除此之外还有我们课件上写的内存泄漏工具等等)来提高测试效率。而软件开发主要以业务编码为主。
(3)个人职业规划:大学期间就树立了走测试方向的目标,今后将继续提高测试和开发能力,争取在测试领域做出一番有影响力的事务
片尾
今天我们学习了【软件测试】第一章——认识测试,希望看完这篇文章对小伙伴们有所帮助!!!
求点赞收藏加关注!!!
谢谢大家!!!