一、软件测试基本概念
1.什么是软件测试
(1)广义的概念:指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认;
(2)狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致;
(3)软件测试通常包括验证(verification)和确认(validation):
验证指保证软件正确的实现了某一特定功能的一系列活动;
确认指的是保证软件的实现满足了用户需求的一系列活动;
2.软件测试的目的
(1)测试的目的就是发现软件中的各种缺陷;
(2)测试只能证明软件存在缺陷,不能证明软件不存在缺陷;
(3)测试可以使软件中缺陷降低到一定程度,而不是彻底消灭;
(4)以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量;
3.测试的目标
(1)最终目的是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正:
确保软件完成了它所承诺或公布的功能;
确保软件满足性能的要求;
确保软件是健壮的和适应用户环境的;
(2)为软件的质量评估提供依据;
(3)为软件质量改进和管理提供帮助;
4.软件测试的原则
(1)Good-enough: 一种权衡投入/产出比的原则;
(2)保证测试的覆盖程度,但穷举测试是不可能的;
(3)所有的测试都应追溯到用户需求;
(4)越早测试越好,测试过程与开发过程应是相结合的;
(5)测试的规模由小而大,从单元测试到系统测试;
(6)为了尽可能地发现错误,应该由独立的第三方来测试;
(7)不能为了便于测试擅自修改程序;
(8)既应该测试软件该做什么也应该测试软件不该做什么;
5.软件测试的质量
(1)软件测试可以发现以下软件缺陷:
软件实现的功能不正确(发现第一类软件缺陷的过程 --“验证”);
“缺少”:软件没有实现某项功能(发现后两类软件缺陷的过程 --“确认”);
“多余”,软件实现的某项功能在需求中没有定义(发现后两类软件缺陷的过程 --“确认”);
(2)软件测试本身的质量在于:
发现软件缺陷并能区分其类型;
提供关于软件质量和开发过程质量的信息;
6.软件测试的度量
(1)测试覆盖率:有多少需求、代码已经被测试了;
(2)缺陷发现率:缺陷是何时被发现,并且有多少缺陷已经被发现。缺陷可以根据严重性来分类。需记录:缺陷数目、缺陷的严重性;
(3)测试成功率:有多少测试已经通过了,并且有多少是运行正常的?需记录:已通过的测试用例的数目、可利用的测试用例的数目