第6章系统测试、实施与维护 6,1软件测试 6,2调试 6.3系统实施 6,4系统维护 6.5实验五 BACK
第6章 系统测试、实施与维护 6.1 软 件 测 试 6.2 调 试 6.3 系 统 实 施 6.4 系 统 维 护 6.5 实 验 五
61软件测试 611测试的基本概念 软件测试是对软件计划、软件设计、软件编码进行査错和纠错的活 动。测试的目的是为了找出软件开发过程中各个阶段的错误,以便分析 错误的性质和确定错误的位置,并纠正错误。 软件测试伴随着程序设计的出现而出现,随着软件技术的发展,人 们对软件测试的认识也在不断加深。通常人们认为“软件测试是为了证 明软件是正确的”。实际上这种认识是错误的。1983年,IEE提出的软 件工程标准术语中软件测试的定义是:“使用人工或自动手段来运行或 测定某个系统的过程,其目的在于检验它是否满足规定的需求,或弄清 预期结果与实际结果之间的差别”。 G.J. Myers则认为“程序测试是为了 发现错误而执行程序的过程
6.1 软 件 测 试 6.1.1 测试的基本概念 软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活 动。测试的目的是为了找出软件开发过程中各个阶段的错误,以便分析 错误的性质和确定错误的位置,并纠正错误。 软件测试伴随着程序设计的出现而出现,随着软件技术的发展,人 们对软件测试的认识也在不断加深。通常人们认为“软件测试是为了证 明软件是正确的”。实际上这种认识是错误的。1983年,IEEE提出的软 件工程标准术语中软件测试的定义是:“使用人工或自动手段来运行或 测定某个系统的过程,其目的在于检验它是否满足规定的需求,或弄清 预期结果与实际结果之间的差别”。G.J.Myers则认为“程序测试是为了 发现错误而执行程序的过程
上面的两种定义有不同的强调方面,关于软件测试的概念,我们 要注意以下两点: (1)软件测试是为了发现程序中的错误而不是证明程序的正确性。 按照 Myers的观点,“成功的测试是发现了至今尚未发现的错误的测 试”。当然测试的目的不仅仅是发现错误,还包含检验、评价等。 (2)软件测试方法不仅仅是执行程序,也包括人工方法。事实上, 人工测试在某些测试阶段可以发现大部分的错误
上面的两种定义有不同的强调方面,关于软件测试的概念,我们 要注意以下两点: (1) 软件测试是为了发现程序中的错误而不是证明程序的正确性。 按照Myers的观点, “成功的测试是发现了至今尚未发现的错误的测 试”。当然测试的目的不仅仅是发现错误,还包含检验、评价等。 (2) 软件测试方法不仅仅是执行程序,也包括人工方法。事实上, 人工测试在某些测试阶段可以发现大部分的错误
612测试的基本原则 要高质量地完成测试工作,找出软件中的错误,应该遵守下面的 些基本原则: (1)测试队伍与开发队伍应分别建立。 开发和测试工作两者在思想和方法上都是不一样的,为了保证测试 的质量,应分别建立开发和测试队伍。开发工作是建设性的,而在测试 阶段,人们设计出一系列的输入数据(称为测试用例),目的是为了 “破坏”已经建造好的软件。就像给硬件产品做髙低温试验、震动试验、 破坏性试验一样。而且一般程序编写者往往认为自己编写的程序是正确 的,要他们找出自己程序中的错误是十分困难的
6.1.2 测试的基本原则 要高质量地完成测试工作,找出软件中的错误,应该遵守下面的一 些基本原则: (1) 测试队伍与开发队伍应分别建立。 开发和测试工作两者在思想和方法上都是不一样的,为了保证测试 的质量,应分别建立开发和测试队伍。开发工作是建设性的,而在测试 阶段,人们设计出一系列的输入数据(称为测试用例),目的是为了 “破坏”已经建造好的软件。就像给硬件产品做高低温试验、震动试验、 破坏性试验一样。而且一般程序编写者往往认为自己编写的程序是正确 的,要他们找出自己程序中的错误是十分困难的
(2)设计测试用例时,要给出测试的预期结果。 个测试用例应由两部分组成: ①对程序进行测试的一组输入数据的描述; ②由这一组输入数据所产生的程序的预期输出结果的描述 预期输出结果不一定是精确的输出结果,对于一些复杂的计算, 人工计算结果可能需要很大的工作量,可以给出一个对输出结果有效 范围的描述。 (3)设计测试用例时,应包括对有效的和期望的输入条件的测试, 也应包括对无效的和非期望的输入条件的测试 个程序不仅当输入合法时能正确运行,而且当有非法输入时, 应该能够拒绝这些非法输入,并给出适当的提示信息
(2) 设计测试用例时,要给出测试的预期结果。 一个测试用例应由两部分组成: ① 对程序进行测试的一组输入数据的描述; ② 由这一组输入数据所产生的程序的预期输出结果的描述。 预期输出结果不一定是精确的输出结果,对于一些复杂的计算, 人工计算结果可能需要很大的工作量,可以给出一个对输出结果有效 范围的描述。 (3) 设计测试用例时,应包括对有效的和期望的输入条件的测试, 也应包括对无效的和非期望的输入条件的测试。 一个程序不仅当输入合法时能正确运行,而且当有非法输入时, 应该能够拒绝这些非法输入,并给出适当的提示信息