一、软件与软件缺陷:
1、软件定义:
软件是计算机系统中与硬件相互依存的一部分,包括程序、数据与其相关文档的完整结合,用公式表示如下:
软件 = 程序 + 数据 + 文档
程序:按事先设计的功能和性能要求执行的指令集合。
数据:使程序能够适当地操作信息的数据结构。
文档:软件开发维护和使用过程中产生的图文材料。
2、软件缺陷案例:
(1)、英特尔奔腾浮点除法缺陷,拿出4亿多美元来支付所有维护费用;
(2)、火星探测飞船某个数据位在未着地时就意外更改,导致推进器在未着陆时就被关闭,飞船坠毁;
(3)、爱国者导弹防御系统时钟的一个很小的计时错误积累起来到14小时后,跟踪系统不再准确,导致28名士兵死亡;
(4)、千年虫问题导致损失已达数千亿美元;
(5)、闰年虫导致闰年2月29日1500多辆出租车时间性锁表故障;
(6)、12306春运崩溃······
(7)、Windows系统缺陷:
Windows系统记事本中输入"联通"和"元":
保存并关闭文件,之后再打开,会发现乱码:
还有Word文档中的缺陷=rand (200, 99)或=rand(50,50)回车造成刷页等问题。
3、软件缺陷定义:
(1)、产品内部:软件产品开发或维护过程中所存在的错误、毛病等各种问题;
(2)、产品外部:系统所需要实现的某种功能的失效或违背。
4、软件五大缺陷规则:
(1)、功能缺失:软件未实现产品说明书要求的功能;
(2)、错误缺陷:软件出现了产品说明书指明不应该出现的错误;
(3)、功能多余:软件实现了产品说明书未提到的功能;
(4)、需求遗漏:软件未实现产品说明书虽未明确提及但应该实现的目标;
(5)、用户体验:软件难以理解,不易使用,运行缓慢······等不佳体验。
二、软件测试:
1、软件测试概念:
使用人工或自动化手段,来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
2、软件测试目的:
软件中哪怕是极其细微的缺陷,也有可能引发巨大的问题,因此在软件投入运行之前,应该尽可能多地发现软件中的错误。软件测试是对软件规格说明、设计和编码的最后复审,是软件质量保证的关键步骤。
软件测试的目的,并不是让一个软件完美。没有任何软件可以避免所有缺陷,我们只能通过软件测试,来尽量发现和解决缺陷,使软件更完善。
(1)、测试是程序的执行过程,目的在于发现错误,不能证明程序的正确性,仅限于处理有限种的情况。
(2)、检查系统是否满足需求,这也是测试的期望目标。
(3)、一个好的测试用例在于发现还未曾发现的错误,成功的测试是发现了错误的测试。
3、软件测试分类:
(1)、黑盒测试
(2)、白盒测试
(3)、单元测试
(4)、集成测试
(5)、系统测试
(6)、软件自动化测试
4、软件测试关键点:
如何合理地设计测试用例,在设计测试用例时,要着重考虑那些易于发现程序错误的方法策略与具体数据。
二、相关问题:
1、软件产品规格说明书是软件缺陷存在最多的地方,主要原因有哪几种?
(1)、软件产品还没有设计开发,只能完全靠想象去描述,导致软件中的特性不够清晰。
(2)、需求变化不一致性,用户的需求会不断变化,若在说明书中没有得到正确描述,容易引起矛盾。
(3)、整个开发队伍中缺乏充分沟通,设计师、项目经理和开发人员得到的信息差异过多。
(4)、不够重视规格说明书。
2、单元测试、系统测试、集成测试的区别:
不同的测试阶段,针对的测试问题是不一样的。
(1)、单元测试:程序内部代码和结构问题。
(2)、集成测试:模块和模块之间的接口和参数传递规则的问题。
(3)、系统测试:整个系统,模拟用户最终使用时可能出现的问题。