Thursday, June 11, 2009

While Applying Automation Testing

Why do we need Software Automation testing ---

1) What are the main attributes of test automation?

Maintainability - the effort needed to update the test automation suites for each new release
Reliability - the accuracy and repeatability of the test automation
Flexibility - the ease of working with all the different kinds of automation test ware Efficiency - the total cost related to the effort needed for the automation
Portability - the ability of the automated test to run on different environments
Robustness - the effectiveness of automation on an unstable or rapidly changing system
Usability - the extent to which automation can be used by different types of users

2) What are main benefits of test automation?

1. Increases the speed of testing process

2. Facilitates creation of tests that check all aspects of application or website

3. Provides reusable tests that can be run each time the site or application changes


3) What are the common problems with automation process?

1. Maintenance of old script when there is a feature change or enhancement

2. The use of script when we migrate the application from old version to new version

3. The change in application technology can affect on created old scripts

4) Which testing activities we need to automate? How can we identify?

The test cases those are need to execute repeatedly to obtain time saving with the accuracy of test case expected result. All high priority test cases which would be execute as a part of regression testing.


Fundamental of Manual Testing

Walkthrough with Manual Testing concepts :-

1) How will you describe testing activities?
Test Planning; write Test cases/Script, Execution of Test case/Scripts, defect reporting & tracking, regression testing, Sign off.

2) What is test case and test script?
Test case: - A test case is unique identifier, requirement references from a design specification, preconditions, events, a series of steps (also known as actions) to follow, input, output, expected result, and actual result. We can define a test case is an input to do set of actions and an expect the  result for each performed action which is here as step.
Test Script:
- The test script is the combination of a test case, test procedure, and test data. Initially the term was relating with automated regression test tools. Today, test scripts can be manual, automated or a combination of both. Nowadays, many professionals are using this term for automation test case.



3) What is functionality testing?

Functionality testing employed to verify your product meets the intended specifications and functional requirements placed out into your development documentation.


4) What is regression testing?
Testing conducted for the purpose of evaluating whether or not a change to the system has introduced a new failure. Regression testing is often accomplished through the construction, execution and analysis of product and system tests. Usually it is later part in the software development life cycle.

5) What is Retesting?

Its type of testing in which an already tested functionality is once again tested on new build by using different input data, to make sure that the defect is the reproducible (if any defects) and to rule out environment issue. Testing the same application once again by prepared test cases or executes all test cases as a another cycle.

6) What is Agile testing?
Agile testing involves testing from the customer perspective as early as possible, or we can say at the end of agile SPRINT,  Sprint demo and often as code becomes available and stable enough from module/unit level testing.


7) What Smoke & sanity testing? What is difference?

Sanity Testing: - This has to perform before testing start. Verify whether application is stable or not, we want to write test cases for product whether development team released build is able to conduct complete testing or not.
Smoke Testing: - Testing the application whether it's performing its basic functionality properly or not, so that the test team can go ahead with the application.

8) What is the difference between Bug and Defect?
Bug: Deviation from the expected result.
Defect: Problem in algorithm leads to failure.
Error: A Mistake in code is called Error.Due to Error in coding, test engineers are getting mismatches in application is called defect.

9) What is Compatibility testing?
It’s used to determine if your software application has issues related to how it functions in concerts with operating system and different types of system Software and Hardware applications.

10) What is the verification & validation?
Verification: - Typically involves reviews and meetings to evaluate (estimate, calculate) documents, plans, code requirements and specifications. This can be done with check lists, issue lists, walk through & inspections meetings. Verification is static. No code is executed. Say, analysis of requirements etc.
Validation: Typically involves actual testing and takes place after verification are completed. Validation is dynamic. Code is executed with scenarios present in test cases.



Defect Life Cycle:-

11) How to decide the severity of the defect?
Severity Level Description Response time / Turn around time 
High - A defect occurred due to the inability of a key function to perform. This problem causes the system to hang or the user dropped out of the system.  
Medium - A defect occurred with severely restriction the system such as the inability to use a major function of the system. There is no acceptable work around but the problem does not inhibit the testing of other function.
Low - A defect is occurred which places minor restriction a function that is not critical. There is an acceptable work-around for the defect.

