一、软件
软件:程序、数据、文档
软件分类:
(1)按层次划分:系统软件(与硬件最密切)、应用软件
(2)按照组织划分:商业软件、开源软件
(3)按结构划分:单机软件和分布式软件
二、软件缺陷
软件缺陷的由来
【bug】找出电脑程序第一个bug的女程序员Grace Hopper
【Defect】
概念:软件未实现产品说明书要求的功能,出现了产品说明书指明不应该出现的功能,软件实现了产品说明书未提到的功能,软件未实现产品说明书虽未明确提及但应该实现的目标
软件难以理解、不易使用、运行缓慢或者(从测试角度看)最终用户会认为不好
所有不满足需求或超出需求的都是缺陷
没有不存在的缺陷软件,只有迄今为止尚未发现的缺陷
三、软件测试
计算机起源于1945
软件测试起源于上世纪70年代中期
软件测试的定义和目的:
定义:
使用技术手段验证软件是否满足使用需求
(1)正向思维的定义
出发点:使自己确信产品能够正常工作的评价一个程序和系统的特性或能力,并确定它是否能达到期望结果,软件测试是以此为目的的任何行为。
(2)反向思维的定义
出发点:测试是为发下错误而执行一个程序或者系统的过程。
怀疑一切
测试是为了证明程序有错,而不是证明程序无错误
一个好的测试用例在于发现以前未发现的错误
一个成功的测试是发现了以前未发现的错误的测试
(3)IEEE定义的软件测试
IEEE:国际电子电气工程师协会
在规定条件下运行系统或构件过程:观察和记录结果,并对系统或构建的某些方面给出评价,
分析软件项目过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性
(4)广义软件测试的定义
对软件形成过程所有的工作产品(包括程序以及相关文档)进行测试,而不仅仅是对程序的运行进行测试
确认(Validation):证实功能是否被实现
验证(Verification):证实指定的需求是否满足
目的:
1.以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的的软件错误和缺陷造成的隐患带来的商业风险
2.同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误
3.采用更加高效的测试管理手段,提高软件效率和软件产品质量
四、测试和调试
区别:
测试 | 调试 | |
---|---|---|
主体 | 测试人员 | 开发 |
目标 | 找bug | 将错误修改正确 |
方法 | 等价类、边界值… | 程序和逻辑算法 |
思路 | 反向思维 | 正向思维 |
测试是从已知条件开始,使用预先定义的过程,并且有预知结果;
调试是从未知的条件开始,结束的过程可能不可预计。