软件测试--概念篇

本文介绍下软件测试的基本概念,以使大家对软件测试行业有一个基本的了解。

主要分三部分介绍:发展综述、职业发展、核心技能。

第一部分:发展综述

1、BUG/Defect的由来

“Bug”的创始人赫柏的报告格蕾丝.郝柏Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1945年的一天,赫柏对Harvard Mark II设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。所以在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。

2、软件缺陷事件回顾:

事件1:WINDOWS操作系统蓝屏--多版本之间的兼容性 ;

事件2:迪士尼的狮子王CD光盘不能使用--PC机器之间的兼容性 ;

事件3:Android 5.0臭名昭著的内存泄露Bug--性能测试的重要性;

事件4:HP100款笔记本电脑软件暴露严重漏洞--安全测试的重要性;

事件5:美F-22机群系统瘫痪,软件质量威胁国家安全 ;

事件6:一个 bug ,45分钟损失了 4.65 亿美金,直接导致破产;

事件7:致命的辐射治疗,医疗设备电力软件的Bug,3人直接死亡;

事件8:一架吉努克型直升飞机坠毁,29名乘客全部罹难;

事件9:2011 年温州7.23 动车事故-- 由于温州南站信号设备在设计上存在严重缺陷,遭雷击发生故障后,导致本应显示为红灯的区间信号机错误显示为绿灯;

事件10:一触即发的第三次世界大战: 1980年,北美防空联合司令部曾报告称美国遭受导弹袭击,后来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑故障问题引发的误报;1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告诉他这是误报,后来事实证明的确是误报;

3、软件测试简史

国外软件测试发展简史介绍:

1968,软件工程概念诞生;测试也逐步发展;1975,测试先驱在IEEE发表了软件数据选择的原理,将软件测试定义为一种研究方向,此时软件测试被定义为“证明软件的工作是正确”的活动,理念为“证实”;1979,软件测试艺术一书,认为测试是“发现错误而执行的活动”,理念为“证伪”;1983,软件测试完全指南指出“测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量”,测试应该走向前端,进行缺陷预防;1996,提出“测试成熟度模型”“测试能力成熟度模型”等;2002,测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期的过程;

国内软件测试发展简史介绍:

1、第一代测试人员很大一部分是直接从软件程序员转岗的,有一定的编码基础,对系统的实现细节理解深入;2、校园招聘中学生对于测试的岗位非常模糊,有些被动选择做测试;软件管理认为测试就是找BUG,不理解测试策略、测试设计等的意义;3、软件测试入门简单,但是对整个系统有深入的把握,软件测试比开发更难深入;中国软件测试人员经验缺乏,大部分为0-3年;

4、软件测试行业对比

谷歌:SET,帮助开发更快更好的测试;帮助产品更好地采集使用信息和用户反馈;安全性、可靠性、性能等专项测试;TE,重点评估对用户的影响及软件产品整体目标上的风险;

微软:SDET,保证质量;提升研发效率;

腾讯:业务上线之前尽可能地发现导致商业目标无法达成的缺陷;独立的体验测试团队;QQ平台很传统;

华为:保证质量;交付;公司平台的流程、工具、技术更新;

第二部分:职业发展

1、技术发展方向

软件测试主要分为管理和技术两个大方向。管理类职位较少,比重也较低,对管理感兴趣的同学可以考虑,另外也需要一定的机会。技术类发展方向多样:产品测试专家/专项测试专家/交付测试工程师等。

详细信息看下图所示:

2、职业发展方向

由于软件测试人员的职业特点,接触的东西非常广且全,非常有利于职业的转型和发展。

从测试职业来看,可以有:测试开发、专项测试、质量管理、产品交付等;

从工作类别来看,可以转型的方向有:开发、产品、售前/售后、其它(市场/销售/咨询等)等

从工作趋向来看,可以转型的方向有:测试创业(围绕测试行业的创业,如测试培训、测试咨询、测试技术类公司等)、跨行测试(比如从传统公司到互联网、银行、AI智能等)、自由创业(与测试不是强相关的创业,科技行业/餐饮行业/零售业等)、自由独立(财务自由)等

第三部分:核心技能

1、软件测试的核心是什么?

常见的有如下一些观点:

观点1、测试用例是测试核心?

观点2、测试策略是测试核心?

观点3、自动化测试和工具是测试核心?

观点4、用户需求及验收标准是测试核心?

观点5、手工测试是测试的核心?

这些观点都是仁者见仁、智者见智,任何东西都没有太绝对的。就我的理解来看,我比较倾向于观点2,也就是说测试策略是软件测试的核心。

我认为软件测试的核心原则就是:合理调度和分配有限的资源,保证正确的时间做正确的事,进行“刚刚好”的测试,最大程度保证产品质量。

2、软件测试的价值是什么?

借用”软件测试价值提升之路“一书,并结合自己的理解。我认为软件测试分为三个阶段:

起点:打破思路、匹配业务、面向商业、问题改进;

测试人员要把目光放在产品的商业成功上,面向服务用户,结合业务需求,打破常规思路,以“问题”为出发点,不断的使得开发流程体系持续改进和提高,从而推进产品质量的不断提高,促进企业在商业和社会上的成功。

飞跃:拦截缺陷、提供数据、过程可控、基本价值;

测试人员要把拦截软件缺陷、监控测试过程、提供测试数据作为测试工作的三大“法宝”,这也是测试的基本价值,也是我们必须要守护的领地。

升华:质量屏障、交付先锋、额外价值、拓展价值;

测试人员除了守护自己领地之外,还能做非常多的额外工作,以拓展测试人员的价值,我们可以是质量的屏障,可以是产品交付的先锋,可以是公司体系流程建设的推进者和改革者。一切的一切都建立在测试人员要做好自己的本职工作,同时随时做好准备,扩充自己的技能包,迎接更大的困难和挑战,为企业不断服务并做出更大的贡献。

3、软件测试的核心能力

想做好软件测试,确实需要一些能力,如下列举了一些核心的要求:

技能包1、业务知识快速学习能力;

技能包2、测试用例的编写和设计;

技能包3、自动化测试及编程基础;

技能包4、测试的基本理论与知识;

技能包5、测试工具的使用与开发;

技能包6、测试策略的制定与实施;

技能包7、解决问题的思路及沟通;

技能包8、自我的测试体系及模型;

技能包9、全面的质量分析及把控;

技能包10、仔细耐心认真踏实勤奋;

……

希望大家不断实践、不断提高、不断总结,提高软件测试的能力。

猜你喜欢

转载自blog.csdn.net/zimingzim/article/details/81582902