QA Interview
Sanity Testing
Conducted to check the high-level features of a software. It is performed as a subset of regression testing to ensure that the software performs as per the given requirements.
Smoke Testing
Conducted to check the stability of the build. It is the initial stage of testing to check whether the build is in testable condition or not.
The general principles of the Agile Method
Changing requirements are embraced for the client's competitive advantage.
Disadvantages of Bottom-Up Approach:
a) Driver modules are essential b) The program as an entity does not exist until the last module is added
• What are the best types of tests to perform on web-based applications?
- Functionality Testing (Testing all links, Testing Cookies, Test HTML or CSS, Test Workflow, Ex: Selenium) - Usability Testing (UX, UI) - Interference (Database are communicating effectively, Web Servers are handling requests without errors, Information is being stored in databases effectively) - Database Testing (Response time, data integrity, effective querying) - Compatibility Testing (Changes in OS, Browser Compatibility) - Performance Testing (Speed tests, load tests, stress tests, crash reboot tests) - Security Testing (Restricted Files should not be downloadable, proper time-out functionality, authorized credit card where needed - Crowd Testing (End User Testing)
• What's the difference between Quality assurance (QA), Quality control (QC) and Software Testing?
- Quality Assurance is Process Management (sprint-planning), Quality Control is Product Testing (pre-deployment), Software Testing is the test suites and cases that actually test functionality.
26) Explain what is Bug triage?
A bug triage is a process to Ensure bug report completeness Assign and analyze the bug Assigning bug to proper bug owner Adjust bug severity properly Set appropriate bug priority
28) Explain what is a cause effect graph?
A cause effect graph is a graphical representation of inputs and the associated outputs effects that can be used to design test cases.
24) List out the roles of Software Quality Assurance engineer?
A software quality assurance engineer tasks may include following things amongst others Writing source code Software design Control of source code Reviewing code Change management Configuration management Integration of software Program testing Release management process
30) Explain what is traceability matrix?
A test matrix is used to map test scripts to requirements.
21) What is thread testing?
A thread testing is a top-down testing, where the progressive integration of components follows the implementation of subsets of the requirements, as opposed to the integration of components by successively lower levels.
12) What is Agile testing and what is the importance of Agile testing?
Agile testing is software testing, is testing using Agile Methodology. The importance of this testing is that, unlike normal testing process, this testing does not wait for the development team to complete the coding first and then doing testing. The coding and testing both goes simultaneously. It requires continuous customer interaction.
The general principles of the Agile Method
At regular intervals, the team will reflect on how to become more effective, and they will tune and adjust their behavior accordingly.
Regression Testing
Conducted after a developer fixes the piece of code which the bug is infected. While doing regression testing, mainly the focus is on the broken feature and other related areas of that feature.
5) What is bug leakage and bug release?
Bug release is when software or an application is handed over to the testing team knowing that the defect is present in a release. During this the priority and severity of bug is low, as bug can be removed before the final handover. Bug leakage is something, when the bug is discovered by the end users or customer, and not detected by the testing team while testing the software.
3) What is the difference between build and release?
Build: It is a number given to Installable software that is given to the testing team by the development team. Release: It is a number given to Installable software that is handed over to the customer by the tester or developer.
20) What is CRUD testing and how to test CRUD?
CRUD stands for Create, Read, Update and Delete. CRUD testing can be done using SQL statements.
The general principles of the Agile Method
Concentrate on delivering working software frequently. Delivery preference will be placed on the shortest possible time span.
6) What is data driven testing?
Data driven testing is an automation testing framework, which tests the different input values on the AUT. These values are read directly from the data files. The data files may include csv files, excel files, data pools and many more.
What is Verification? (Static Testing)
Definition : The process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. Walkthrough Inspection Review
What is Validation? (Dynamic Testing)
Definition: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements. Testing End Users
The general principles of the Agile Method
Developers and business people must work together throughout the entire project.
The general principles of the Agile Method
Face-to-face communication is the best way to transfer information to and from a team.
Functional Testing
Functional testing is a kind of black box testing where test cases are prepared keeping the specifications in mind. This form of testing is done to check if the system is in compliance with the client's requirements. Basically in case of functional testing the following checks are important: 1. The tester needs to be very clear about the functionality that the application is supposed to perform. 2. In order to test the application it is very important to have the right set of data. 3. The output of application for the test data provided should be checked as per the functional specification defined. 4. The test cases must cover all possible test scenarios. 5. The actual result for a given input should be recorded and checked against the expected output.
class TestCat: def test_scratch(self, cat, couch): happiness_before = cat.happiness couch.damage(cat.claws) happiness_after = cat.happiness assert happiness_before <= happiness_after
Good enough, this test will run and pass. Unfortunately, as predictable as it can be, Couch developers wanted a way to optimize its damage taking hability and avoid possible holes. In their newest release, they updated the damage() function to also include different and unsual kinds of couch materials — such as glass and bees. As a consequence, damage() may now return values from -10 to 10. With failing tests, we're compeled to fix our code. By adding a few lines, it is possible to avoid this kind of error.
Portability Testing
How the change of environment changes the performance of the software is tested using portability testing. How the software works on different operating systems or if it is a web-based application, it would be checked for performance on different web browsers etc are tested. If the customer intends to use the software application for more than one platform, this form of testing is important. This form of testing is a subset of system testing.
import Couch class Cat: def scratch(self, Couch): damage = Couch.damage(self.claws) if damage > 0: self.hapiness += damage
However, there's another major problem: we haven't predicted this behavior in our unit test case. Now, we need to update our tests to foresee and avoid this output.
29) Explain what is Test Metric is software testing and what information does it contains?
In software testing, Test Metric is referred to the standard of test measurement. They are the statistics narrating the structure or content of a testing. It contains information like Total test Test run Test passed Test failed Tests deferred Test passed the first time
import Couch class Cat: def scratch(self, Couch): self.happiness += Couch.damage(self.claws)
In the above example, there is a Catand a Couch class. Each of them are managed by different developers. Cat uses Couch, but Couch doesn't need (or want) Cat. Moreover, Couch documentation states that damage() should return a value from 0 to 10 which corresponds to the hole-creating hability of the given sharp object. In our case, Cat.claws. In this scenario, it's easy to see that a change of behavior in Couch may cause Cat to crash. Maybe unit testing will help us?
* Bottom-Up Approach (BUA)
Involves development of all the elementary modules or child modules beforehand followed by due integration with the corresponding parent modules. This approach uses a Program called "Driver". While integrating the modules with this Bottom-Up Approach, if at any stage it is found that some mandatory module is missing, then in such an event that particular module is replaced with a temporary program known as "Driver".
* Top-Down Approach (TDA)
Involves development of all the topmost / parent modules beforehand followed by due integration with child modules. This approach uses a Program called "Stub". While integrating the modules with this Top-Down Approach, if at any stage it is found that some mandatory module is missing, then in such an event that particular module is replaced with a temporary program known as "Stub".
22) What is configuration management?
It is a process to control and document any changes made during the life of a project. Release control, Change control and Revision control are the important aspects of configuration management.
23) What is Ad Hoc testing?
It is a testing phase where the tester tries to break the system by randomly trying the system's functionality. It can include negative testing as well.
17) Explain stress testing, load testing and volume testing?
Load Testing: Testing an application under heavy but expected load is known as Load Testing. Here, the load refers to the large volume of users, messages, requests, data, etc. Stress Testing: When the load placed on the system is raised or accelerated beyond the normal range then it is known as Stress Testing. Volume Testing: The process of checking the system, whether the system can handle the required amounts of data, user requests, etc. is known as Volume Testing.
36) Explain what is MR and what information does MR consists of?
MR stands for Modification Request also referred as Defect report. It is written for reporting errors/problems/suggestions in the software.
4) What are the automation challenges that SQA(Software Quality Assurance) team faces while testing?
Mastering the automation tool Reusability of Automation script Adaptability of test case for automation Automating complex test cases.
Bug-Life Cycle
New: When a defect is logged and posted for the first time. Its state is given as new. Assigned: Once the bug is posted by the tester, the lead of the tester approves the bug and assigns the bug to developer team. There can be two scenario, first that the defect can directly assign to the developer, who owns the functionality of the defect. Second, it can also be assigned to the Dev Lead and once it is approved with the Dev Lead, he or she can further move the defect to the developer. Open: Its state when the developer starts analyzing and working on the defect fix. Fixed: When developer makes necessary code changes and verifies the changes then he/she can make bug status as 'Fixed'. This is also an indication to the Dev Lead that the defects on Fixed status are the defect which will be available to tester to test in the coming build. Retest: At this stage the tester do the retesting of the changed code which developer has given to him to check whether the defect got fixed or not. Once the latest build is pushed to the environment, Dev lead move all the Fixed defects to Retest. It is an indication to the testing team that the defects are ready to test. Reopened: If the bug still exists even after the bug is fixed by the developer, the tester changes the status to "reopened". The bug goes through the life cycle once again. Deferred: The bug, changed to deferred state means the bug is expected to be fixed in next releases. The reasons for changing the bug to this state have many factors. Some of them are priority of the bug may be low, lack of time for the release or the bug may not have major effect on the software. Rejected: If the developer feels that the bug is not genuine, developer rejects the bug. Then the state of the bug is changed to "rejected". Duplicate : If the bug is repeated twice or the two bugs mention the same concept of the bug, then the recent/latest bug status is changed to "duplicate". Closed: Once the bug is fixed, it is tested by the tester. If the tester feels that the bug no longer exists in the software, tester changes the status of the bug to "closed". This state means that the bug is fixed, tested and approved. Not a bug/Enhancement: The state given as "Not a bug/Enhancement" if there is no change in the functionality of the application. For an example: If customer asks for some change in the look and field of the application like change of color of some text then it is not a bug but just some change in the looks of the application.
Regression Testing
Once a defect is detected in the system it is immediately sent for fixing. However, once the defect is fixed it is important to carry out intense testing in order to check that changes made in the code has not affected any other area of the system. Regression testing is carried out to ensure that bug fixing has not caused any functionality or business logic violation. Regression testing helps in minimizing gaps in testing process. It ensures that the application has no defects before it is sent for next testing phase.
7) Explain the steps for Bug Cycle?
Once the bug is identified by the tester, it is assigned to the development manager in open status If the bug is a valid defect the development team will fix it. If it is not a valid defect, the defect will be ignored and marked as rejected The next step will be to check whether it is in scope. If the bug is not the part of the current release then the defects are postponed If the defect or bug is raised earlier then the tester will assign a DUPLICATE status When bug is assigned to developer to fix, it will be given a IN-PROGRESS status Once the defect is repaired, the status will change to FIXED at the end the tester will give CLOSED status if it passes the final test.
User Acceptance Testing
Performed by the end users/client to verify whether the system is worker as per the given requirements or not. In other words, the software is tested in the real world by the intended audience.
The general principles of the Agile Method
Projects must be based on people who are motivated. Give them the proper environment and the support that they need. They should be trusted to get their jobs done.
35) Explain what should your QA documents include?
QA testing document should include List the number of defects detected as per severity level Explain each requirement or business function in detail Inspection reports Configurations Test plans and test cases Bug reports User manuals Prepare separate reports for managers and users
31) Explain what is the difference between Regression testing and Retesting?
Retesting is carried out to check the defects fixes, while regression testing is performed to check whether the defect fix have any impact on other functionality.
16) What are the tools used by a tester while testing?
Selenium Firebug OpenSTA WinSCP YSlow for FireBug Web Developer toolbar for firebox
The general principles of the Agile Method
Self-organized teams usually create the best designs.
18) What are the five common solutions for software developments problems?
Setting up the requirements criteria, the requirements of a software should be complete, clear and agreed by all The next thing is the realistic schedule like time for planning , designing, testing, fixing bugs and re-testing Adequate testing, start the testing immediately after one or more modules development. Use rapid prototype during design phase so that it can be easy for customers to find what to expect Use of group communication tools
The general principles of the Agile Method
Simplicity is considered to be the art of maximizing the work that is not done, and it is essential.
37) What does the software QA document should include?
Software QA document should include Specifications Designs Business rules Configurations Code changes Test plans Test cases Bug reports User manuals, etc
32) List out the software quality practices through the software development cycle?
Software quality practices includes Review the requirements before starting the development phase Code Review Write comprehensive test cases Session based testing Risk based testing Prioritize bug based on usage Form a dedicated security and performance testing team Run a regression cycle Perform sanity tests on production Simulate customer accounts on production Include software QA Test Reports
Performance Testing
Subjects such as network delay, data rendering, database transaction processing, load balancing between servers are generally uncovered during performance testing. In other words, rather than finding defects in the actual software, performance testing focuses on testing performance issues. It is important to have stability, scalability and speed which means good response time and data rendering. So it's important to conduct performance testing in any software.
13) What is Test case?
Test case is a specific condition to check against the Application Under Test. It has information of test steps, prerequisites, test environment, and outputs.
11) What are the contents of test plans and test cases?
Testing objectives Testing scope Testing the frame The environment Reason for testing The criteria for entrance and exit Deliverables Risk factors
2) What is Testware?
Testware is test artifacts like test cases, test data, test plans needed to design and execute a test.
19) What is a 'USE' case and what does it include?
The document that describes, the user action and system response, for a particular functionality is known as USE case. It includes revision history, table of contents, flow of events, cover page, special requirements, pre-conditions and post-conditions.
· Localization testing:
The program is modified to present its user interface in a different language and/or following a different set of cultural rules. Localization testing may involve several old tests (some of which have been modified to take into account the new language) along with several new (non-regression) tests.
Conversion or port testing:
The program is ported to a new platform and a subset of the regression test suite is run to determine whether the port was successful. (Here, the main changes of interest might be in the new platform, rather than the modified old code.)
· Configuration testing:
The program is run with a new device or on a new version of the operating system or in conjunction with a new application. This is like port testing except that the underlying code hasn't been changed — only the external components that the software under test must interact with.
1) What is the difference between the QA and software testing?
The role of QA (Quality Assurance) is to monitor the quality of the "process" used to produce the software. While the software testing, is the process of ensuring the functionality of final product meets the user's requirement.
33) Explain what is the rule of a "Test Driven Development"?
The rule of a Test Driven Development is to prepare test cases before writing the actual code. Which means you are actually be writing code for the tests before you write code for the application.
14) What is the strategy for Automation Test Plan?
The strategy for Automation Test Plan Preparation of Automation Test Plan Recording the scenario Error handler incorporation Script enhancement by inserting check points and looping constructs Debugging the script and fixing the issues Rerunning the script Reporting the result
25) Explain what are test driver and test stub and why it is required?
The stub is called from the software component to be tested. It is used in top down approach The driver calls a component to be tested. It is used in bottom up approach It is required when we need to test the interface between modules X and Y and we have developed only module X. So we cannot just test module X but if there is any dummy module we can use that dummy module to test module X
What is quality audit?
The systematic and independent examination for determining the effectiveness of quality control procedures is known as the quality audit.
8) What does the test strategy include?
The test strategy includes an introduction, resource, scope and schedule for test activities, test tools, test priorities, test planning and the types of test that has to be performed.
10) What is branch testing and what is boundary testing?
The testing of all the branches of the code, which is tested once, is known as branch testing. While the testing, that is focused on the limit conditions of the software is known as boundary testing.
34) Mention what are the types of documents in SQA?
The types of documents in SQA are Requirement Document Test Metrics Test cases and Test plan Task distribution flow chart Transaction Mix User profiles Test log User profiles Test incident report Test summary report
27) List out various tools required to support testing during development of the application?
To support testing during development of application following tools can be used Test Management Tools: JIRA, Quality Center etc. Defect Management Tools: Test Director, Bugzilla Project Management Tools: Sharepoint Automation Tools: RFT, QTP, and WinRunner
9) Mention the different types of software testing?
Unit testing Integration testing and regression testing Shakeout testing Smoke testing Functional testing Performance testing White box and Black box testing Alpha and Beta testing Load testing and stress testing System testing
Usability Testing
Usability testing is a process in which the testers test the product to check how easy it would be for the user to use the user interface or in other words the software is tested for its user friendliness. It is a form of black box testing. Usability testing assures the end user that the software is of good quality and easy to use. This type of testing very essential in order to satisfy the customers and it needs to be planned well. If planned properly, this activity can be highly beneficial and economical.
38) Mention how validation activities should be conducted?
Validation activities should be conducted by following techniques Hire third party independent verification and validation Assign internal staff members that are not involved in validation and verification activities Independent evaluation
The general principles of the Agile Method
Working software is the primary measurement of progress.
Disadvantages of Top-down Approach:
a) Stub modules are essential b) Test conditions may be impossible, or very difficult, to create c) Observation of test output is more difficult, as only simulated values will be used initially. For the same reason, program correctness can be misleading
Advantages of Bottom-Up Approach:
a) This approach is advantageous if all major flaws are captured towards the bottom of the program b) Test conditions are easier to create c) Observations of test results are easier since "live" data is used from the beginning.
Advantages of Top-down Approach:
a) This approach is advantageous if all major flaws are captured towards the top of the program b) Early skeletal program allows demonstrations and boosts the morale
· Smoke testing
also known as build verification testing: A relatively small suite of tests is used to qualify a new build. Normally, the tester is asking whether any components are so obviously or badly broken that the build is not worth testing or some components are broken in obvious ways that suggest a corrupt build or some critical fixes that are the primary intent of the new build didn't work. The typical result of a failed smoke test is rejection of the build (testing of the build stops) not just a new set of bug reports.
Integration testing
is a testing of all integrated modules to verify the combined functionality after integration.
Blackbox testing
is a testing technique that ignores the internal mechanism of the system and focuses on the output generated against any input and execution of the system. It is also called functional testing.
Whitebox testing
is a testing technique that takes into account the internal mechanism of a system. It is also called structural testing and glass box testing.
1) Reusable Test Cases 2) Obsolete Test Cases.
· Re-usable Test cases can be used in succeeding regression cycles. · Obsolete Test Cases can't be used in succeeding cycles.