Understand the Best Practices in Testing
Whenever anyone aims to research the process of software development, the famous age old statement comes to the forefront i.e. “Avoid reinventing a wheel & follow the industry vide best practices”
The mantra of following the best practices adopted & advocated by the practitioners of the past comes up again.
Such best practices are by and large classified under three categories:
A) Basic Practices:
Basics are the stepping stones, which guide us in our march towards adoption of newer practices emerging from the older ones. While adopting the newer or refined ones we can�t forget the older ones just because they are not required anymore. A few of the following basic best practices are
found to be helpful.
1) Formulation of Functional Test Specifications:
These functional test specifications are used by the software test engineers to prepare their test cases with the perspective of black box testing.Availability of functional test specification is of immense help in parallel maintenance of two streams of operations like 1) Code Development 2) Test preparation. In practice, such an approach has proved to be extremely beneficial due to concurrent execution thereby simplifying the overall development process.
2) Variations in Functional Tests:
As said earlier majorities of functional test cases are based upon functional specifications and are prepared with the perspective of black box testing. Hence the emerging test cases are nothing but formal variations of inputs clubbed with various output conditions.
3) Frequent Code Reviews & Formal Inspections:
It is needless to emphasize on the facts that frequent software code reviews & formal inspections are much more beneficial in terms of time & money during the overall activities of software development. Hence nowadays these have become an integral part of the SDLC.
4) Availability of Precise Entry & Exit Criteria:
Going by the old generation waterfall approach all activities in the development process; whether it is a software design, or an inspection or a functional test, are planned to have definite entry and exit criteria. The management while evolution of the system from one stage to the other closely monitors these entry and exit criteria.
5) Perform Beta Testing Internally:
Usually beta tests are conducted by allowing small number of specific external customers who provide their feedback on the product after use with a view to fix the problems prior to mass release. However large companies like Microsoft etc. identify some sort of neutral customers within the organization, who test the product by simulating external betas. Such internal beta testing involves specially devised techniques using resources available within the organization. Such practice of having internal beta testing even though on being on a small scale yields extremely beneficial results with great economy as compared to much expensive external Beta testing although having larger audience.
6) Expensive Use of Automation in Testing:
The use of best suited automation tool to execute a bunch of large number of test cases derive significant benefits over manually executing the same tests again and again. It is to be remembered that automation of some tests can become counter productive, hence while selecting the test cases best suited to automation, due care needs to be exercised.
7) Testing across Multiple platforms:
These days majorities of the software applications are expected to function well across different type of platforms. Hence development & testing efforts are directed towards achieving desired performance from the application while operating on variety of platforms. Hence the companies according to the available resources develop specialized techniques suit such requirements of the product.
8) Use of Nightly Build Approach:
The nightly build approach has been in practice since long. This is a mechanism to offer quick feedback to the software developers on the progress of their test suit & whenever they happen to break the build. With nightly build in place there remains enough surety for the software to be stable and being fit to build for other users.
Nightly builds approach help in building greater cooperation among software developers, because of the reason that they operate under reasonable pressure to avoid breaking the build.
B) Foundational Practices:
Foundational practices ought to be deployed intelligently & thoughtfully and the advantages can be felt in the longer run. The great contribution of these foundational practices is realized successfully by many leading companies in the trade. Since foundational best practices are not as popular like basic best practices, these need extra support while these are implemented in practice. There is a great need to explore more information on such foundational practices.
A few of the following foundational best practices are helpful.
1) Extensive use of Usability Testing:
Testers perform Usability testing to ensure that the users are able to use the product with ease & to discover the errors and areas of improvement, which would help in achieving a good quality image of the product. The best practice of Usability testing should be aimed at measuring the human-made product’s capacity to meet its intended purpose.
2) Development of User Scenarios:
Development of creative user scenarios describing individual user characteristics as well as describing the activities performed to achieve the desired goals is the best viable practice. Testers exploit this foundational practice for
# To record the user scenarios & to create dependent test cases.
# To devise mechanisms to effectively tackle the failure like situations.
3) Multi-Release Orthogonal Defect Classification:
By Orthogonal defect classification or ODC analysis we can analyze the multiple releases of the software product & can work out a profile of usage by the customer and its corresponding effect on costs and overall efficiency of development. The multi-release ODC / Butterfly analysis approach is helpful in taking important decisions of optimizing the cost of development, time for launching the product in the market along-with quality related issues. Such issues happen to be in line with important factors like changing trends of the customer, pattern of their usage of the product & finally the performance of the product.
4) Use of ODC Feedback Loops in the Process:
Orthogonal defect classification is a mechanism to capture the software defects efficiently & quickly. We can easily evaluate different phases of SDLC with the use of ODC data. Such diagnostics methods & set of analysis techniques of ODC help the management in pushing the understanding & taking appropriate decisions on various activities during the SDLC.
5) Capture Test Planning Requirements:
It is important to emphasize that all software-testing efforts are directed towards satisfaction of stated & implied requirements of the client. Hence clear understanding of the client�s requirements is the key activity, based upon the accuracy of which, effectiveness of the test plans depend, which in turn becomes the ultimate metric for the satisfaction of the customer needs.
6) Test Automation:
Out of the entire testing efforts, creations of test cases constitute around 30-35% of it. Then comes the situation when a decision needs to be taken as to whether to automate the test cases or execute them manually. By automating repetitive tasks, which take considerable time by manual means, we can derive tremendous benefits in terms of savings of time & cost. However it needs to be kept in mind that case histories have made startling revelation, that over 70% of bugs are found by manual testing & not by automated testing in-spite of the fact that the automated tests had been designed & developed with great efforts of many years.
C) Incremental Practices:
The Incremental practices in testing are extremely specialized & are beneficial in particular situations only. Software testers may not prefer such practices in general, as these are not so popular in the trade. However when applied scientifically yield tremendous benefits.