The proposal of a novel software testing framework

Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia munib_kamboh@ciitlahore.edu. pk, fbajaber@kau.edu. sa, rmuhammd@kau.edu. sa Abstract: Software testing is normally used to check the validity of a program. Test oracle performs an important role in software testing. The focus in this research is to perform class level test by introducing a testing framework. A technique is developed to generate test oracle for specification-based software testing using Vienna Development Method (VDM++) formal language. A three stage translation process, of VDM++ specifications of container classes to C++ test oracle classes, is described in this paper. It is also presented that how derived test oracle is integrated into a proposed functional testing framework. This technique caters object oriented features such as inheritance and aggregation, but concurrency is not considered in this work. Translation issues, limitations and evaluation of the technique are also discussed. The proposed approach is illustrated with the help of popular triangle problem case study. [Ahmed M, Fuad B, Qureshi MRJ. The Proposal of a Novel Software Testing Framework. Life Sci J 2013;10(4):319-326] (ISSN:1097-8135). http://www.lifesciencesite. com. 42 Keywords: Framework; Testing; Software Reliability; Test Oracle 1. Introduction Software testing is really a difficult job. Recently software testers have increased their dependency on automated testing to test software. Software test automation is often difficult and complex process. Generating and running the test cases and generating and verifying test results are very important in test automation. We identify the needs to be verified during designing of a test. A set of expected results are required to verify the actual results for each test. The process of expected results generation is done using test oracle (Binder, 2002). Expected result generator and comparator are two main components of a test oracle. Implementation under test is used to generate actual result for a particular test case. Then actual result is compared with expected result, generated by expected result generator for evaluation whether actual result is correct. The output of comparator will be 0 or 1. If actual and expected results are same then ok, otherwise error will be declared. People are rapidly adopting and relying on software to perform their daily activities. This level of dependency and confidence in software requires the checking of its correct behavior for safety of the people and their business. Correctness of the behavior of software depends on how much level you are performing the testing of that software (Peters and Parnas, 1998). Systematic testing especially supported by suitable tools can greatly increase the effectiveness of system verification and the confidence in the correct functioning of the system (Takahashi, 2001). Automated testing has the ability to reduce the testing time and save up to 80% of testing costs because automated tests can execute test cases much faster than manual testing (Takahashi, 2001). All software testing researches and practices assume that there is some mechanism, an oracle, for determining whether or not the output from a program is correct. “A Perfect Oracle would be behaviorally equivalent to the implementation under test (IUT) and completely trusted. In effect, it would be a defect free version of the IUT. It would accept every input specified for the IUT and would always produce a correct result. ” (Binder, 2002). Therefore, the development of a perfect oracle will be as difficult as the development of the original software. The rest of the paper is organized as: section 2 discussed related work. Problem definition is given in section 3. The proposed technique and its limitations are discussed in section 4. In section 5, a case study of popular triangle problem is conducted to validate our proposed research. The evaluation of proposed technique is described in section 6. 2. Related Work The test oracle generation for specification-based software testing techniques can be classified on the basis of formal specification notations. We can categorize formal specifications into six categories i.e., model-based, algebraic, Logic-based, Net-based/Graphical, Process Algebra, and tabular/equation execution-based. An emphasis is given on the research contributions that target test oracle generation for specification-based software testing.