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