Today I am going to speak more about best practices and process being followed in some of the well established software organizations. I will discuss on the pros and cons of such process. I will walk you through a detailed gap analysis of the situation where the processes lack the fine tuning. To help you kick start such best practices in your working environment – I’ll provide you with simple bullet points which you can adhere to all the time. This document is not a step by step tutorial document rather a confluence of thoughts on various processes which will require you to do some googling. As a result this documentation expects you to be aware of a very high level idea about software testing and software packaging process.
So let’s start with software testing. Software testing is the only process which ensures software quality. Let me put it in a question and answer format.
HOW TO PLAN SOFTWARE TESTING?
The best person to test the application should be the developer. Why a developer and not a tester? First reason being the developer will know in the first place what all minor bugs are there which he couldn’t take care of due to time limits or due to other reasons. Another reason, this also helps in creating a competitive and clean environment. The idea is keeping the resource overheads low, making sure egos are not built up, eliminating the have-to-find-bug attitude (which is important as a tester is concerned – else its assumed he has not done any job!!) and creating more friendly atmosphere where testers ‘n’ developers work in confluence towards a common achievable target. The problem to this kind of approach is that a developer may take testing for granted (For instance – One of my brilliant and highly expert resource, John, may think since that he has developed the module he knows exactly if there exists a bug or not hence can give away with certain testing!!). A proper test case needs to be put in place by the testing people/or someone who has no intellect regarding the implementation of the application logic. This will ensure that while writing the test cases no assumptions are made about the implementation side rather the concentration in on the user’s functional requirement. Such person while preparing the test case should think from clients’ perspective while writing the test cases to facilitate negative testing.
WHAT IS THE MOST DIFFICULT PHASE IN THE TESTING AND CORRECTION PROCESS?
Developers often find it difficult to accept that their implementation is having a bug. This is more apparent where the organizations have more of fresh graduates as resources. Moving the testing responsibility of actual testing from a tester to a developer goes a long way in tackling this kind of situation. Automating the testing process is another important step to ensure that all the tests are carried out. Automation saves lots of time spent in doing manual testing.
WHO SHOULD TEST THE APPLICATION AND ITS MODULE?
Automated test suite should be written by the developers as they proceed with their implementation. To ensure the implementation of test suits as the application implementation proceeds, we must ensure that the test cases are complete and have been reviewed. There are many tools available in the market for example JUnit is a fairly simple testing framework which fits well with java desktop application. We can create JUnit test suits which can be automatically called periodically or every time the code is changes.
WHAT CAN BE DONE TO AUTOMATE TESTING PROCESS?
Almost any process can be automated using a simple but highly powerful script tool called ANT. If you are not aware of ANT, you’re right I’d suggest that it’s again time for you to do some googling.
Apart from JUnit combined with ANT, you can also make use of LUNTBUILD an open source tool which helps manage the build and patch releases through ant build script. I’ll discuss about build automation in a separate thread.
TESTING ENVIRONMENT
Testing environment should always be clean and separate from the development environment. Key things to be considered:
· Never carry out testing in a high-end workstation or server machine. Even though one may argue that these days even the laptops are having the processing power of a server – still there are people in huge numbers who are comfortable with their old PIII with Windows 98 running on them. Hence testing should be done in a machine ideally with 1-1.5 GHz processor speed and 512 MB RAM. The answer to this is use VMWARE. VMWARE will also help in cost cutting which otherwise needs to be spent in buying high end servers and workstations for testing purpose.
· Testing machine should have a clean OS. Enterprise level application should be tested in clean OS. This ensures that application shall run on an environment independent of the development environment. For example: A clean system may not have the class-path set for the application to run – hence running it on a clean system will eventually help to find the application-environment dependencies.
WHAT TO TEST?
Various aspects need to be tested viz.:
Functionality (Positive Testing)
Test cases should first concentrate on testing the core and detailed level functionality of the application. User Requirement Document and Software Technical Specifications should be closely referenced while preparing the test cases and carrying out the tests not covered in the test case (One must ensure that the test cases are periodically updated).
Negative Testing
Following the positive testing – we must move on to carry out negative testing of our application. Negative testing ensures the user a highly qualitative product.
GUI Testing
User interfaces should be well planned out. Implementation should be such that the components can be re-arranged easily. Different layouts and combinations should be debated to enhance user experience. One such tool is swingunit. Swingunit is a unit test automation toolkit for Java Swing Application.
Load Testing
Enterprise level application sometimes needs to process a huge number of records within minutes or even seconds. Such application need to be subject to extensive load testing. During load testing the upper and lower cut-off limit (efficiency limit) needs to be constantly checked rather than the performance of each module separately. For example: JMeter from Apache
No comments:
Post a Comment