|
Unit, Unit Testing—A unit is the smallest stable piece of software, by which I mean that it can be compiled or assembled, linked, loaded, and put under the control of a test harness or driver. A unit is usually the work of one programmer and it consists of several hundred or fewer, lines of source code. Unit testing is the testing we do to show that the unit does not satisfy its functional specification and/or that its implemented structure does not match the intended design structure. When our tests reveal such faults, we say that there is a unit bug.
Component, Component Testing—A component is an integrated aggregate of one or more units. A unit is a component,a component with subroutines it calls is a component, etc. By this (recursive) definition, a component can be anything from a unit to an entire system. Component testing is the testing we do to show that the component does not satisfy its functional specification and/or that its implemented structure does not match the intended design structure. When our tests reveal such problems, we say that there is a component bug.
Integration, Integration Testing—Integration is a process by which components are aggregated to create larger components. Integration testing is testing done to show that even though the components were individually satisfactory, as demonstrated by successful passage of component tests, the combination of components are incorrect or inconsistent. For example, components A and B have both passed their component tests. Integration testing is aimed as showing inconsistencies between A and B. Examples of such inconsistencies are improper call or return sequences, inconsistent data validation criteria, and inconsistent handling of data objects. Integration testing should not be confused with testing integrated objects, which is just higher level component testing. Integration testing is specifically aimed at expo sing the problems that arise from the combination of components. The sequence, then, consists of component testing for components A and B, integration testing for the combination of A and B, and finally, component testing for the “new” component (A,B).
System, System Testing—A system is a big component. System testing is aimed at revealing bugs that cannot be attributed to components as such, to the inconsistencies between components, or to the planned interactions of components and other objects. System testing concerns issues and behaviors that can only be exposed by testing the entire integrated system or a major part of it. System testing includes testing for performance, security, accountability, configuration sensitivity, start-up, and recovery.
This book concerns component testing, but the techniques discussed here also apply to integration and system testing. There aren’t any special integration and system testing techniques but the mix of effective techniques changes as our concern shifts from components to integration, to system. How and where integration and system testing will be covered is discussed in the preface to this book. You’ll find comments on techniques concerning their relative effectiveness as applied to component, integration, and system testing throughout the book. Such comments are intended to guide your selection of a mix of techniques that best matches your testing concerns, be it component, integration, or system, or some mixture of the three.
单元,单元测试-一个单元是软件的最小可测试单元,这个单元在我认为是可以在测试驱动器的控制下进行编译、装载、连接和负载的。一个测试单元通常是跟程序编写员有关的,并且他包括了几百行上下的源代码。我们应该说明的是单元测试是做表示单元不使它的功能规格满意及[或] 它的被实现的结构不能跟设定的设计结构相匹配的测试。 当我们的测试显示有错缺点的时候,我们就可以说出现了缺陷。
组件,组件测试-一个结构是一个一或较多单元的集合体。一个单元是一个组件,一个调用组件的子程序也是一个组件, 等等这 (递归) 定义,一个组件就可以是一个单元到一整个系统之间的任何一个单位。我们必须说明的是组件测试是表示组件不使它的功能规格满意及[或] 它的被实现的组件不匹配设定好的设计结构的测试。 当我们的测试揭露有问题的时候,我们说这里有一个组件缺陷。
集成测试
集成, 集成测试-集成是在组件被聚集产生较大的组件方面所依据的一个过程。集成测试是表示即使各个组件单元被单元测试显示是正确的,但是各个组件的集合却不一定是正确的测试。例如结构A和结构B都通过了各自的单元测试,集成测试找出组件A和B之间关系和接口中的错误。这种错误包括不正确的调用或者返回值,错误的有效数据类型和错误的数据对象处理。仅仅比组件测试高一个等级的集成测试对继承对象的测试不应该是迷惑的和困难的。而且集成测试仅仅是专门发现在组建集合的基础上才可以发现的错误和问题的。这个所谓的序列对于组件测试来说就是组件A和组件B,对于集成测试来说就是A和B的集合体,也就最终相当于组件测试中的组件(A、B)。
系统, 系统测试——一个系统就相当于一个大的组件。系统测试不是针对显示组件上的缺陷的测试,而是为了找到组件之间或者说已经计划好了的组件和或者其他对象接口间的缺陷的测试。系统测试主要涉及到只能通过整个集成好的系统或者一个主要系统部分测试出现的问题或者调用。系统测试包括对性能、安全、说明书、配置灵敏性、启动和恢复的测试。
这一本书与组件测试有关,但是在这里讨论的技术也是可以应用于集成和系统测试。除了作为从组件到集成和系统的我们的关心变化的混合的有效技术变化之外没有任何的特别集成和系统测试的技术。将被忽略的关于如何以及哪里进行集成和系统测试在这一本书的序文中被讨论。 通过这本书你会找到关于应用于组件、集成、系统测试的技术的相关效力之间的评论和注释。这些注释是为了读者从很多测试技术中选择适合自己测试的技术来应对组件、集成、或者系统测试、甚至是上述三个混合测试。 |
|