软件的集成测试工作最好由( 不属于该软件开发组的软件设计人员)承担,以提高集成测试的效果。
A.该软件的设计人员。
B.该软件开发组的负责人。
C.该软件的编程人员。
D.不属于该软件开发组的软件设计人员。
正确答案选D。
集成测试也称组装测试、联合测试、子系统测试或部件测试。在单元测试的基础上,将所有模块按照概要设计要求(如根据结构)组装成子系统或系统之后,才能进行集成测试。也就是说,在集成测试之前,单元测试已经完成,并且集成测试所使用的对象应当是已经经过单元测试的单元。
如果不经过单元测试,那么集成测试的效果将受到影响,并且成本会更高。如前所述,单元测试和集成测试所关注的范围是不同的,因此行纯它们在发现的问题集合上包含了不相交的区域,不能使用单元测试来替代集成测试,反之也一样。
集成测试与软件开发的概要设计阶段相对应,软件概要设计中关于整个系统的体系结构是集成测试的输入基础。体系结构是把一个渣带歼大的系统分成可以管理的和可实现的组件或子系统的结构。Booch认为集成是面向对象开发中最关键的活动。其实即使在结构化设计中,集成也是同样重要的。
集成测试与构架设计之间具有相互的依赖性,如果构架的设计不明确,集成测试的设计将无法很好地完成。同样,集成测试可以用来发现构架设计中的错误、遗漏和二义性问题,包括如冲前期的验证活动和后期的确认测试中的问题。
为什么要进行单元测试? 单元测试保证局部代码的质量 单元测试在隔离的前提下,分别对各个代码单元进行测试,能够达到其他测试不可能达到的测试完整性,从而保证了局部代码的质量。只有局部代码的质量得到了保证,软件产品的质量才可能得到保证。 单元测试改良项目代码的整体结构 要对代码进行单元测试,最起码的前提是代码能够隔离,也就是说,要具有一定的可测性,因此,单元测试是一种有效的约束机制,这种机制将有效地改良代码的整体结构。例如,如果把业务代码直接写在界面类中,将很难进行单元测试,随意的不合理的紧耦合也会造成难于测试,单元测试使这些不好的特性得于及时发现,从而很容易进行修正。可测性是高质量代码的首要特性,不具有可测性,也就无法衡量代码的正确性,有了可测性,也就基本上保证了代码的可扩展性、可复用性。 单元测试降低测试、维护升级的成本 错误越早发现,修复的代价越小,另一方面,如果代码经过了充分的单元测试,集成测试和系统测试就只需要关注设计方面的问题。自动回归测试也大量降低升级维护成本迹樱。 使开发过程适应频繁变化的需求 单元测试自然地使开发流程变得“敏捷”,这是因为,整体结构良好的代码具有较好的可扩展性,自动回归测试又能保证修改不会引入新的错误,因此可以适应频繁变动的需求,降低系统分析、架构设计和后期测试的压力。 单元测试有助于提升程序员的能力 对程序员来说姿庆丛,单元测试有利于养成缜密的思维习惯,及提高设计能力。 由谁进行测试?开发部门还是测试部门? 应该由开发部门进行单元测试! 由测试部门进行单元测试的问题 代价高:反复的重新理解代码需要大量的时间,反复的沟通也需要大量的成本。 人手不足:进行单元测试的人员需要具备编码能力,很多软件企业的测试部门都没有足够的人手。 耽误了测试部门对其他测试的准备工作:编码阶段,测试部门要为集成测试、系统测试等做好准备,如果测试部门陷在单元测试的“泥潭”里,很可能影响这些准备工作。 由开发部门进行单元测试的问题 担心影响开发进度:这是现实问题,但自动化的单元测试工具可以解决这个问题。 程序员不习惯做单元测试:这种习惯是可以理解的,但并不难改变,实际上,程序员写程序时都是要进行测试调试的,只不过通常比较零散和随意而已。 测试自己编写的代码,难于保证测试的效果:测试自己写的代码,通常会只测试正常的输入,因此难于保证测试的完整性,但自动化的单元测试工具,可以统计白盒覆盖,甚至提供用于找出遗漏的测试用例的工具,达到很高的测试完整性。只要达到了足够的测试完整性,那么,无论谁测试,效果都是一样的。 无论由哪个部门做单元测试,都要面对一些问题,但开发部门所面对的问题可以借助工具来解决,而由测试部门进行单元测试,要么无法真正实施,要么代价昂贵。 由测试部门进行单元测试为什么成本昂贵? 需多次重复理解程序 测试人员进行单元测试时必须理解程序功能甚至代码逻辑;充分的单元测试通常会发现很多细小的错误,程序员修改代码时,又要再次理解程序。理解程序是很耗费时间的。 反复沟通需要大量时间成本 单元测试发现的错误一般是小Bug,但数量可能很多,修改错误一般由程序员进行,测试人员还要确认,这些反复沟通也需要很多的时间。 不利于发挥单元测试对代码结构的约束机制 如果等编码基本完成再由测试部门进行单元测试,也就不能及时发挥单元测试对代码整体结构的约束效果,测试部门拿到代码时,往往会发现难于测试。 耽误测试部门对其他测试的准备工作: 编码阶段,测试部门要为集成测试、系统测试等做好准备,如果测试部门陷在单元测试的“泥潭”里,很可能影响这些准备工作。 基于以上理由,即使测试部门人手充裕,仅仅从效益来考虑,也不应该由测试部门进行单元测试。如果测试部门本来就人力不充裕(进行单元测试的人员需具备编码能力),勉强由测试部门进行单元测试,结果往往是----没有结果。 由开发部门进行单元测试能保证测试效果吗? 程序员测试自己编写的代码,往往只考虑“正常状况”,这当然会影响测试效果。但如果所用的单元测试工具能够统计各种白盒覆盖率,就能检查测试效果。当然,只做到这一点还是不够的,因为白盒覆盖具有逾后逾难的特点,达到一定的覆盖率后,覆盖率的提升会很困难。如果测试工具功能足够强大,能提供工具帮助用户快速地设计测试用例,达到完整的白盒覆盖,那么测试效果就能得到完全的差扰保证。 实际上,如果没有充分的统计数据,没有达到足够的测试完整性,那么由谁做单元测试,效果都不能保证。 进行单元测试,关键是要达到比较高的输入覆盖,这样,无论由谁测试,效果都是一样的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)