Object-Oriented Testing (OOT) and Conventional Testing (sometimes called Structured Testing or Procedural Testing) are two approaches to software testing, each tailored to the programming paradigm they are associated with.
Object-Oriented Testing:
Focus: Object-Oriented Testing primarily focuses on testing the interactions between objects and their behavior, as defined by the methods and attributes of classes in an object-oriented system.
Granularity: Testing is often conducted at the level of objects, classes, and their collaborations.
Abstraction: OOT relies heavily on abstraction and encapsulation to isolate units for testing.
Techniques: Common techniques in Object-Oriented Testing include Class Testing, Integration Testing, and System Testing.
Inheritance and Polymorphism: Object-Oriented Testing must also consider aspects related to inheritance and polymorphism, ensuring that subclasses behave correctly in their specialized contexts.
Conventional Testing:
Focus: Conventional Testing primarily focuses on testing individual functions or procedures, often within a larger procedural or structured codebase.
Granularity: Testing is typically conducted at the level of functions or modules.
Procedural Logic: Testing revolves around the flow of procedural logic and the correctness of individual functions or modules.
Techniques: Techniques such as Unit Testing, Integration Testing, and System Testing are commonly employed in conventional testing methodologies.
Data Flow: Conventional Testing may also emphasize data flow testing to ensure data integrity and proper handling within the system.
Key Differences:
Unit of Testing: In Object-Oriented Testing, the unit of testing is often the object or class, whereas in Conventional Testing, it’s typically functions or modules.
Focus: Object-Oriented Testing emphasizes the behavior and interactions of objects, while Conventional Testing focuses more on the procedural logic and flow of the program.
Abstraction: Object-Oriented Testing relies heavily on abstraction and encapsulation, leveraging the principles of object-oriented design, whereas Conventional Testing may not have the same level of abstraction due to procedural programming.
Inheritance and Polymorphism: Object-Oriented Testing must consider the implications of inheritance and polymorphism, which are not as prevalent in Conventional Testing.
Testing Techniques: While both approaches utilize similar testing techniques (e.g., Unit Testing, Integration Testing), the application and emphasis may differ based on the programming paradigm.
Overall, the choice between Object-Oriented Testing and Conventional Testing depends on the underlying programming paradigm of the system being tested and the specific requirements and objectives of the testing process.