软件测试

软件测试基础

在这里插入图片描述

软件的定义

软件的三要素是:数据、程序、文档

数据:数据是使程序能够正常操纵信息的数据结构(软件就是处理的数据)
程序:程序是按照事先设计的功能和性能要求执行的指令序列
文档:文档是与程序开发维护和使用有关的各种图文资料(就是说明书一样的东西)
软件危机 -软件工程
在20世纪40年代,每个人都是独立的写自己的代码,这时候软件的发展就像我们在原始社会一样(有西方炎帝部落,北方黄帝部落,东方太皞部落和南方九黎部落),每个部落都有它自己的运作方式。设计软件就等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。
在这里插入图片描述
20世纪60年代到了(圈重点,矛盾要来了!),60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。就像当初秦统一天下之前的六国,货币、语言、文字、法律都不一样,肯定老是打仗啊。然后,大家就商量着,还是要合在一起呀!
于是1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。Fritz Bauer在会议上首次提出“软件工程”概念。
在这里插入图片描述
“千呼万唤始出来”, 最终官方定义也出现了,1983年美国《IEEE软件工程标准术语》的定义为:软件工程是开发、运行、维护和修复软件的系统方法,其中“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。

软件工程的三要素是:方法、工具和过程

方法:将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和 维护,即将工程化应用于软件:
• 项目计划与估算
• 需求分析
• 数据结构
• 总体设计
• 编码、测试与维护等
工具:软件工具为工程方法提供了自动或半自动的软件支撑环境:
• 软件工具
• 软件支撑环境
• 计算机辅助软件程(CASE)等
过程:将软件工程方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的:
• 方法使用的顺序
• 需交付的文档
• 变更管理
• 里程碑管理等
软件工程-软件过程模型
瀑布模型:
在这里插入图片描述
螺旋迭代模型:
在这里插入图片描述

软件测试

软件测试狭义定义
正向思维代表:Bill Hetzel博士
➢ 1973年他首先给出软件测试的定义:测试就是建立一种信心,确信程序能够按期望的设想进行
➢ 1983年他又将软件测试定义修改为:评价一个程序和系统的特性或能力,并确定它是否达到期望的结果。软件测试就是以此为目的的任何行为
反向思维代表:Glenford J. Myers
➢ 1979年,他给出了对软件测试的定义:“测试是为发现错误而执行一个程序或者系统的过程。”
➢ Myers还提出了三个重要观点:
❖ 测试是为了证明程序有错,而不是证明程序无错误。
❖ 一个好的测试用例在于它能发现以前未发现的错误。
❖ 一个成功的测试是发现了以前未发现的错误的测试。
软件测试广义定义
软件测试:是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验(Verification)和确认(Validation)的活动过程。其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。
正确认识“验证”的相对有限性和“确认”的相对无限性!
软件测试原则
1、完全测试程序是不可能的
输入量太大、输出结果多、软件实现途径太多、软件说明书没有客观标准
2、过多、过少测试都是有风险的
过度测试,费用将大幅增加,但遗留缺陷并不会显著下降。过少测试投入或者错误地确定测试范围,费用降低,但同时会漏掉大量软件缺陷。
3、测试无法发现所有潜伏的缺陷
希望软件测试环节发现所有问题的要求是极其不合理的!
4、并非所有软件缺陷都能修复
没有足够的时间(必须保证按时完成);不算真正的软件缺陷修复的风险太大不值得修复
5、是有一定特点规范的操作集合
应严格制定并执行测试计划,排除测试的随意性。妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便
6、 测试尽早介入
在软件或系统开发生命周期中,测试活动应该尽可能早的介入,并且应该将关注点放在已经定义的测试目标上
7、 80-20原则
80%的缺陷,分布在20%的模块里面;一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug,而系统测试又能找出其余Bug中的80%,最后的5%的Bug可能只有在用户的大范围、长时间使用后才会曝露出来。因为测试只能够保证尽可能多地发现错误,无法保证能够发现所有的错误。
8、 缺陷集群性 (Myers提出)
如果你在一个软件模块里发现了几十个缺陷,你应该高兴还是郁闷呢?
实践证明:如果你在一个软件模块里面发现了较多的缺陷,那么在这个模块可能会隐藏着更多的缺陷。
软件测试的目的
1)软件测试是为了发现错误而执行程序的过程
2)测试是为了证明程序有错,而不是证明程序无错
3)一个成功的测试是发现了至今未发现的错误的测试
4)为软件质量测量、评价及风险控制提供依据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值