Top 90 QA Interview Questions Answers
- What is Software Quality Assurance (SQA)?
- What is Software Quality Control (SQC)?
- What is Software Testing?
- Whether, software quality assurance (sqa), software quality control (sqc) and software testing are similar terms?
- Then, what’s the difference between SQA, SQC and Testing?
- What is software testing life cycle (STLC)?
- How STLC is related to or different from SDLC (software development life cycle)?
- What are the phases involved in the software testing life cycle?
- Why entry criteria and exit criteria is specified and defined?
- What do you mean by the requirement study and analysis?
- What are the different types of requirements required in software testing?
- Is it possible to test without requirements?
- Differentiate between software requirement specifications (SRS) and business requirement specification (BRS).
- Why there is a bug/defect in software?
- What is a software testing artifact?
- What are test plan, test suite and test case?
- How to design test cases?
Software quality assurance is an umbrella term, consisting of various planned process and activities to monitor and control the standard of whole software development process so as to ensure quality attribute in the final software product.
With the purpose similar to software quality assurance, software quality control focuses on the software instead to its development process to achieve and maintain the quality aspect in the software product.
Software testing may be seen as a sub-category of software quality control, which is used to remove defects and flaws present in the software, and subsequently improves and enhances the product quality.
No, but the end purpose of all is same i.e. ensuring and maintaining the software quality.
SQA is a broader term encompassing both SQC and testing in it and ensures software development process quality and standard and subsequently in the final product also, whereas testing which is used to identify and detect software defects is a sub-set of SQC.
Software testing life cycle defines and describes the multiple phases which are executed in a sequential order to carry out the testing of a software product. The phases of STLC are requirement, planning, analysis, design, implementation, execution, conclusion and closure.
Both SDLC and STLC depict the phases to be carried out in a subsequent manner, but for different purpose. SDLC defines each and every phase of software development including testing, whereas STLC outlines the phases to be executed during a testing process. It may be inferred that STLC is incorporated in the SDLC phase of testing.
The phases of STLC are requirement, planning, analysis, design, implementation, execution, conclusion and closure.
Entry and exit criteria is defined and specified to initiate and terminate a particular testing process or activity respectively, when certain conditions, factors and requirements is/are being met or fulfilled.
Requirement study and analysis is the process of studying and analysing the testable requirements and specifications through the combined efforts of QA team, business analyst, client and stakeholders.
Software/functional requirements, business requirements and user requirements.
Yes, testing is an art, which may be carried out without requirements by a tester by making use of his/her intellects possessed, acquired skills and gained experience in the relevant domain.
SRS layouts the functional and non-functional requirements for the software to be developed whereas BRS reflects the business requirement i.e., the business demand of a software product as stated by the client.
A bug or a defect in software occurs due to various reasons and conditions such as misunderstanding or requirements, time restriction, lack of experience, faulty third party tools, dynamic or last time changes, etc.
Software testing artifact or testing artifact are the documents or tangible products generated throughout the testing process for the purpose of testing or correspondence amongst the team and with the client.
Test plan defines the comprehensive approach to perform testing of the system and not for the single testing process or activity. A test case is based on the specified requirements & specifications define the sequence of activities to verify and validate one or more than one functionality of the system. Test suite is a collection of similar types of test cases.
Broadly, there are three different approaches or techniques to design test cases. These are
- Black box design technique, based on requirements and specifications.
- White box design technique based on internal structure of the software application.
- Experience based design technique based on the experience gained by a tester.
A test environment comprises of necessary software and hardware along with the network configuration and settings to simulate intended environment for the execution of tests on the software.
Dynamic testing of the software requires specific and controlled environment comprising of hardware, software and multiple factors under which a software is intended to perform its functioning. Thus, test environment provides the platform to test the functionalities of software in the specified environment and conditions.
Test execution is one of the phases of testing life cycle which concerns with the execution of test cases or test plans on the software product to ensure its quality with respect to specified requirements and specifications.
Generally, there are four levels of testing viz. unit testing, integration testing, system testing and acceptance testing.
Unit testing involves the testing of each smallest testable unit of the system, independently.
As developers are well versed with their lines of code, they are preferred and being assigned the responsibility of writing and executing the unit tests.
Integration testing is a testing technique to ensure proper interfacing and interaction among the integrated modules or units after the integration process.
Stubs and drivers are the replicas of modules which are either not available or have not been created yet and thus they works as the substitutes in the process of integration testing with the difference that stubs are used in top bottom approach and drivers are used in bottom up approach.
System testing is used to test the completely integrated system as a one system against the specified requirements and specifications.
Acceptance testing is used to ensure the readiness of a software product with respect to specified requirement and specification in order to get readily accepted by the targeted users.
Broadly, acceptance testing is of two types-alpha testing and beta testing. Further, acceptance testing can also be classified into following forms:
- Operational acceptance testing
- Contract acceptance testing
- Regulation acceptance testing
Both alpha and beta testing are the forms of acceptance testing where former is carried out at development site by the QA/testing team and the latter one is executed at client site by the intended users.
Generally, there are two approaches to perform software testing viz. Manual testing and Automation. Manual testing involves the execution of test cases on the software manually by the tester whereas automation process involves the usage of automation framework and tools to automate the task of test scripts execution.
In comparison to manual approach of testing, automation reduces the efforts and time required in executing the large amount of test scripts, repetitively and continuously for a longer period of time with accuracy and precision.
Yes, but with the help of test strategy using check lists, user scenarios and matrices.
Both ad-hoc testing and exploratory testing are the informal ways of testing the system without having proper planning & strategy. However, in ad-hoc testing, a tester is well-versed with the software and its features and thereby carries out the testing whereas in exploratory, he/she gets to learn and explore more about the software during the course of testing and thus tests the system gradually along with software understanding and learning throughout the testing process.
Both monkey and ad-hoc testing are the informal approach of testing but in monkey testing, a tester does not requires the pre-understanding and detailing of the software, but learns about the product during the course of testing whereas in ad-hoc testing, tester has the knowledge and understanding of the software.
Functional testing tests the system’s functionalities and features as specified prior to software development process. It only validates the intended functioning of the software against the specified requirement and specification but the performance of the system to function in the unexpected circumstances and conditions in real world environment at the users end and to meet customer satisfaction is done through non-functional testing technique. Thus, non-functional testing looks after the non-functional traits of the software.
Both black-box and white-box testing approach have their own advantages and disadvantages. Black-box testing approach enables testers to externally test the system on the basis of specified requirement and specification and does not provide the scope of testing the internal structure of the system, whereas white-box testing methodology verify and validates the software quality through testing of its internal structure and working.
Gray box testing is a third type of testing and a hybrid form of black-box and white-box testing approach, which provides the scope of externally testing the system using test plans and test cases derived from the knowledge and understanding of internal structure of the system.
The primary difference between static and dynamic testing approach is that the former does not involves the execution of code to test the system whereas latter approach requires the code execution to verify and validate the system quality.
Although, both smoke and sanity testing is used to test software builds but smoke testing is used to test the initial build which are unstable whereas sanity tests are executed on relatively stable builds which had undergone multiple time through regression testing.
Automation is preferred when the execution of tests needs to be carried out repetitively for a longer period of time and within the specified deadlines. Further, an analysis of ROI on automation is desired to analyse the cost-benefit model of the automation. Preferably functional, regression and functional tests may be automated. Further, tests which requires accuracy and precision, and is time-consuming may be considered for automation, including data driven tests also.
Some of the common challenges faced in the automation are
- Initial cost is very high along with the maintenance costs. Thus, requires proper analysis to assess ROI on automation.
- Increased complexities.
- Limited time.
- Demands skilled tester, having appropriate knowledge of programming.
- Automation training cost and time.
- Selection of right and appropriate tools and frameworks.
- Less flexible.
- Keeping test plans and cases updated and maintained.
Both retesting and regression testing is done after modification in software features and configuration to remove or correct the defect(s). However, retesting is done to validate that the identified defects has been removed or resolved after applying patches while regression testing is done to ensure that the modification in the software doesn’t impacts or affects the existing functionalities and originality of the software.
A bug or a defect may be categorized on the priority and severity basis, where priority defines the need to correct or remove defect, from business perspective, whereas severity states the need to resolve or eliminate defect from software requirement and quality perspective.
Test data is used to drive the testing process, where diverse types of test data as inputs are provided to the system to test the response, behaviour and output of the system, which may be desirable or unexpected.
Agile testing follows the agile model of development, which requires no or less documentation and provides the scope of considering and implementing the dynamic and changing requirements along with the direct involvement of client or customer to work on their regular feedbacks and requirements to provide software in multiple and short iterative cycles.
Parameters which are used to evaluate and assess the performance of the software are active defects, authored tests, automated tests, requirement coverage, no. of defects fixed/day, tests passed, rejected defects, severe defects, reviewed requirements, test executed and many more.
Globalization and localization testing ensures the software product features and standards to be globally accepted by the world wide users and to meet the need and requirements of the users belonging to a particular culture, area, region, country or locale, respectively.
Verification is done throughout the development phase on the software under development whereas validation is performed over final product produced after the development process with respect to specified requirement and specification.
Yes, the end purpose of test strategy and test plan is same i.e. to works as a guide or manual to carry out the software testing process, but still they both differs.
Automation would provide better advantage in comparison to manual for performing regression testing.
Bug or Defect life cycle describes the whole journey or the life of a defect through various stages or phases, right from when it is identified and till its closure.
Error guessing, checklist based testing, exploratory testing, attack testing.
No, as one of the principles of software testing states that exhaustive testing is not possible.
As agile methodology requires the speedy execution of the processes through small iterative cycles, thereby calls for the quick, and exploratory testing which does not depends on the documentation work and is carried out by tester through gradual understanding of the software, suits best for the agile environment.
The primary purpose of load and stress testing is to test system’s performance, behaviour and response under different varied load. However, stress testing is an extreme or brutal form of load testing where a system under increasing load is subjected to certain unfavourable conditions like cut down in resources, short or limited time period for execution of task and various such things.
As the name specifies, data driven testing is a type of testing, especially used in the automation, where testing is carried out and drive by the defined sets of inputs and their corresponding expected output.
Basically, on the availability of software build, testing process starts. However, testing may be started early with the development process, as soon as the requirements are gathered and available. Moreover, testing depends upon the requirement of the software development model like in waterfall model, testing is done in the testing phase, whereas in agile testing is carried out in multiple and short iteration cycle.
Testing is an infinite process as it is impossible to make a software 100% bug free. But still, there are certain conditions specified to stop testing such as:
- Complete execution of the test suites and scripts.
- Meeting the specified exit criteria for a test.
- High priority and severity bugs are identified and resolved.
- Complete testing of the functionalities and features.
The primary advantage of using the traceability matrix is that it maps the all the specified requirements with that to test cases, thereby ensures complete test coverage.
Software testability comprises of various artifacts which gives the estimation about the efforts and time required in the execution of a particular testing activity or process.
Positive testing is the activity to test the intended and correct functioning of the system on being fed with valid and appropriate input data whereas negative testing evaluates the system’s behaviour and response in the presence of invalid input data.
Different types of risks involved in software testing are budget risk, technical risk, operational risk, scheduled risk and marketing risk.
Cookie is used to store the personal data and information of a user at server location, which is later used for making connections to web pages by the browsers, and thus it is essential to test these cookies.
A test case consists of several components. Some of them are test suite id, test case id, description, pre-requisites, test procedure, test data, expected results, test environment.
A QA engineer has multiple roles and is bounded to several responsibilities such as defining quality parameters, describing test strategy, executing test, leading the team, reporting the defects or test results.
Rapid software testing is a unique approach of testing which strikes out the need of any sort of documentation work, and motivates testers to make use of their thinking ability and vision to carry out and drive the testing process.
In the software engineering, error defines the mistake done by the programmers. Defect reflects the introduction of bugs at production site and results into deviation in results from its expected output due to programming mistakes. Failure shows the system’s inability to execute functionalities due to presence of defect. i.e. defect explored by the user.
No, but both testing types ensure the security mechanism of the software. However, penetration testing is a form of security testing which is done with the purpose to attack the system to ensure not only the security features but also its defensive mechanism.
Priority defines the business need to fix or remove identified defect whereas severity is used to describe the impact of a defect on the functioning of a system.
Test harness is a term used to collectively define various inputs and resources required in executing the tests, especially the automated tests to monitor and assess the behaviour and output of the system under different varied conditions and factors. Thus, test harness may include test data, software, hardware and many such things.
A test report may comprise of following elements:
- Test summary
- Logged defects
- Exit criteria
- Resources used
Test closure activities are carried out the after the successful delivery or release of the software product. This includes collection of various data, information, testwares pertaining to software testing phase so as to determine and assess the impact of testing on the product.
- Technical reviews
- Informal reviews
No, code coverage amounts the percentage of code covered during software execution whereas test coverage concerns with the test cases to cover specified functionality and requirement.
Broadly, there are different ways along with their sub techniques to design test cases, as mentioned below
- Black Box design technique- BVA, Equivalence Partitioning, use case testing.
- White Box design technique- statement coverage, path coverage, branch coverage
- Experience based technique- error guessing, exploratory testing
System testing is done with the perspective to test the system against the specified requirements and specification whereas acceptance testing ensures the readiness of the system to meet the needs and expectations of a user.
Both use case and test case is used in the software testing. Use case depicts and defines the user scenarios including various possible path taken by the system under different conditions and circumstances to execute a particular task and functionality. On the other side, test case is a document based on the software and business requirements and specification to verify and validate the software functioning.
In the present era, content plays a major role in creating and maintaining the interest of the users. Further, the quality content attracts the audience, makes them convinced or motivated over certain things, and thus is a productive input for the marketing purpose. Thus, content testing is a must testing to make your software content suitable for your targeted users.
- Test plan
- Test scenario
- Test cases
- Traceability Matrix
- Test Log and Report
Test deliverables are the end products of a complete software testing process- prior, during and after the testing, which is used to impart testing analysis, details and outcomes to the client.
Fuzz testing is used to discover coding flaws and security loopholes by subjecting system with the large amount of random data with the intent to break the system.
Testing is done with the purpose of identifying and locating the defects by the testing team whereas debugging is done by the developers to fix or correct the defects.
Database is an inherited component of a software application as it works as a backend system of the application and stores different types of data and information from multiple sources. Thus, it is crucial to test the database to ensure integrity, validity, accuracy and security of the stored data.
- Statement Coverage
- Branch Coverage
- Decision Coverage
- Path Coverage
Due to abundance of test cases for the execution within the given testing deadline arises the need to prioritize test cases. Test prioritization involves the reduction in the number of test cases, and selecting & prioritizing only those which are based on some specific criteria.
Test cases should be effective enough to cover each and every feature and quality aspect of software and able to provide complete test coverage with respect to specified requirements and specifications.
There are certain specified parameters, namely software quality metrics which is used to assess the software quality. These are product metrics, process metrics and project metrics.
- Mc Call’s Model
- Boehm Model
- FURPS Model
- IEEE Model
- SATC’s Model
- Ghezzi Model
- Capability Maturity Model
- Dromey’s quality Model
- ISO-9126-1 quality model
- Functionality testing
- Compatibility testing
- Usability testing
- Database testing
- Performance testing
- Accessibility testing
Pair testing is a type of ad-hoc testing where pair of testers or tester and developer or tester & user is being formed which are responsible for carrying out the testing of the same software product on the same machine.