Search This Blog

Friday, March 19, 2010

Six Commonly used Software Testing Techniques

Six Commonly used Software Testing Techniques

Software Testing techniques include, but are not restricted to, the process of running a computer program or application with the aim of finding software defects. In this article we will discuss some of the basic and most commonly used test-techniques and quality assurance testing methods applicable to any software project:
  • Usability testing methods: In this method we test how easily the end users can learn and use the product. Understandably this is subjective, and will depend upon the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used to find and test the “userfriendliness” of the application. Coders and testers are commonly not suited as usability testers.

  • Integration testing techniques: Testing of combined modules of an application to determine if they function together correctly. Commonly performed after unit and functional test. This type of Software Testing is especially applicable to client/server and distributed systems.
Top Down Integration: An approach to integration testing where the component at the top of the component hierarchy is tested first, with lower level components being simulated by stubs. Tested components are then applied to test lower level components. The process is repeated until the most down level components have been tested.

          Bottom Up Integration: An approach to integration testing where the  
            lowest level components are tested first, then used to facilitate the testing 
            of higher level components. The process is repeated till the component 
            part at the top in the hierarchy is tested.
  • Exploratory testing techniques: frequently accepted to mean a creative, informal software test which is not established on formal test plans or test cases; testers might be learning the software as they test it. Exploratory testing is not a new testing technique - as a matter of fact, many test engineers consciously or unconsciously apply of this technology. So, what is exploratory test?
    In general, exploratory testing has the following number of characteristics:
    1.  Exploratory test emphasis on the test cases design and testing the code at the"same time" as opposed to the traditional software testing process which strictly follows "first design, followed by implementation and testing”.
    2. Test engineers will continuously learn the system under test by doing the testing. 
    3. The focus of exploratory testing is to create new test cases continuously as exploring the system.
  • Agile Testing Methods: Test Plan -> Test Design -> Test Execution -> Test Analyses and Report, this process perhaps the most common process in any STLC. But here the test process in any agile project is little bit different. We split up the project into several iterations, and each phase will have its own plan, design, execution and report. So actually, every the test documents should be maintained in the whole project.
  • Regression Testing Techniques: It is nothing but retesting a previously tested program following modification to ensure that faults have not been introduced or uncovered as a result of the changes made. Basic methods of regression testing include re-running previously run tests and validating whether previously fixed defects have reappeared. Experience has shown that as software package is developed, this kind of reemergence of faults is most common. Some of the times it occurs because a fix gets lost through poor version control practices (or simple human error in revision control), but in a great deal a fix for a problem will be "fragile" in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Finally, it's often been the case that when some feature is redesigned, the same faults will be made in the redesign that were made in the original implementation of the feature. Hence, in most Software development situations it is considered good practice that when a defect is located and fixed, a Test that exposes the defect is recorded and on a regular basis retested after future changes to the Program. Though this may be exercised through Manual testing procedures using programming techniques, it is frequently done using automated testing tools. Such a test suite contains software tools that allow the testing environment to execute all the regression test cases automatically; a few projects even frame-up automated systems to automatically re run all regression tests at defined intervals and report any regressions errors. More common strategies are to run such a system after every successful compile (for small projects), every night, or once a week.
  • Sate transition software testing techniques: A form of black box testing design techniques, the design of test cases to execute valid and invalid state transitions.

No comments:

Post a Comment