Wednesday, November 01, 2006

Benefits of Automated Testing
Fast
QuickTest runs tests significantly faster than human users.
Reliable
Tests perform precisely the same operations each time they are run, thereby eliminating human error.
Repeatable
You can test how the Web site or application reacts after repeated execution of the same operations.
Programmable
You can program sophisticated tests that bring out hidden information.
Comprehensive
You can build a suite of tests that covers every feature in your Web site or application.
Reusable
You can reuse tests on different versions of a Web site or application, even if the user interface changes

software testing

Describe bottom-up and top-down approaches in Regression Testing.
Bottom-up approach : In this approach testing is conducted from sub module to main module, if the main module is not developed a temporary program called DRIVERS is used to simulate the main module.
Top-down approach : In this approach testing is conducted from main module to sub module. if the sub module is not developed a temporary program called STUB is used for simulate the submodule.
What is the difference between structural and functional testing?
Structural testing is a "white box" testing and it is based on the algorithm or code. Functional testing is a "black box" (behavioral) testing where the tester verifies the functional specification.
What is Re- test ? What is Regression Testing ?
Re- test - Retesting means we testing only the certain part of an application again and not considering how it will effect in the other part or in the whole application.
Regression Testing - Testing the application after a change in a module or part of the application for testing that is the code change will affect rest of the application.
What are the basic solutions for the software development problems?
Basic requirements - clear, detailed, complete, achievable, testable requirements has to be developed. Use some prototypes to help pin down requirements. In nimble environments, continuous and close coordination with customers/end-users is needed.
Schedules should be realistic - enough time to plan, design, test, bug fix, re-test, change, and document in the given schedule.
Adequate testing – testing should be started early, it should be re-tested after the bug fixed or changed, enough time should be spend for testing and bug-fixing.
Proper study on initial requirements – be ready to look after more changes after the development has begun and be ready to explain the changes done to others. Work closely with the customers and end-users to manage expectations. This avoids excessive changes in the later stages.
Communication – conduct frequent inspections and walkthroughs in appropriate time period; ensure that the information and the documentation is available on up-to-date if possible electronic. More emphasize on promoting teamwork and cooperation inside the team; use prototypes and proper communication with the end-users to clarify their doubts and expectations.
What are the common problems in the software development process?
Inadequate requirements from the Client - if the requirements given by the client is not clear, unfinished and not testable, then problems may come.
Unrealistic schedules – Sometimes too much of work is being given to the developer and ask him to complete in a Short duration, then the problems are unavoidable.
Insufficient testing – The problems can arise when the developed software is not tested properly.
Given another work under the existing process – request from the higher management to work on another project or task will bring some problems when the project is being tested as a team.
Miscommunication – in some cases, the developer was not informed about the Clients requirement and expectations, so there can be deviations.
End-to-end testing – This is similar to system testing; this involves testing of a complete application environment such as interacting with a database, using network communications, or interacting with other hardware, applications and so on.
How do you decide when you have 'tested enough’?
Common factors in deciding when to stop are:
1.Deadlines (release deadlines, testing deadlines, etc.)
Test cases completed with certain percentage passed
Test budget depleted
Coverage of code/functionality/requirements reaches a specified point
Bug rate falls below a certain level
Beta or alpha testing period ends
Describe the difference between validation and verification
Verification is done by frequent evaluation and meetings to appraise the documents, policy, code, requirements, and specifications. This is done with the checklists, walkthroughs, and inspection meetings.
Validation is done during actual testing and it takes place after all theverifications are being done.
Drivers and Stub:
If you need to feed a unit under test with input data then you have a test driver. If the unit under test has to make a procedure call to another unit, then you can replace that unit with a stub, just to make sure that the call is received.
STUBS: Stubs simulate sub-programs or modules while testing higher- level routines.
DRIVER: Driver programs provide emerging low-level modules with simulated inputs and the necessary resources to function. Drivers are important for bottom-up testing, where you have a complete low- level module, but nothing to test it with.
Consider you are testing a module "A" which includes sub- modules "B", "C" and "D". Module A and the sub-modules B and C are complete and are ready to be tested. But the sub-module D is still under development and not ready for testing. In this case if you would like to test the module A, then you would use a STUB in place of the sub-module D. The STUB acts as a simulator for D, so that you can go ahead with testing the module A.
Similarly if module A is under development and the sub-modules B,C and D are complete and ready to be tested. In this case you would use a DRIVER in place of A and continue testing B,C and D.