
Fayad’s Unified Software Engine (AIT-FUSE)
Toward “Automated and Immune Testing–
Fayad’s Unified Software Engine” (AIT-FUSE)
Professor Dr. Mohamed E. Fayad
Despite much progress and research in software technology, testing is still the primary quality assurance technique that is used today. Currently, major issues in software testing are:
It is necessary to develop and test software rapidly to meet the new economy market. In this new market, it is important to deliver the software on time to capture the market. Software must be delivered on time, and it must be good enough to meet the customer’s need.
The software requirements keep changing as the project progresses, and in some projects, the rate of requirement changes can grow exponentially as the deadline approaches. This kind of rapid software changes impose significant constraints on testing, because once a software program is changed, the corresponding test cases/scripts may have to be updated. Furthermore, regression testing may have to be performed to ensure that those parts that are supposed to remain unchanged are indeed unchanged.
The number of test cases needed is enormous; however, the cost of developing test cases is extremely high.
Software development technologies, such as object-oriented techniques, design patterns (such as Decorator, Factory, Strategy), components (such as CORBA, Java’s EJB and J2EE, and Microsoft’s .NET), agents, application frameworks, client-server computing (such as socket programming, RMI, CORBA, Internet protocols), and software architecture (such as MVC, agent architecture, and N-tier architecture), progress rapidly, while designing and programming towards dynamic and runtime behavior. Dynamic behavior makes software flexible, but it also makes the software difficult to test. Objects can now send a message to another object without even knowing the type of the object that will receive the message. The receiver may be just downloaded from the Internet with no interface definition and implementation. Numerous testing techniques have been proposed to test object-oriented software. However, testing technology is still far behind software development technology.
Conventional software testing concentrates on industrial objects (IOs) or application objects (AOs) that are tangible & not stable and it is generally application-specific and hardly reusable and is not extensible. Even within a software development organization, software development and test artifacts are developed by different teams and are described in separate documents. These make test reuse difficult.