本篇主要答疑一些关于 “软件测试 ”的问题,通过本文希望你可以用自己的话回答这样一个问题:“什么是软件测试?”
1、什么是软件测试?
概念:验证软件功能是否满足用户要求。
此概念包含两项,① 验证软件功能正确;② 发现软件缺陷。
再来想想:软件测试是不是就是找bug?软件测试就是证明软件不存在错误的过程。软件测试就是为了证明程序能够正确运行。
来看看其他经典定义:
《软件测试艺术》:为了发现错误而执行程序或者系统的过程。
《软件测试完全指南》:测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。
IEEE软件工程标准:使用人工或自动手段,来运行或测试某个系统的过程。目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
我们不可否认软件测试最基本的活动就是找bug,上面不同的定义只是说明了测试的目的以及如何来衡量测试是否成功。
2、测试与调试的区别
(1)目的不同:测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题;
(2)参与角色不同:测试由测试员和开发员执行,黑盒测试主要由测试员、单元/集成测试主要由开发员执行。调试仅由开发员完成。
(3)执行阶段不同:测试贯穿整个软件生命周期;调试只在开发阶段。
3、软件测试岗位
① 软件测试开发工程师(SET);是开发的角色,工作重心在可测试性及通用测试基础框架,关注质量提升和测试覆盖率。
② 测试工程师(TE);和上者关系密切,但把用户放在第一位考虑,组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试。
③ 软件开发测试工程师(SDET);常称为测试人员,负责高标准的测试和质量保证,需要编程能力。
④ 按对象分类:WEB测试工程师、APP测试工程师、游戏测试工程师、嵌入式测试工程师(需要深入学习Linux)
⑤ 按方式分类:手工测试、自动化测试
⑥ 按类型分类:功能测试、性能测试、安全测试等。
⑦ 按级别分类:初级、中级、高级、资深、组长、主管、经理、总监等。
⑧ 按参与分类:项目型测试员、职能型测试员。
4、测试和研发的区别
比较项 | 测试 | 研发 |
---|---|---|
广度 | 大 | 小 |
专业度 | 低 | 高 |
工作压力 | 常规下比研发轻松 | 敏捷模式下两者无异 |
技能要求 | 业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解 | 编程能力 |
薪资 | 中小型企业总体测试比研发低 | 自动化等专业领域或在大公司两者基本无差别 |
竞争 | 无论测试还是研发 | 人才都是底端泛滥,高端紧缺 |
5、优秀测试人员所需素质
-
思维方式
- 逆向思维:不走寻常路,开发盖房子,测试拆房子。例如:银行卡里存额取出,余额为0后,继续取出。
- 发散性思维:探求多个可能性。例如:一台地铁自动售票机,正向,逆向,边界,压力,性能,外观,支持线上支付,找零,硬币纸币,最大金额…
-
兴趣
- 想要去做的事情都应该充满兴趣,增加幸福感
-
性格
- 乐观、好奇心、成就感、责任感、敏感、求是创新、善于怀疑、踏实不浮躁、“杠精”、有批判性思维
-
能力
- 快速学习、沟通、文字、开发、贵在实践
-
学习内容
- 概念 — 基础 — 用例 — 进阶 — 管理 — 项目实践工具(禅道,持续集成,功能自动化,性能自动化)