Wednesday, 14 August 2013

Introduction of Smoke Testing / Build Verification Test

Smoke testing is done by developers before the build is released or by testers before accepting a build for further testing. In software testing, a smoke test is a collection of written tests that are performed on a system prior to being accepted for further testing. The tester “touches” all areas of the application without getting too deep, looking for answers to basic questions like, “Can I launch the test item at all?”. There is no need to get down to field validation or business flows. If you get a “No” answer to basic questions like these, then the application is so badly broken, there’s effectively nothing there to allow further testing. These written tests can either be performed manually or using an automated tool.

What is Stress Testing

Stress testing is a form of testing that is used to determine the stability of a given system or entity at excessive the i.e. greater than the one the application can handle. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.
Stress testing can be performed in two ways. On one hand we can increase the load i.e. increase it beyond the accepted limit and go on increasing this load until the response time of the system falls suddenly. The other way around we can decrease the resources i.e. we can decrease the ram or the hard disk and then check the system’s response time.

Introduction of Performance Testing

In software engineering, performance testing is testing that is performed to determine how fast some aspect of a system performs under a particular workload. It can compare two systems to find which performs better. Or it can measure what parts of the system or workload cause the system to perform badly. Performance testing is frequently not performed against a specification, i.e. no one will have expressed what is the maximum acceptable response time for a given population of users, but should be. However, performance testing is frequently used as part of the process of performance profile tuning. The idea is to identify the “weakest link” – there is inevitably a part of the system which, if it is made to respond faster, will result in the overall system running faster. It is sometimes a difficult task to identify which part of the system represents this critical path, and some test tools include (or can have add-ons that provide) instrumentation that runs on the server (agents) and report transaction times, database access times, network overhead, and other server monitors, which can be analyzed together with the raw performance statistics.
Performance specifications should ask the following questions, at a minimum:
• In detail, what is the performance test scope? What subsystems, interfaces, components,
etc are in and out of scope for this test?
• For the user interfaces (UI’s) involved, how many concurrent users are expected for each
(specify peak vs. nominal)?
• What does the target system (hardware) look like (specify all server and network appliance
configurations)?
• What is the Application Workload Mix of each application component? (for example: 20%
login, 40% search, 30% item select, 10% checkout).
• What is the System Workload Mix? [Multiple workloads may be simulated in a single
performance test] (for example: 30% Workload A, 20% Workload B, 50% Workload C)
• What are the time requirements for any/all backend batch processes (specify peak vs.
nominal)?

Introduction of Functional Testing

Functional testing is a form of black box testing that bases its test cases on the specifications of the software component under test.
Functional testing typically involves five steps:
1. The identification of functions that the software is expected to perform
2. The creation of input data based on the function’s specifications
3. The determination of output based on the function’s specifications
4. The execution of the test case
5. The comparison of actual and expected outputs

Different Levels of Testing

There are various levels of testing:
• Unit Testing
• Integration Testing
• System Testing
There are various types of testing based upon the intent of testing such as:
• Acceptance Testing
• Performance Testing
• Load Testing
• Regression Testing
Based on the testing Techniques testing can be classified as:
• Black box Testing
• White box Testing