1) What is difference between the Severity & Priority?

DEFECT SEVERITY vs. DEFECT PRIORITY:

Severity: How much the defect is effecting with application.
Priority: Relative importance of the defect, how fast the developer has to take up the defect.

1. The general rule fortune fixing the defects will depend on the severity. All the high severity defects should be fixed first.
2. This may not be the same in all cases sometimes even though severity of the bug is high it may not be taken as the high priority. At the same time the low severity bug may be considered as high priority.

2) How to estimate the required time to design/execution of test cases?
It can be estimate by understanding the project requirements, flow, feature to be tested. It also varies as per experience of QA person.

3) What is Boundary Value Analysis & Equivalence Partition?
Boundary Value Analysis – This is the method divides input domain of programs into classes of data from which test cases can be derived. The purpose is to represents a set of valid and invalid states for input condition.
In BVA we check the boundary values i.e. exact boundary values less than boundary values and values which exceeds boundary.
Advantages:
a) Very good at exposing potential user interface/user input problems
b) Very clear guide lines on determining test cases
c) Very small set of test cases generated
Disadvantages:
a) Does not test all possible inputs
b) Does not test dependencies between combination of inputs

Equivalence partition: - It’s designed to minimize the number of test cases by dividing tests in such way that the system is expected to act the same way for all tests of each Equivalence portion. This technique relies on looking at the set of valid inputs specified for a module and dividing it up into classes of data that should, according to the specification, be treated identically. One set of test data is then devised to represent each equivalence class. The principle is that any representative will be as good as any other in finding faults in the handling of that class.
Advantages:
a) Equivalence partitions are designed so that every possible input belongs to one and only one equivalence partition.
Disadvantages:
a) Doesn’t test every input
b) No guide lines for choosing inputs

4) What is Performance Testing?
Goal of performance testing is to eliminate bottleneck response of application and establish baseline for future regression testing. Verify application under controlled process measurement and analysis so that application is to be run smoothly.

5) What is Load, Volume & Stress testing?

Load testing – It’s the process of exercising the system test by feeding the largest work it can operate. Verify the system capability to handle a constant moderate load for a long time. Expose bugs that do not surface in cursory testing, such as memory management bugs, memory leaks, buffer overflows, etc.
Volume Testing - Verify the system for large kind of operations load for short time.
Eg. 1. Testing word processor by editing very large document
2. Testing Printer by sending very large data
3. Testing Mail server by sending the thousands of users mailboxes
Stress Testing - Stress testing tries to break the system under test by overwhelming its resources or by taking resources away from it (in which case it is sometimes called negative testing). The main purpose behind this madness is to make sure that the system fails and recovers gracefully this quality is known as recover-ability.

OR


Evaluates extend to which a system keeps working when subjected to extreme workloads or when some of its hardware or software is compromised. Primary goal is to determine the maximum amount of work system can handle without breaking.

Live with Manual testing

Overview of manual testing process :-

1) How will you describe testing activities?
Test Planning; write Test cases/Script, Execution of Test case/Scripts, defect reporting & tracking, regression testing, Sign off.

2) What is test case & test script?
Test case: - A test case is unique identifier, requirement references from a design specification, preconditions, events, a series of steps (also known as actions) to follow, input, output, expected result, and actual result. Clinically defined a test case is an input and an expected result.
Test Script: - The test script is the combination of a test case, test procedure, and test data. Initially the term was relating with automated regression test tools. Today, test scripts can be manual, automated, or a combination of both.

3)
What is functionality testing?
Functionality testing employed to verify your product meets the intended specifications and functional requirements placed out into your development documentation.
4) What is regression testing?
Testing conducted for the purpose of evaluating whether or not a change to the system has introduced a new failure. Regression testing is often accomplished through the construction, execution and analysis of product and system tests.

5) What is Retesting?
Its type of testing in which an already tested functionality is once again tested on new build by using different input data, to make sure that the defect is the reproducible (if any defects) and to rule out environment issue. Testing the same application once again by prepared test cases or executes all test cases.

