250 likes | 446 Views
Blue’s Support for Object-Oriented Testing. By: James Majidian Christopher Nersisyan. Agenda. Abstract Introduction Reason for this article Object Oriented Testing Blue Environment Testing Conclusion Personal Thoughts Questions?. Abstract. Reasons for Object-Oriented testing:
E N D
Blue’s Support for Object-Oriented Testing By: James Majidian Christopher Nersisyan
Agenda • Abstract • Introduction • Reason for this article • Object Oriented Testing • Blue Environment Testing • Conclusion • Personal Thoughts • Questions?
Abstract • Reasons for Object-Oriented testing: • Object-Oriented programming is commonly used for large scale projects. • Much research has been done on design and implementation, but minimal research on testing. • By taking an object-oriented approach to testing, this presentation will show that with appropriate tools the cost of testing will not be greatly increased.
Introduction • Reasons for Object-Oriented Large Scale Systems • Excellent structuring mechanism • Units may be implemented separately. • Implementation hiding • Internal structure of data may be hidden, and changes will not affect users of the class, simplifying maintenance. • Software reuse • Reduction in the amount of software written improves reliability of system since tested classes may be reused.
Introduction (Cont’d) • Difficulties of Object-Oriented Testing • Advantages of Object-Oriented Programming become disadvantages • Advantages • Excellent structuring mechanism. • Implementation Hiding. • Disadvantages • Large number of individual units must be tested • State of internal data not accessible via interfaces • Individual test cases must be developed for all units • Test cases must call each method supported by the class, prompt user for parameters and display results of method. • Various combinations of these method calls must be exercised. • Resulting test program may be more complex and larger than the class being tested
Introduction (Cont’d) • Solutions for Object-Oriented Testing: • “Debug” print statements • Advantages • Prints out relevant internal data. • Disadvantages • Could introduce new errors. • Large volume of output may become difficult to interpret. • Symbolic debugger • Advantages • Insert break points and examine data. • Disadvantages • Adds complexity. • May not be able to display complex link structures. • Blue
Introduction (Cont’d) • What is Blue? • Specifically designed for testing object-oriented applications. • Graphical environment which supports interactive creation of instances of classes and interactive invocation of their methods. • Ability to examine the internal state variables of objects. • Allows the programmer to interactively test their classes without writing a single line of test code. • Both an object-oriented programming language and development environment.
Reason for this article • Object Oriented programming is common method of programming, but limited information exists on testing it. • We felt that it would be beneficial to all to examine one method of Object Oriented testing, the Blue environment.
Object Oriented Testing • Procedure to test a class: • Create an instance of the class • Call of method of the object • Examine the internal data of object • This can be achieved by the inclusion of appropriate mechanisms in the program development environment.
Object Oriented Testing (cont’d) • Environment Mechanisms • Mechanism 1 • Interactively create an object of any class. • Pass parameters to object. • Once created, interactively invoke methods. • Results are displayed. • Mechanism 2 • Environment provides an inspection facility allowing internal data to be examined. • Results are displayed • Characteristic of Environment • To support passing of objects, mechanisms must allow an arbitrary number of objects of arbitrary classes to be constructed.
Blue Environment Testing • Project Editor • The empty area at the bottom of the main window is the object bench. • Once a class within a project has been compiled, objects of that class may be created. • Interactive creation of objects is achieved by selecting the class and clicking the “ Create” button. • An instance is interactively created and available for operation. • Invoking the creation operation on a class results in a normal object creation, including the execution of the creation routine (the ‘‘ constructor” in C++/Java terminology).
Blue Environment Testing (cont’d) • Object Creation Dialogue • Appears after create operation is invoked • Allows user to enter routine parameters. • At the top of this dialogue, the interface of the creation routine is displayed, with its header and comment. • Further down is a text field for entering parameter values. • Under the parameters is another field to provide a name for the object to be created. • The large empty area in the middle of the dialogue provides a list of previously used parameters. It is provided for convenience during testing of a class. • Previously made calls can be easily repeated by selecting a parameter combination from the list.
Blue Environment Testing (cont’d) • An object on the “Object Bench” • Once the OK button is clicked in the dialogue the object is created and displayed on the object bench. • The object is then available to the user fordirect interaction.
Blue Environment Testing (cont’d) • Calling a routine on an object • Clicking on the object with the right mouse button displays a menu that includes all interface routines of that object. • Also included in the menu are two special operations available for all objects: inspect and remove.
Blue Environment Testing (cont’d) • Symbols in the routine menu indicate whether a routine has parameters or return values. • If the routine has parameters, a parameter dialogue similar to the one seen at the creation of the object is displayed • On the click of the OK button the routine is executed and, if the routine returns results, the result values are displayed in another dialogue.
Blue Environment Testing (cont’d) • How interactive creation helps: • There is no need to complete all classes in a project before the first tests can be performed. • Each class can be tested as soon as some of its routines have been completed. • No need to write special purpose test code.
Blue Environment Testing (cont’d) • Composition • During the interactive testing of the system, objects accessible on the object bench may be composed. • i.e. one object may be passed as a parameter to the routine of another object.
Blue Environment Testing (cont’d) • Inspection of Objects • Inspect operation • Allows viewing of instance data of objects that don’t provide accessor functions. • Results are displayed graphically. • Get places object on object bench to be examined later. • Inspect opens another dialogue for Instance variable inspection. • Inspections allow users to observe the effect of routine execution of internal data.
Blue Environment Testing (cont’d) • Record Facility • Textually records all interactive object creations, method invocations, return values, text input and text output. • This helps with test documentation.
Blue Environment Testing (cont’d) • Pedagogical Benefits • Blue environment was initially developed as a teaching environment for first year students. • Benefits as a teaching aid: • Incremental development • No need to syntactically complete a whole application • As soon as one class or routine is completed it can be compiled, and objects can be created, executed, and tested. • Leads to greater motivation and earlier error detection (which is also beneficial for professional development). • Class/object distinction. • Allowing the direct creation of and interaction with objects greatly facilitates understanding. • If a student has a class “Person” and creates three different people with different names, the role of the class and the role of each object becomes much more directly understandable. • Programming without I/O • Allows a clearer understanding of the abstraction concepts if routine calls are taught before language exceptions • Interface/implementation distinction • Testing support • As was the goal of Blue, good testing is supported much better than in conventional systems.
Blue Environment Testing (cont’d) • Implementation • A shell Blue class will be created and its constructor will hold the interactive call. • When the shell class is compiled and executed, the interactive calls will be performed. • This shell class will store the interval object’s values and this data will be shown in the result dialogue box.
Blue Environment Testing (cont’d) • Interactive call under testing. • Blue Shell Source Code
Conclusion • Object Oriented programming has great advantages to software development, but creates difficulties in testing. • Blue has been designed to aid in testing Object Oriented programs, by reducing special purpose test code. • Blue supports incremental testing to occur early in the project, aiding the stability of the application. • Blue was created to aid teaching languages, and should be available online today.
Personal Thoughts • Its simplicity seems more detrimental than beneficial. • Blue may be an effective tool for simple unit testing, but seems too elementary for industry use. • First year students taught in the Blue environment may have trouble transitioning to actual programming environments.