This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
It is the age of computers and the significance of computer systems can be seen in almost every industry and field. The methods and techniques are being evolving that may help in producing quality softwares. In this regard, the software engineering is destined to develop, operate and maintain the software application. The need of testing was felt when it was observed that no quality software can be produced without testing its reliability and operation. The desire is to produce the reliable softwares that may provide good results after implementing. The field of software engineering has always struggled to develop the techniques that may check the validity and reliability of the softwares that have been developed. With time, software testing is getting very important and is now becoming a part of the software development process. None of the software is supposed to be completed without performing the testing process. After being developed, almost every software has to go through the testing processes and procedures. Software testing is not only emerging as an important part but also as an expensive. The cost and value is rising because of the critical importance of reliability of the software. Even recent research works have proved the fact that more than half of the cost of the development is spent on the testing process. This shows that to what extent software engineers are paying attention over the testing and validation process. The efforts are being made to develop even more efficient and effective ways of software testing. Currently, the software testing is one of the major parts of the software engineering. The significance of software testing cannot be denied and its demand is pacing up rapidly. In this paper we are aimed to focus over the software testing and its techniques. The reason for exploring and elaborating these techniques is to create the awareness and importance of the software testing and its techniques. Apart from discussing the techniques we have also discussed the various pros and cons of the techniques. (Hierons, 2, 2009)
Software testing can be defined as a process that is performed in order to find out the abilities and attributes of the developed software. This activity is performed so that it can be found that to what extent the program or software is up to the mark. It is very much required that the designed software should give the desired result and fulfill the objectives for which it has been designed. The process of software testing is now crucially important for both the software developers as well as the testers. Software testing is a very detailed and complex process and it does not only comprise of debugging. The software testing also makes sure that the software is valid, verified, reliable and assuring quality as well. Performing all these checks is not a simple and easy task to perform. The process evaluates the program completely so that it can find out any existing bugs or errors. During this evaluation it is also judged that whether the software can provide the desired results or not. Although sometimes it is not possible to find out all the possible errors with in software but still testing can solve the problem to the large extent. (Pan, 1, 1999)
For every software developer it is getting necessary that he must have knowledge about the software testing and its techniques. The process of software testing is basically performed in order to explore the quality or acceptance of the software and to find out the existence of the errors. It should be always kept in mind that software testing does not only involve a single activity performance rather it is a process which involves many different activities that are being performed for getting the desired objectives. It has always been suggested by the developers that testing is the process that should be performed throughout the software development process. It will help to find out the errors from the very first stage of development. This will make it easier to fix the errors as at the last stage it sometimes become difficult to handle the errors. The stakeholders and customers now closely watch that whether the product has been gone through the process of testing or not. The software testing simply increases the reliability of the product and as a result the trust of the customer is also improved. This testing process clearly provides a picture to the user that what can be the risks of implementing a particular product or program. This allows the customer to have the precautionary measures for attending these risks. In past only debugging was performed and there was no concept of performing the testing operations. Currently, the various software development models involve the testing procedure at different stages. The testing processes cannot make the software error free but it can provide criticisms and comparisons that may allow the user to understand the behavior of the software and can decide which program should be implemented or used. (Graham, 13, 2008)
Basic Purposes of the Software Testing
Although the software testing cannot give the complete assurance of the software that it is errors or bugs free. But still it verifies the software to some extent that it can be implemented. Also it points out the possible risks and problems associated with the software. For this reason software testing has became an integral and major part of the development process. The software testing is being performed in almost every phase of the software development process. Due to this, most of the time of software development is spent in the testing process. Following are the basic purposes of performing the testing process.
To Improve Quality: The existence of any error or bug may critically affect the performance of the application or software. Sometimes, these errors may even provide the user with severe losses. Bugs and errors in any system or application may even bring the system to disasters and damages. The testing process looks for the presence of bugs in software and tries to fix it which improves the level of quality of an application. The testing in terms of quality also makes sure that the application is providing the desired outcomes or not. By improving the quality, we mean that the software is able to work under the given circumstances. It is not possible that the programmer, developer or tester may find the problems at the first try. For this reason the testing is performed at every phase of development so that at different levels the testing may find out any existing problems and errors.
Verification and Validation: Another major purpose of testing is to verify and validate the product. The verification and validation may allow the user to find out that whether the product is capable of working under the given conditions or not. The results of the tests can be used for claiming over the working of the product. The verification and validation is also a measure for making comparison between the different available products and softwares. Quality is a major factor for any product to prove it reliable but it cannot be directly measured. There are different factors that are measured in order to check the quality level of any product. Different tests are applied in order to check the validity and quality. If any of the tests is failed then the validity of the product becomes doubtful and the value of the product is affected. The only issue with validity and verification is that a number of tests are required to check the verification and validation. Only few tests are not enough to make the decision as software might prove itself working under some situation but not in others.
Reliability Estimation: Proving a software reliable is required for making the people to start sing a particular software or product. Reliability is associated with almost every aspect of a product. A product should be tested again and again for checking its reliability at every level. The structure, architecture, operation, objectives and results should be reliable. Different testing methods are applied in order to find out the estimation of reliability.
The above are the basic purposes of performing the software testing. Although there can be more but these are of the essential importance and cannot be ignored. (Pan, 1, 1999)
Software Testing Techniques
A number of different software testing techniques are available that are applied under different circumstances. The purpose of applying these techniques is different every time. It is required that the testing techniques should be chosen according to the type of product over which it is being used. Many techniques and tools have been developed in the past but with time the new techniques also have been developed in order to overcome the necessities of the users or customers. The traditional software testing techniques are no longer in use these days. Instead, the newly developed techniques have taken their place. The developer or tester should look for the best possible technique that is available for testing the product or software. The new techniques have made the software testing process more robust and meaningful. The most commonly used testing techniques that are widely used can be functional or structural. There can also be techniques that are developed by combining both the functional as well as structural techniques. The most common methods under these techniques are black box method, white box method and grey box methods. A majority of software developers as well as testers prefer using these methods. Each software testing method definitely does have some strong as well as few weak points. These presences of these points allow the developers to select the testing method for their product. It is recommended that the developer should choose the software testing method with immense concentration and choose the one which is the most appropriate. In this paper we are going to discuss the component based software testing technique. We are going to discuss the component based software testing technique in depth by reviewing it in depth. The focus will also be made over the strengths and weaknesses of this testing technique. (Luo, 1, n.d)
Component Based Software Testing
It is considered today that the software crises can be best handled by the component based software testing. The technique or technology of component based software testing has solved many problems of the reliable software development. The idea of component based software testing has been derived from the component engineering. This technique of software testing is deployed when the software has been developed by making use of the component engineering. It allows the developer to develop the software products by making use of the parts that are already available and tested in prior. This kind of testing is applied when the product is developed and the developer is not required to produce the product from the scratch. We are focusing over this method of testing as it may also prove to be very cost effective. In normal cases we may notice that the software development process along with the testing ends up in a very expensive procedure. The most of the cost is spent over the testing and development. But when the component based engineering is used for developing a product then the costs are lowered down. This kind of development and testing method can prove to be very feasible one. This kind of development and testing will make the developer and consumer to save the extra costs that are applied over experimental development and its testing. When a product is being engineered from the scratch then it needs extra costs of assembling, integration and then testing. Most of the organizations today are seen to develop the software products by making use of already available components and then testing the product with the component based testing. This kind of development and testing no doubt reduces the level of efforts required. It is a new trend of software engineering which is emerging with full pace. This is again not a simple task to perform. As integration of different available components is not a simple task to be performed. The developer has to find out that all the components are fault or error free. It is also to be found that all the components do perform well with each other. If a component is not compatible with the other then the whole product will come to a failure. Again in this process, the testing phase is accompanied again and again. It is necessary that all the components that are being used in the product are in working condition and are error or bugs free. Any faulty component may also damage the other one. Testing is not only performed over the individual component but it is also performed when component is integrated with the other so as to find out that what is the level of quality of the product. In component based testing we are also going to perform the syntactic compatibility which makes sure that the components are compatible with each other. Still the semantic compatibility has to be checked which will make sure that the developed application is performing ell and providing the desired results. This heck is then performed by making use of the component based testing. (Gross, 11, 2005)
Software Component Testing Strategies
The component based testing has been explored since long time as it is not a very traditionally being used strategy. The different components are being tested in different manners by the developers. Most of the times, the developers are used to apply the traditional strategies of white box, black box and grey box for performing the testing process. The software development processes have been changed to the large extent with time and for this reason it is also required that the testing strategies should also get innovated. In the technique of software component testing following important characteristics or features of the product should be kept under consideration and these characteristics are very much related to the testing process.
Component Observability: At this stage the component has to be thoroughly observed. In this observation the component is tested that whether it is performing well or not. All the related fields of the component are tested at this phase. The required inputs, developed outputs and operations are all tested here at this stage. At this level, the tester required the requirements given by the software developer so that the software might get tested based on the given requirements.
Component Traceability: This is another phase or stage of the component based software testing. At this stage, the components of the product have to be tested in order to check that how better it is able to follow the desired behavior and characteristics. All the internal as well as external features are tested to estimate the behavior of the component.
Component Controllability: This stage of the testing process finds out that to what extent the software components can be controlled for its inputs, outputs and operations. It is desired that the developer may control the operations and behavior of the component so this ability is tested at this point.
Component Understandability: This is the stage where the tester has to look about the information of the software components. For using and testing any software it is required that huge amount of information is provided so that the nature of the software is well understood.
All the above characteristics and features are equally and essentially important for testing the components and then the final product. (Bhor, 1, 2001)
There are different researches done by the industries as well as the academics which suggested the following strategies for testing a software component.
Certification of Components
Certification mainly deals with the reliability of the component. In this process components are provided with reliability which ensures that the need of the developer is met and also helps provide quality to the component. There are different methods which are used to determine suitability of a component for a system.
Black Box Component Testing: In black box component testing system the test cases are selected but the syntax of the software is not considered. In this kind of testing it is required that the component should be executable. Also an input is required along with the Oracle for completing this testing process. In this process, the term oracle is used to define a process that is used to find out if there is existence of any error and this can be determined by observing the produced output at every applied input. In this black box component testing strategy the desired output will be compared with the achieved output. Another name that can be given to the black box component testing is the interface or functional testing. Mostly this component test method is applied when the operational behavior of the component has to be tested. At this level the components are used under different conditions in order to find out the execution of the components.
System Level Fault Injection Techniques: In this method, the errors or faults are introduced in to the system and then the testing of the system is performed. The method is basically aimed to find out that in case of any error or failure how worst the system can get. The basic aim of this method is not to find out errors in the system. A technique of fault injection known as Interface Propagation Analysis (IPA) is also used in the component based testing techniques in order to inject the errors that can make a component failed.
Operational System Testing (OST): When faults are introduced to the system then the OST is used to find out that what the level of tolerance of the system is? It also judges the behavior of the system when a component is introduced in to it.
Defense Building Step: At this step the wrappers may be used. The wrappers are used to restrict the working of the component as required. At this level the tester does not need to change the source code for the testing but only the functionality will be limited. (Bhor, 1, 2001)
UML Based Test Model for Component Integration Testing: In this strategy of component based software testing, the UML diagrams and collaboration diagrams are used in order to evaluate the errors and faults that exist in a system. The errors are explored when the different components interact with each other in order to find that whether the components can integrate with each other or not. In this testing strategy the development process of UML is connected with that of the component based software testing process. In this strategy, the node of the UML diagram will point out the target of the integration. On the other hand the flow shows the interaction between the different nodes. The best thing about this method is that it is based on the conventional collaboration and UML diagram icons which are used widely so it is easy to understand by the developer. This method is being widely used in the component based software testing. (Wu, 5, 2003)
These are the strategies that are most commonly used in the component based software testing technique.
Strengths of Component Based Software Testing
There are many advantages of using the component based software testing. Because of the many advantages this testing method is being widely used by the testers and the developers. It is the new trend in the area of software testing. The major advantage of using these techniques is that the software development process is completed in less time and also proves to be cost beneficial. It can allow the software to get develop din less time and in less budget. It allows the project to get ended in time with minimum expenses. Because the already available components have to be used in this strategy therefore it also prevents the components to get wasted. Another advantage of this technique is that it makes use of the techniques that are already being used in the past. This makes it easier to perform the testing as well as introduces a new concept. The testing strategies that are being adapted by this technique are formed y the amalgamation of various known techniques which has made it easier it understand and perform by the tester. Another advantage of using this technique for developing the software or any product is that it performs the testing every individual component that is going to be used in the system. It also makes it easier to check the working or operations of the system at every step. This step by step monitoring allows eliminating a number of errors. Also in this technique the fault injection strategy is used which allows to introduce the faults that might get caused in to the system. This allows the developer to find out that what possible damages can be caused to the system if the components might not get adjusted with each other. Other advantages may include the fact that when UML diagrams and collaboration diagrams are being used in the system which are widely known and used so it would not be difficult for a tester to test the component system by making use of these diagrams. This fact eliminates the necessity of understanding the new notations which sometimes take much time. This testing technique also clarifies the behavior of the components within the system.
Weaknesses of the Component Based Software Testing
Difficult to comprehend component behaviors in a system
The most common difficulty or problem faced by the system component testers in testing and maintenance of system is in understanding and observing the behavior of components in a system because of the following reasons:
System engineers basically use ad hoc approach to trace the behaviors of in-house components. This is the reason for problems that have arose for the system testers in understanding the behavior of a system only because of contradictory trace messages, different tracking methods and formats.
No such kind of built-in tracking methods and functions are found in third party components for monitoring and tracking their external behavior.
There arenâ€™t any configuration functions for component clients to manage and configure the integrated tracking methods.
Also there arenâ€™t any systematic approaches and technologies to monitor and control the external behavior of the system components.
Problem on component error isolation, debugging and tracking
Components in a system are developed by several teams that may be using different tracking methodologies and formats. Therefore, contradicting tracking methods and trace messages can cause complexity in detection of error and isolation of components.
Increased costs on performance testing and tuning for components
Performance testing for component based programs is a big challenge in testing of systems because present component sellers do not offer users with any information regarding performance. Therefore system testers and integration engineers should put in a lot of effort to recognize the performance problems and the components causing them.
Deficiency in system resource validation for system components
As most of the components do not provide the information about their system resources it becomes difficult for system testers to identify the system resource problems in the testing and maintenance of system. (Gao, 1, n.d)
After having the in depth analysis of the software testing we have understood the fact that software testing is the major part of the software development and it should not be neglected in any case. This part is very important and the tester as well as developer should decide in prior that which testing technique will be used for their development process. In this paper we have reviewed the testing technique known as component based software testing. In this type of testing the developer tests the individual components of the system or product which allows enhancing the reliability factor. In our opinion it is required that new methods and techniques should be established out of the already available ones. The innovation will bring in front the new ways that may increase the reliability of the product. The component based software testing basically make use of the available testing strategies like black box testing method, UML diagrams and collaboration diagrams and so on. We are in favor of using this testing technique because it will be easier to understand by the testers as it makes use of the already available methods. Another reason for supporting this method is because it is cost effective as well as time saving. Although the component based software testing technique is having some of the weaknesses as well. But every technique has its own advantages as well as its disadvantages. It is required that actions should be taken that may eliminate the problems that are faced by using this testing technique. It is a new trend and should be adapted by the developers.
The software engineering is a field that allows the engineers and developers to develop the products, applications and softwares. In this field, one of the major parts is known to be the software testing processes. The software testing has been chosen as our area of study. Software testing is a process that is used to evaluate the functions, operations and overall behavior of the software or product that is being developed. At first, the software testing was used as a separate process which was used while production if desired. But with time, the importance of testing software has been understood by the developers as well as by the consumers. Now, the testing process is being performed along with the development process. Even in most of the cases more than 50% of the total time and cost is spent over the testing process. The testing process has proven itself to be a necessity as it increases the reliability of the software and it also enhances the verification and validity of the product. In this paper we have given an in depth review of the testing technique which is named as component based software testing. We have presented many strengths as well as weaknesses of this technique which will allow the user to understand the technique properly. It is a very cost effective and timesaving technique which has made it to be used widely. In this paper we have also described the strategies that are used y this technique. Although there are many other techniques available for performing the software testing but it is recommended that new techniques should be introduced that may enhance the reliability of the software.