6)what is Agile testing?
Agile testing involves testing from the customer perspective as early as possible, testing early and often as code becomes available and stable enough from module/unit level testing.

7)What Smoke & sanity testing? What is difference?
Sanity Testing: - This has to perform before testing start. Verify whether application is stable or not, we want to write test cases for product whether development team released build is able to conduct complete testing or not.
Smoke Testing: - Testing the application whether it's performing its basic functionality properly or not, so that the test team can go ahead with the application.
8) What is the difference between Bug and Defect?
Bug: Deviation from the expected result.
Defect: Problem in algorithm leads to failure.
Error: A Mistake in code is called Error. Due to Error in coding, test engineers are getting mismatches in application is called defect.

9) What is Compatibility testing?
It’s used to determine if your software application has issues related to how it functions in concerts with operating system and different types of system Software and Hardware applications.

10) What is the verification & validation?
Verification: - Typically involves reviews and meetings to evaluate (estimate, calculate) documents, plans, code requirements and specifications. This can be done with check lists, issue lists, walk through & inspections meetings. Verification is static. No code is executed. Say, analysis of requirements etc.
Validation: Typically involves actual testing and takes place after verifications are completed. Validation is dynamic. Code is executed with scenarios present in test case.

11) How to decide the severity of the defect?

Severity Level

Description

Response time /

Turn around time

High

A defect occurred due to the inability of a key function to perform. This problem causes the system to hang or the user dropped out of the system.

Defect should be responded to within 24 hrs & the situation should be resolved test exit.

Medium

A defect occurred with severely restriction the system such as the inability to use a major function of the system. There is no acceptable work around but the problem does not inhibit the testing of other function

A response or action plan should be provided within 3 working days.

Low

A defect is occurred which places minor restriction a function that is not critical. There is an acceptable work-around for the defect.

A response or action plan should be provided within 5 working days.



12) How to estimate the required time to design/execution of test cases?

It can be estimate by understanding the project requirements, flow, feature to be tested. It also varies as per experience of QA person.


13) What is Boundary Value Analysis & Equivalence Partition?


Boundary Value Analysis – This is the method divides input domain of programs into classes of data from which test cases can be derived. The purpose is to represents a set of valid and invalid states for input condition.

In BVA we check the boundary values i.e. exact boundary values less than boundary values and values which exceeds boundary.

Advantages:

a) Very good at exposing potential user interface/user input problems

b) Very clear guide lines on determining test cases

c) Very small set of test cases generated

Disadvantages:

a) Does not test all possible inputs

b) Does not test dependencies between combinations of inputs

Equivalence partition: -

It’s designed to minimize the number of test cases by dividing tests in such way that the system is expected to act the same way for all tests of each Equivalence portion.

This technique relies on looking at the set of valid inputs specified for a module and dividing it up into classes of data that should, according to the specification, be treated identically. One set of test data is then devised to represent each equivalence class. The principle is that any representative will be as good as any other in finding faults in the handling of that class.

Advantages:

a) Equivalence partitions are designed so that every possible input belongs to one and only one equivalence partition.

Disadvantages:

a) Doesn’t test every input

b) No guide lines for choosing inputs


14) What is Performance Testing?


Goal of performance testing is to eliminate bottleneck response of application and establish baseline for future regression testing. Verify application under controlled process measurement and analysis so that application is to be run smoothly.


15) What is Load, Volume & Stress testing?


Load testing – It’s the process of exercising the system test by feeding the largest work it can operate. Verify the system capability to handle a constant moderate load for a long time.

Expose bugs that do not surface in cursory testing, such as memory management bugs, memory leaks, buffer overflows, etc.

Volume Testing - Verify the system for large kind of operations load for short time.

Eg. 1. Testing word processor by editing very large document

2. Testing Printer by sending very large data

3. Testing Mail server by sending the thousands of users mailboxes

Stress Testing - Stress testing tries to break the system under test by overwhelming its resources or by taking resources away from it (in which case it is sometimes called negative testing). The main purpose behind this madness is to make sure that the system fails and recovers gracefully this quality is known as recoverability.