Manual Testing Interview Questions
1 What makes a good Software QA engineer?
Ans: The same qualities a good tester has are useful for a QA engineer. Additionally, they must be able to understand the entire software development process and how it can fit into the business approach and goals of the organization. Communication skills and the ability to understand various sides of issues are important. In organizations in the early stages of implementing QA processes, patience and diplomacy are especially needed. An ability to find problems as well as to see ‘what’s missing’ is important for inspections and reviews.
2 What is ‘Software Testing’?
Ans: Testing involves operation of a system or application under controlled conditions and evaluating the results (eg, ‘if the user is in interface A of the application while using hardware B, and does C, then D should happen’). The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn’t or things don’t happen when they should. It is oriented to ‘detection’. (See the Bookstore section’s ‘Software Testing’ category for a list of useful books on Software Testing.)
? Organizations vary considerably in how they assign responsibility for QA and testing. Sometimes they’re the combined responsibility of one group or individual. Also common are project teams that include a mix of testers and developers who work closely together, with overall QA processes monitored by project managers. It will depend on what best fits an organization’s size and business structure.
3 What is ‘Software Quality Assurance’?
Ans: Software QA involves the entire software development PROCESS – monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to ‘prevention’. (See the Bookstore section’s ‘Software QA’ category for a list of useful books on Software Quality Assurance.)
4 Can you explain me what makes a good test engineer?
Ans: A good test engineer has a ‘test to break’ attitude, an ability to take the point of view of the customer, a strong desire for quality, and an attention to detail. Tact and diplomacy are useful in maintaining a cooperative relationship with developers, and an ability to communicate with both technical (developers) and non-technical (customers, management) people is useful. Previous software development experience can be helpful as it provides a deeper understanding of the software development process, gives the tester an appreciation for the developers’ point of view, and reduce the learning curve in automated test tool programming. Judgment skills are needed to assess high-risk areas of an application on which to focus testing efforts when time is limited.
5 What is the role of documentation in QA?
Ans: Critical. (Note that documentation can be electronic, not necessarily paper.)QA practices should be documented such that they are repeatable. Specifications,designs, business rules, inspection reports, configurations, code changes, test plans,test cases, bug reports, user manuals, etc. should all be documented. There should ideally be a system for easily finding and obtaining documents and determining what documentation will have a particular piece of information. Change management for documentation should be used if possible.
6 What is a test case?
Ans: ? A test case is a document that describes an input, action, or event and an expected response, to determine if a feature of an application is working correctly. A test case should contain particulars such as test case identifier, test case name, objective, test conditions/setup, input data requirements, steps, and expected results.
? Note that the process of developing test cases can help find problems in there quirements or design of an application, since it requires completely thinking through the operation of the application. For this reason, it’s useful to prepare test cases earlyin the development cycle if possible.
7 What makes a good Test manager or QA?
Ans: A good QA, test, or QA/Test (combined) manager should have following qualities
? Try to get familiar with the software development process
? be able to maintain enthusiasm of their team and promote a positive atmosphere,despite
?What is a some what ‘negative’ process (e.g., looking for or preventing problems?)
? be able to promote teamwork to increase productivity
? be able to promote cooperation between software, test, and QA engineers
? have the diplomatic skills needed to promote improvements in QA processes
? have the ability to withstand pressures and say ‘no’ to other managers when quality’s insufficient or QA processes are not being adhered to
?? have people judgment skills for hiring and keeping skilled personnel
? be able to communicate with technical and non-technical people, engineers,managers, and customers.
? be able to run meetings and keep them focused
8 What is configuration management?
Ans: Configuration management covers the processes used to control, coordinate,and track: code, requirements, documentation, problems, change requests, designs,tools/compilers/libraries/patches, changes made to them, and who makes the changes.(See the ‘Tools’ section for web resources with listings of configuration management tools. Also see the Bookstore section’s ‘Configuration Management’ category for useful books with more information.)
9 What if the software is so buggy it can’t really be tested at all?
Ans: The best bet in this situation is for the testers to go through the process of reporting whatever bugs or blocking-type problems initially show up, with the focus being on critical bugs. Since this type of problem can severely affect schedules, and indicates deeper problems in the software development process (such as insufficient unit testing or insufficient integration testing, poor design, improper build or release procedures, etc.) managers should be notified, and provided with some documentation as evidence of the problem.
10? What should be done after a bug is found?
Ans: The bug needs to be communicated and assigned to developers that can fix it. After the problem is resolved, fixes should be re-tested, and determinations made regarding requirements for regression testing to check that fixes didn’t create problems elsewhere. If a problem-tracking system is in place, it should encapsulate these processes. A variety of commercial problem-tracking/management software tools are available (see the ‘Tools’ section for web resources with listings of such tools). The following are items to consider in the tracking process:
? Complete information such that developers can understand the bug, get an idea of it’s severity, and reproduce it if necessary.
? Bug identifier (number, ID, etc.)
? Current bug status (e.g., ‘Released for Retest’, ‘New’, etc.)
? The application name or identifier and version
? The function, module, feature, object, screen, etc. where the bug occurred
? Environment specifics, system, platform, relevant hardware specifics
? Test case name/number/identifier
? One-line bug description
? Full bug description
? Description of steps needed to reproduce the bug if not covered by a test case or if the developer doesn’t have easy access to the test case/test script/test tool
? Names and/or descriptions of file/data/messages/etc. used in test
? File excerpts/error messages/log file excerpts/screen shots/test tool logs that would be helpful in finding the cause of the problem
? Severity estimate (a 5-level range such as 1-5 or ‘critical’-to-‘low’ is common)
? Was the bug reproducible?
? Tester name
? Test date
? Bug reporting date
? Name of developer/group/organization the problem is assigned to
? Description of problem cause
? Description of fix
? Code section/file/module/class/method that was fixed
? Date of fix
? Application version that contains the fix
? Tester responsible for retest
? Retest date
? Retest results
? Regression testing requirements
? Tester responsible for regression tests
? Regression testing results
A reporting or tracking process should enable notification of appropriate personnel at various stages. For instance, testers need to know when retesting is needed, developers need to know when bugs are found and how to get the needed information, and reporting/summary capabilities are needed for managers.
11 What if the project isn’t big enough to justify extensive testing?
Ans: Consider the impact of project errors, not the size of the project. However, if extensive testing is still not justified, risk analysis is again needed and the same considerations as described previously in ‘What if there isn’t enough time for thorough testing?’ apply. The tester might then do ad hoc testing, or write up a limited test plan based on the risk analysis.
12 How can it be known when to stop testing?
Ans: This can be difficult to determine. Many modern software applications are so complex, and run in such an interdependent environment, that complete testing can never be done. Common factors in deciding when to stop are:
? 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
13 What can be done if requirements are changing continuously?
Ans: It is a common problem and a major headache.
? Work with the project’s stakeholders early on to understand how requirements might change so that alternate test plans and strategies can be worked out in advance, if possible.
? It’s helpful if the application’s initial design allows for some adaptability so that later changes do not require redoing the application from scratch.
? If the code is well-commented and well-documented this makes changes easier for the developers.
? Use rapid prototyping whenever possible to help customers feel sure of their requirements and minimize changes.
? The project’s initial schedule should allow for some extra time commensurate with the possibility of changes.
? Try to move new requirements to a ‘Phase 2’ version of an application, while using the original requirements for the ‘Phase 1’ version.
? Negotiate to allow only easily-implemented new requirements into the project, while moving more difficult new requirements into future versions of the application.
? Be sure that customers and management understand the scheduling impacts, inherent risks, and costs of significant requirements changes. Then let management or the customers (not the developers or testers) decide if the changes are warranted – after all, that’s their job.
? Balance the effort put into setting up automated testing with the expected effort required to re-do them to deal with changes.
? Try to design some flexibility into automated test scripts.
? Focus initial automated testing on application aspects that are most likely to remain unchanged.
? Devote appropriate effort to risk analysis of changes to minimize regression testing needs.
? Design some flexibility into test cases (this is not easily done; the best bet might be to minimize the detail in the test cases, or set up only higher-level generic-type test plans)
? Focus less on detailed test plans and test cases and more on ad hoc testing (with an understanding of the added risk that this entails).
14 What if the application has functionality that wasn’t in the requirements?
Ans: It may take serious effort to determine if an application has significant unexpected or hidden functionality, and it would indicate deeper problems in the software development process. If the functionality isn’t necessary to the purpose of the application, it should be removed, as it may have unknown impacts or dependencies that were not taken into account by the designer or the customer. If not removed, design information will be needed to determine added testing needs or regression testing needs. Management should be made aware of any significant added risks as a result of the unexpected functionality. If the functionality only effects areas such as minor improvements in the user interface, for example, it may not be a significant risk.
15 How does a client/server environment affect testing?
Ans: Client/server applications can be quite complex due to the multiple dependencies among clients, data communications, hardware, and servers. Thus testing requirements can be extensive. When time is limited (as it usually is) the focus should be on integration and system testing. Additionally, load/stress/performance testing may be useful in determining client/server application limitations and capabilities. There are commercial tools to assist with such testing. (See the ‘Tools’ section for web resources with listings that include these kinds of test tools.)