Literature Review
The aim of this report is to bring into being the different methods for testing a software and fixing its bugs. Also to understand different techniques used in testing and testing tools in real life when testing a picked program in its study.
Several requirements are needed to test a software or fix its bugs. These are the testing methods and the testing tools. In the testing methods, there are a few techniques that are relevant: the black box, white box and the grey box techniques. However, before we go into better terms about the testing methods, we should first characterize what a software is testing. For the most part, it is a test to check the nature of the software and to check the mistakes that may have emerged in the development of the software. Likewise checking if the software has met its prerequisite is a testing process.
Diverse methods have distinctive approaches in the checking the vulnerability of a program. The white box technique, checks if the software has met the prerequisites that were put down. It determines that the outcome is the normal one by survey the internal functionality of the program and looking at the outcome. This strategy does is required to examine the internal working of the program. Its outcome affirms everything ranging from the internal validation of the program. Aside from white box we have another testing technique, the black box strategy. Black box technique explores the graphical user interface of the program. This technique looks at the code and recognizes where the issue is and furthermore checks if the outcome meets the necessities put down. The grey box method, a “cross breed technique”, joins both the white box what’s more, the black box useful attributes. The analyzer has constrained information of the working of the software. It is therefore compelling contrasted with black box strategy where the analyzer just looks at the software physical layout.
I used the Calculator program software to be tried with the TestNG, Yasca and Selenium testing tools. The scrutinized for testing is the grey box technique. These practical prerequisites are: contributing information easily since the user interface is inviting, the elements of the applications are effortlessly identifiable (performing correct arithmetic through its interface buttons), the software can be effectively analyze (show of things to be calculated) and the undertaking to be executed is done immediately. This application has made things simple and furthermore transactions are enhanced since it tends to be finished remotely. Calculator program utilizes for its activity consequently it tends to be access widely around the world. Through this, its testing must be done completely to cover all vulnerabilities.
Program testing is a consistent present state in the regularly development of software. Testing for bugs in a program code can never be exhausted but it can only be done to reduce the risk of the program usability in terms of security details.The procedure is difficult and rather costly yet it is unavoidable thus less complex strategies have attempted to be put without hesitation to attempt and advance the procedure. For program testing to be fruitful, talented work force, superb testing strategy and a suitable testing device must be recognized. Inability to maintain these necessities can prompt more hiccups in the delivery process. More virtual software are being set aside a few minutes henceforth making this testing methods simpler and compelling is a need. Likewise, more codes in a software is a possibility of a bug introducing itself. Researchers have examined this matter, all things considered, and gave a few answers for the current issues all through.
Selenium RC is an open source testing too recommended by researchers. For the most part it is utilized to first test java applications outlines before they can be utilized for any reason (Holmes and Kellogg, 2006). Selenium RC facilitates the way towards testing by shutting and opening databases and afterward contrasting the test information and information in the databases (De Castro et al, 2013). This tools is obviously emerging to be the best java application testing tools.
In their work Banabic and George called “Quick white-Box Testing of System Recovery Code” they distinguished that to test the strenght or quality of a software, code infusion was the approach to accomplish that. In spite of the fact that the technique required a great deal of labor and a considerable measure of infusions in the code, the technique tried the required baundaries with readiness and expeditiousness. The method is once in a while utilized since because of a considerable measure of labor required and ensuing infusions, it’s noteworthy to be a little bit costly. In this manner, for this technique to be utilized, a particular place must be distinguished and the code infused must have high dependable prerequisites.
It is obvious with most researchers that despite the fact that software testing has made noteworthy walks in achieving its motivation, it has not yet visited all corners in the region. To an ever increasing extent needs rise when others are secured. My supposition is that it won’t be long and afterward something will be absent in the TestNG which will incite different engineers to move forward on it or influence their own particular testing tool which will have the missing capacity. It resembles this testing require is needed and as dialects keep on evolving, the all the more testing winds up wide and muddled.
Security is the far most thought about angle really taking shape of a software. Particularly if it’s facilitated in the java, tight security isn’t an alternative. Research has been done concerning which tool is the best in checking the weakness of a software. Le and Ray in their article on “Computerized discovery java Application Vulnerability Testing”, put a considerable measure of credit to discovery scanners. They are exceptionally powerful in distinguishing shortcomings. Be that as it may, are these discovery scanners open sourced? No they are definitely not. Some are publicly released to individual utilize just, similar to the Nessus scanner. The vast majority of them are appeased henceforth gaining them is at a cost. Additionally support cost comes in helpful when you gain them in this way making the procedure costly. Their administrations are flawless be that as it may, it’s at awesome cost.
Codes are inclined to blunders and mistakes. Bugs introduce themselves in each phase of making a software. They are dull and can postpone the delivery process of a software. Engineers have connected techniques to take control of the issue yet the procedures have not turned out triumphantly. Along these lines, designers are required to think of condescends that will be powerful. They are looked with a few difficulties in their plans. These difficulties are: presentation of bugs in the code while endeavoring to settle different bugs, the code to settle the bug is the bug itself, the plan made to settle the bug will simply conceal the most noticeably bad and the suggestions to experts and specialists (Murphy, 2015). In this way, picking an outline that will conceal all the specialties is an incredible test. The discovery strategy to break down the outcome with reference to information sets and results that were foreordained can help significantly in this field (Cox, 1999). The reference informational indexes and results are conjectured by the detail necessity of the programming. Coordinating consequences of both the outcome of the software and the reference results demonstrates that the software has accomplished its target. In spite of the fact that it utilizes theory, this technique has taken an awesome advance in diminishing the testing procedure. Likewise, an untalented staff in coding can test the software of its reasonableness to its capacities.
Testing software should be possible through four angles (Kelly, 2011). These are: setting, objectives, sufficiency and procedures. Every viewpoint or measurement as put by Kelly and Hook, are fundamental in the testing procedure and excluding one of them can prompt disappointment in the testing procedure. Notwithstanding that, another angle was presented and that is, including an analyzer as a component in the testing procedure. By doing this, the analyzer will look at the code and join with its execution. Moreover, incorporating the analyzer in the testing framework will acquaint him with the code and facilitate the way toward distinguishing bugs.
Software testing can be a difficult and trying. It is to a great extent costly, its result extremely eccentric and unnecessarily specially appointed (Bertolino, 2007). Consequently, a few researchers have attempted to distinguish why it is so. Kanewala and Bienman in their article “Testing Scientific Software” distinguished these difficulties. They brought up that these troubles happen because of this specially appointed challenge; social contrast among virtual software, for example, the oracle issue and recognizing factors amongst researcher and the software improvement network. The issue of oracle was moreover recognized by Hook and Kelly in their article “Testing for reliability in logical programming”. They kept on expressing that a considerable measure of test are required when directing any testing component. Considering the specially appointed test while picking or thinking of a testing procedure is of incredible help since the issue can be managed in like manner. Software testing is process that most designers endeavor to sidestep and don’t institute instrument for testing to maintain a strategic distance from a minute ago hurrying and guaranteeing the software is working superbly (Perry, 2007). In this way, if considered in time, like testing the code in parcels, it would spare so much time and money in the last test.
There are a number of testing techniques we use in white box testing including boundary value analysis technique based on testing between the boundary partitions which is contrary to the equivalence partitioning. Equivalence considers that if the system work well for the specific values then then all the values must work as expected.
Another testing technique used for functions which respond to combination of inputs or events example “delete”. Also we have other techniques for testing like error guessing (you guess an error that may prevail) and state transition techniques (changes the state or the condition of the program).
This is where testing was done through the use of partition of boundaries. Each and every case to be tested was assigned a boundary since testing is in exhaustive. This is to allow process of testing to be completed within the time set. Very important cases are selected and given priority so that they are tested.
We were able to divide the testing process into a series of partition where each partition has to be dealt with on its own. This data derived the test cases to be dealt with during software testing process. It is applied to the inputs mostly and the outputs are rarely used.
Every program can be tested by use of different kinds of tools. Including selenium RC web driver, Junit, Yasca and many more. In this research project, selenium RC was used and the output results have been discussed below
Test No. |
Test Case |
Test Outcome |
1. |
The program will be able to do all the arithmetic functions as needed |
Passed |
2. |
The program code is able to display the calculator interface of the SellAll software |
Passed |
3. |
It will be able to connect to the database and export the results. |
Passed |
4. |
It will be able to give the best result through performance testing |
Passed |
5. |
The reports are to be displayed and the codes for the display were generated |
Passed |
The purpose of this test is to check the backend logic work as intended. The logic function is to be tested include functions such as editing, save function code , deleting and updating data code, authentication of the user and reports generation. Examples of the cases I test from the MyCalculator includes the metrics calculation system which is supposed to calculate some specific function of the system like addition and deduction of inputs and other relevant entities within the system
All the test cases inside the table were done and the outcomes of the report indicate some bugs and some other test passed. Therefore testing for bugs in the code of the program cannot be exhausted. During the testing process, unit testing, integration testing and was done. According to the sample test cases which were tested, only some parts of the report generator code were found to contain errors. The testing was done by use of selenium RC and Junit. Calculator application has to correct the error inside the functional code for generating report and will be able to display the correct output.
This is the code that was tested. It performs arithmetic calculation within the system and therefore it was tested to debug some errors. This code test was carried out using the Junit test tool to check the functional parts which will be able to do automatic calculation of the program. The full code that was tested is attached in the zip file.
The code that will help to test the functional code above is shown in the figure below. The code will help to ensure that all the bugs in the program are scanned and remove before the launch of the software. In this testing I did use execution testing since it will be able to give out the mistakes once it is run.
All the white box test have been able to indicate different vulnerabilities of the calculator app software pertaining the security problems. That is why the programs needs to pass through all the processes of testing including unit testing and integration testing. The reports that were generated does not assimilate the real thing to be executed. This means that the system is malfunctioned due to some bugs within the codes.
Conclusion
Software testing is a wide area and ought to be done with a ton of keenness. Picking a suitable methodology and tool is of incredible importance as well. For a program to be tried effectively, including a logical analyzer as a component in the testing process is of embodiment, investigating the code while executing is far much superior for the code to be done, test it, at that point executing it. The gray box testing method is better contrasted with the others since it joins both the benefits of the white box techniques. Java applications internal functionality are best evaluated with the white box security scanners because of their weakness in checking powerlessness in security in web applications. The MyCalculator program based shopping application is an immense application that is almost utilized around the world. Its security vulnerabilities must be dealt with to stay away from the issue of security issues. However the application must experience all the testing from its interface to its similarity. Lastly, when fixing a bug, engineers should think of a testing system that ought not to trade off the first code at all. Bugs should not be presented in the testing procedure.
References
“Digital Library.” Introducing OCTAVE Allegro: Improving the Information Security Risk Assessment Process, 31 Dec. 2012, resources.sei.cmu.edu/library/asset-view.cfm?assetid=495357.
Linthicum, David S. Enterprise Application Integration. Addison Wesley Longman Higher Education, 2000.
Mitchell, Jamie L., and Rex Black. Advanced Software Testing. Rocky Nook, 2015.
Rechenberg, Peter, et al. Softwareengineering. R. Oldenbourg, 1983.
“Software and Systems Engineering. Software Testing.” doi:10.3403/30285152u.
Tian, Jeff. Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement. Wiley, 2005.
Quality Testing Verifies Quality Software. (1984). IEEE Software, 1(2), pp.120a-120a
Westley, A. (1979). Software testing. Maidenhead, Berkshire, England: Infotech International.
Software testing. (2006). Milton Keynes: The Open University.
Lewis, W., Dobbs, D. and Veerapillai, G. (2009). Software testing and continuous quality improvement. Boca Raton, Fla.: CRC Press.
Tian, J. (2005). Software quality engineering. Hoboken, N.J.: Wiley, pp.25, 254-160
Koirala, S. and Sheikh, S. (2009). Software Testing. Sudbury: Jones & Bartlett Learning, LLC.
Khurana Hema. (2016). Software Testing. Pearson India.