有许多主要元素需要使产品测试清晰无误。每一个元素都有其特定的效用,在软件测试时有很大的帮助,并尽可能地按照SRS文件提供预期功能。存根和驱动是两个这样的元素,在测试中起着非常关键的作用;它们取代了尚未开发的模块,但在测试其他模块的预期功能和特点时仍然需要。

存根和驱动

存根和驱动被认为是相当于待办模块的元素,如果模块处于开发阶段、缺失或尚未开发,可以被替换,这样就可以满足这些模块的需要。驱动程序和存根模拟特征和功能,并有能力提供模块所能提供的功能。这减少了测试中无用的延迟,使测试过程更快。

存根主要用于自上而下的集成测试,而驱动则用于自下而上的集成测试,从而提高测试过程的效率。

存根

存根是由软件开发人员开发的,如果相应的模块没有开发,在开发阶段缺失,或者在自上而下的模块测试中目前不可用,就用它们来代替模块。一个存根模拟的模块具有不可用模块的所有功能。当需要较低级别的模块但目前不可用时,就会使用存根。

存根根据它们的作用分为四个基本类别。

显示跟踪的消息。
显示显示的消息(如果有的话)。
返回模块所使用的相应值。
返回测试模块所选择的参数(参数)的值。

驱动程序

驱动程序的作用与存根相同,但驱动程序用于自下而上的集成测试,也比存根更复杂。当某些模块由于某些不可避免的原因在测试时缺失或不可用时,驱动也会被使用,以便在所需模块缺失时采取行动。驱动程序可用于高级模块的缺失,也可用于低级模块的缺失。

例子 : 假设,你被告知要测试一个网站,其相应的主要模块是,其中每个模块是相互依赖的,如下所示:

模块A:网站的登录页面。
模块B:网站的主页
模块C:个人资料设置
模块D: 签出页面

开始平行开发所有的模块总是被认为是很好的做法,因为一旦每个模块得到开发,它们就可以被整合,并可以按照它们相应的相互依赖的顺序与一个模块进一步测试。但在某些情况下,如果他们中的任何一个处于开发阶段,或在特定模块的测试过程中不可用,可以使用存根或驱动程序来代替。

假设模块A已经开发完成。一旦它被开发出来,就会进行测试,但它需要模块B,而模块B还没有开发出来。因此,在这种情况下,我们可以使用存根或驱动程序来模拟实际模块-B可能显示的所有特征和功能。因此,我们可以得出结论,存根和驱动是用来满足不可用的模块的需要。同样地,如果模块C和模块D不可用,我们也可以用存根或驱动来代替它们。

驱动程序和存根的功能是否相同?
是的,我们可以说两者的功能是一样的,都是在一个模块(M1)与另一个模块(M2)相互依赖的情况下使用的,而这个模块是需要测试的,所以我们使用驱动或存根来满足模块(M1)的不可用性并实现其功能。

存根和驱动器的区别 :

编号 存根 驱动器
1 存根用于自上而下的集成测试。 驱动用于自下而上的集成测试。
2 存根基本上被称为 “被叫程序”,在自上而下的集成测试中使用。 驱动是 “调用程序”,在自下而上的集成测试中使用。
3 存根类似于软件的模块,正在开发过程中。 驱动程序是用来调用需要测试的组件的。
4 存根基本上用于低级模块的不可用性。 驱动程序主要用于替代高级模块,在某些情况下也用于低级模块。
5 存根被用来测试模块的特性和功能。 驱动则是在软件的主要模块没有被开发出来进行测试时使用的。
6 如果上层模块的测试已经完成,而下层模块还在开发过程中,就需要使用存根。 如果低层模块的测试已经完成,而高层模块正在开发过程中,则需要考虑驱动。
7 当低层模块缺失或处于部分开发阶段,而我们想测试主要模块时,就会使用存根。 当上层模块缺失或处于部分开发阶段,而我们想测试下层(子)模块时,就会使用驱动。