Interview Questions - Basics
Interview Questions - Basics
In a Calculator, what is the major functionality, you are going to Test, which has been built
specifically for a accountant? Assume that all basic functions like addition, subtraction etc
are supported.
Check the maximum numbers of digits it supports?
Check for the memory?
Check for the accuracy due to truncation
1
Difference between Load Testing & Stress Testing?
Load Testing : the application is tested within the normal limits to identify the load that a system
can with stand. In Load testing the no. of users varies.
Stress Testing: Stress tests are designed to confront programs with abnormal situations. Stress
testing executes a system in a manner that demand rescues in abnormal quantity, frequency or
volume.
If you have shortage of time, how would you prioritize you testing?
1) Use risk analysis to determine where testing should be focused. Since it's rarely possible to test
every possible aspect of an application, every possible combination of events, every dependency,
or everything that could go wrong, risk analysis is appropriate to most software development
projects. Considerations can include:
2) We work on the major functionalities Which functionality is most visible to the user, Which
functionality is most important to the project, which application is most important to the customer,
highest-risk aspects of the application
2) Yes, we should test every possible scenario, but some time the same functionality occurs again
and again like LOGIN WINDOW so there is no need to test those functionalities again. There are
2
some more factors:
It covers the whole software lifecycle, starting with testing the project plan and estimates and
ending with testing the effectiveness of the testing process. The book is packed with checklists,
worksheets and N-step procedures for each stage of testing.
3
Why do we do regression testing?
In any application new functionalities can be added so the application has to be tested to see
whether the added functionalities have affected the existing functionalities or not. Here instead of
retesting all the existing functionalities baseline scripts created for these can be rerun and tested.
What is the value of a testing group? How do you justify your work and budget?
All software products contain defects/bugs, despite the best efforts of their development teams. It
is important for an outside party (one who is not developer) to test the product from a viewpoint
that is more objective and representative of the product user.
Testing group test the software from the requirements point of view or what is required by the
user. Testers job is to examine a program and see if it does not do what it is supposed to do and
also see what it does what it is not supposed to do.
2.Define the project – The software development team translates the business requirements into
system specifications and put together into System Specification Document.
3.Design the system – The System Architecture Team design the system and write Functional
Design Document. During design phase general solutions re hypothesized and data and process
structures are organized.
4.Build the system – The System Specifications and design documents are given to the
development team code the modules by following the Requirements and Design document.
5.Test the system - The test team develops the test plan following the requirements. The software
is build and installed on the test platform after developers have completed development and Unit
Testing. The testers test the software by following the test plan.
6.Deploy the system – After the user-acceptance testing and certification of the software, it is
installed on the production platform. Demos and training are given to the users.
7.Support the system - After the software is in production, the maintenance phase of the life
begins. During this phase the development team works with the development document staff to
modify and enhance the application and the test team works with the test documentation staff to
verify and validate the changes and enhancement to the application software.
4
FREQUENTLY ASKED QUESTIONS
3) What is master test plan? What it contains? Who is responsible for writing it?
4) What is test plan? Who is responsible for writing it? What it contains?
5) What different type of test cases you wrote in the test plan?
9) What is MR?
16) What knowledge you require to do the white box, integration and black box testing?
5
23) What are the different automation tools you kno?.
24) What is difference between regression automation tool and performance automation tool?
31) What is different about Web Testing than Client server testing?
6
46) What is procedural model?
55) How we decide which automation tool we are going to use for the regression testing?
56) If you have shortage of time, how would you prioritize you testing?
57) What is the impact of environment of the actual results of performance testing?
58) What is stress testing, performance testing, Security testing, Recovery testing and volume
testing.
59) What criteria you will follow to assign severity and due date to the MR.
63) What are the entrance and exit criteria in the system test?
67) How do you decide what functionalities of the application are to be tested?
68) If there are no requirements, how will you write your test plan?
7
69) What is smoke testing?
74) With all the skills, do you prefer to be a developer or a tester? And Why?
75) What are the best web sites that you frequently visit to upgrade your QA skills?
76) Are the words “Prevention” and “Detection” sound familiar? Explain
77) Is defect resolution a technical skill or interpersonal skill from QA view point?
80) Explain to me about a most critical defect you found in your last project.
Suppose there are 1000 bugs, and there is only 10 days to go for release the product.
Developer's said that it can't be fixed within this period, then what u will do.
A. In this case, most critical bugs should be fixed first, such as Severity 1 & 2 bugs, and rest of the
bug can be fixed in the next release. Again it completely depends on the business people.
What is regression testing, and how it started and end. Assume that in one module u found a
bug, u send that to the developer end to fix that bug, but after that bug fixed, how will u do
the regression testing and how will u end that.
8
A. Regression Testing is re testing unchanged segments of the application system, it normally
involves re-running test that have been previously executed to ensure that the same results can be
achieved currently as were achieved when the segment was last tested.. For example, the tester get
a bug in a module, after getting that module, tester sends that part to the developers end to fix that
bug. After fixing that bug, that module comes to the tester end. After received, the tester again test
that module and find out that, whether all the bugs are fixed or not. If those bug are fixed and after
that the tester have to checked out that by fixing these bugs, whether the developer made some
idiot move, and it leads to rise other bugs in other modules. So the tester has to regressively test
different modules.
Understandability
The more information we have, the smarter we will test.
Stability
The fewer the changes, the fewer the disruptions to testing
Simplicity
The less there is to test, the more quickly it can be tested
•Functional simplicity
•Structural simplicity
•Code simplicity
Decomposability
By controlling the scope of testing, problems can be isolated quickly, and smarter testing can
be performed.
Controllability
The better the software is controlled, the more the testing can be automated and optimized.
9
•All possible outputs can be generated through some combination of input
•All code is executable through some combination of input
•Software and hardware states can be controlled directly by testing
•Input and output formats are consistent and structured
•Tests can be conveniently specified, automated, and reproduced.
Observability
What is seen is what is tested
Software testing is not an activity to take up when the product is ready. An effective testing begins
with a proper plan from the user requirements stage itself. Software testability is the ease with
which a computer program is tested. Metrics can be used to measure the testability of a product.
The requirements for effective testing are given in the following sub-sections.
Testing Principles
The basic principles for effective software testing are as follows:
•A good test case is one that has a high probability of finding an as-yet undiscovered error.
•A successful test is one that uncovers an as-yet-undiscovered error.
•All tests should be traceable to the customer requirements
•Tests should be planned long before testing begins
•Testing should begin “ in the small” and progress towards testing “in the large”
•Exhaustive testing is not possible
Testing Objectives
Testing is a process of executing a program with the intent of finding an error.
Software testing is a critical element of software quality assurance and represents the ultimate
review of system specification, design and coding. Testing is the last chance to uncover the errors
/ defects in the software and facilitates delivery of quality system.
10
have been involved in earlier discussions and decision making about the system set-up. All users
will receive basic training to enable them to contribute effectively to the test.
•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.
11
•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.
•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).
12
•Which functionality has the largest financial impact on users?
•Which aspects of the application can be tested early in the development cycle?
•Which parts of the code are most complex, and thus most subject to errors?
•Which parts of the requirements and design are unclear or poorly thought out?
•What do the developers think are the highest-risk aspects of the application?
•What kinds of problems would cause the most customer service complaints?
•Obtain requirements, functional design, and internal design specifications and other necessary
documents.
•Identify application's higher-risk aspects, set priorities, and determine scope and limitations of
tests
•Determine test approaches and methods - unit, integration, functional, system, load, usability
tests, etc.
13
•Determine testware requirements (record/playback tools, coverage analyzers, test tracking,
problem/bug tracking, etc.)
•Perform tests
•Retest as needed
•Maintain and update test plans, test cases, test environment, and testware through life cycle.
14
•be able to maintain enthusiasm of their team and promote a positive atmosphere, despite what is a
somewhat 'negative' process (e.g., looking for or preventing problems).
•have the ability to withstand pressures and say 'no' to other managers when quality is 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..
15
• Fast changes in requirements
• Too many assumptions and complacency
How will be the testcases for product testing . Provide an example of test plan
For product testing, the test plan includes more rigorous testing since most of these products are
off the self CD buys or net downloads.
for doing data validity testing you should be good in SQL queries
For data integrity testing you should know about refer initial integrity and different constraint.
For performance related things you should have idea about the table structure and design.
for testing Procedure triggers and functions you should be able to understand the same
1. What criteria would you use to select Web transactions for load testing?
16
this again comes from voice of customer, which includes what are the very commonly used
transactions of the applications, we cannot load test all transactions , we need to understand the
business critical transactions , this can be done either talking.
6. What are the reasons why parameterization is necessary when load testing the Web server
and the database server?
parameterization is done to check how your application performs the same operation with different
data.In load runner it is necessary to make a single user to refer the page for several times similar
in case of database server.
7. How can data caching have a negative effect on load testing results?
yes, data caching have a negative effect on load testing results, this can be altered according to the
requirments of the scenario in the run-time settings.
8. What usually indicates that your virtual user script has dynamic data that is dependent on
you parameterized fields?
Use the extended logging option of reporting.
9. What are the benefits of creating multiple actions within any virtual user s
Reusability. Repeatability, Reliability.
11. What is the difference between Load testing and Performance Testing?
Performance testing verifies loads, volume and response time as defined by requirements while
17
load testing is testing an application under heavy loads to determine at what point the system
response time degrades.
TestCases
Write Test Cases for testing ATM machine, Coffee Blending Machine, Telephone Handset?
1.verify the coffee machine is working properly or not by switching ON power supply.
2.verify the coffee machine when power supply is improper.
3.verify the machine that all buttons are visible.
4.verify the indicator light that the machine is turned ON after switching on power supply.
5.Verify the machine when there is no water.
6.verify the machine when there is no coffee powder.
7.Verify the machine when there is no milk.
10.Verify the machine when there is no sugar.
8.Verify the machine operation when it is empty.
9.Verify the machine operation when all the ingredients are upto the capacity level.
10.Verify the machine operation when water quantity is less than its limit.
11.Verify the machine operation when milk quantity is less than its capacity limit.
12.Verify the machine operation when coffee powder is less than its capacity limit.
13.verify the machine operation when sugar available is less than its capacity limit.
14.Verify the machine operation when there is metal piece is stuck inside the machine.
15.verify the machine by pressing the coffee button and
check it is pouring coffee with appropriate mixture and taste.
16.verify the machine by pressing the Tea button and check it is pouring Tea with appropriate
mixture and taste.
17.It should fill the coffee cup appropriately i,e quantity.
18
18.verify coffee machine operation with in seconds after pouring milk, sugar, water etc. It should
display message.
19.Verify all the buttons operation.
20.Verify all the machine operation by pressing the buttons simultaneously one after the other.
21.Verify the machine operation by pressing two buttons at a time.
22.verify the machine operation at the time power fluctuations.
23.Verify the machine operation when all the ingredients are overloaded.
24.Verify the machine operation when one of the ingredient is overloaded and others are upto limit.
25.Verify the machine operation when one or some of the parts inside the machine are damaged.
In a web page, if two text boxes are there (one for Name Field another for Telephone no.),
supported by "Save" & "Cancel" button. Then derive some test cases.
What more information you need?
Here is a sample list of questions that u can ask
Field Validation i.e alphanumeric for Name and Numeric for telephone Number
enable/disabled
focus
Boundary conditions ( i.e what is the max length for name and telephone no.)
field size
GUI standards for the controls
What are Individual test case and Workflow test case? Why we do workflow scenarios
An individual test is one that is for a single features or requirement. However, it is important that
related sequences of features be tested as well, as these correspond to units of work that user will
typically perform. It will be important for the system tester to become familiar with what users
intend to do with the product and how they intend to do it. Such testing can reveal errors that might
not ordinarily be caught otherwise. For example while each operations in a series might produce
the correct results it is possible that intermediate results get lost or corrupted between operations.
Have you ever written test cases or did you just execute those written by others?
Yes, I was involved in preparing and executing test cases in all the project.
19
What are the properties of a good requirement?
Understandable, Clear, Concise, Total Coverage of the application
What type of document do you need for QA, QC and testing?
Following is the list of documents required by QA and QC teams
Business requirements
SRS
Use cases
Test plan
Test cases
•Note that the process of developing test cases can help find problems in the requirements 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 early in the development cycle if
possible.
How will you check that your test cases covered all the requirements?
By using traceability matrix.
Traceability matrix means the matrix showing the relationship b/w the requirements & testcases.
for a triangle(sum of two sides is greater than or equal to the third side),what is the minimal
number of test cases required.
The answer is 3
20
1. Measure all sides of the triangle.
2. Add the minimum and second highest length of the triangle and store the result as Res.
3. Compare the Res with the largest side of the triangle.
Test Plan
Consistency: Consistent code makes it easy for people to understand how a program works; when
reading consistent code; one subconsciously forms a number of assumptions and expectations
about how the code works, so it is easier and safer to make modifications to it.
Extensibility: General-purpose code is easier to reuse and modify than very specific code with lots
of hard coded assumptions. When someone wants to add a new feature to a program, it will
obviously be easier to do so if the code was designed to be extensible from the beginning.
Correctness: Finally, code that is designed to be correct lets people spend less time worrying
about bugs and more time enhancing the features of a program.
What are the entrance and exit criteria in the system test?
Entrance and exit criteria of each testing phase is written in the master test plan.
Entrance Criteria:
-Integration exit criteria have been successfully met.
-Syate, test plan is baselined by completing the walkthrough of the test plan.
21
Exit Criteria:
-All the test cases in the test plan should be executed.
What is master test plan? What it contains? Who is responsible for writing it?
OR
What is a test plan? Who is responsible for writing it? What it contains.
OR
What's a 'test plan'? What did you include in a test plan?
A software project test plan is a document that describes the objectives, scope, approach, and focus
of a software testing effort. The process of preparing a test plan is a useful way to think through the
efforts needed to validate the acceptability of a software product. The completed document will
help people outside the test group understand the 'why' and 'how' of product validation. It should
be thorough enough to be useful but not so thorough that no one outside the test group will read it.
The following are some of the items that might be included in a test plan, depending on the
particular project:
•Title
•Table of Contents
•Relevant related document list, such as requirements, design documents, other test plans, etc.
22
•Test organization and personnel/contact-info/responsibilities
•Test outline - a decomposition of the test approach by test type, feature, functionality, process,
system,
module, etc. as applicable
•Outline of data input equivalence classes, boundary value analysis, error classes
•Test environment - hardware, operating systems, other required software, data configurations,
interfaces
to other systems
•Test environment validity analysis - differences between the test and production systems and their
impact on test validity.
•Software CM processes
•Discussion of any specialized software or hardware tools that will be used by testers to help track
the
cause or source of bugs
23
•Test script/test code maintenance processes and version control
•Personnel allocation
•Test site/location
•Outside test organizations to be utilized and their purpose, responsibilities, deliverables, contact
persons,
and coordination issues
•Open issues
24
•Title
•Table of Contents
•Relevant related document list, such as requirements, design documents, other test plans, etc.
•Traceability requirements
•Test outline - a decomposition of the test approach by test type, feature, functionality, process,
system, module, etc. as applicable
•Outline of data input equivalence classes, boundary value analysis, error classes
•Test environment - hardware, operating systems, other required software, data configurations,
interfaces to other systems
25
•Database setup requirements
•Discussion of any specialized software or hardware tools that will be used by testers to help track
the cause or source of bugs
•Personnel allocation
•Test site/location
•Outside test organizations to be utilized and their purpose, responsibilities, deliverables, contact
persons, and coordination issues
•Open issues
26
be, for example, 'user-friendly' (too subjective). A testable requirement would be something like
'the user must enter their previously-assigned password to access the application'. Determining and
organizing requirements details in a useful and efficient way can be a difficult effort; different
methods are available depending on the particular project. Many books are available that describe
various approaches to this task.
Care should be taken to involve ALL of a project's significant 'customers' in the requirements
process. 'Customers' could be in-house personnel or out, and could include end-users, customer
acceptance testers, customer contract officers, customer management, future software maintenance
engineers, salespeople, etc. Anyone who could later derail the project if their expectations aren't
met should be included if possible.
5. GUI contains 2 fields Field 1 to accept the value of x and Field 2 displays the result of the
formula a+b/c-d where a=0.4*x, b=1.5*a, c=x, d=2.5*b; How many system test cases would
you write
GUI contains 2 fields
4. Lets say we have an GUI map and scripts, a we got some 5 new pages included inan
application how do we do that?
By integration testing.
Note to learners : A Test Engineer must have knowledge on SDLC. I suggest learners to take any
one exiting application and start practice from writing requirements.
27
2. Complete Testing with Time Constraints : Question: How do you complete the testing
when you have a time constraint?
If i am doinf regression testing and i do not have sufficient time then we have to see for which sort
of regression testing i have to go
1)unit regression testing
2)Regional Regression testing
3)Full Regression testing.
Testing Scenarios : How do you know that all the scenarios for testing are covered?
By using the Requirement Traceability Matrix (RTM) we can ensure that we have covered all the
functionalities in Test Coverage.
RTM is a document that traces User Requirements from analysis through implementations. RTm
can be used as a completeness check to verify that all the requirements are present or that there is
no unnecessary/extra features and as a maintenance guide to new personnel.
We can use the simple format in Excel sheet where we map the Functionality with the Test case ID.
Bug Report
What is MR?
MR is a Modification Request also known as Defect Report, a request to modify the program so
that program does what it is supposed to do.
Severity tells us how bad the defect is. Priority tells us how soon it is desired to fix the problem.
28
In some companies, the defect reporter sets the severity and the triage team or product
management sets the priority. In a small company, or project (or product), particularly where there
aren't many defects to track, you can expect you don't really need both since a high severity defect
is also a high priority defect. But in a large company, and particularly where there are many
defects, using both is a form of risk management.
Major would be 1 and Trivial would be 3. You can add or multiply the two values together (there is
only a small difference in the outcome) and then use the event's risk value to determine how you
should address the problem. The lower values must be addressed and the higher values can wait.
Based on a military standard, MIL-STD-882.
They use a four-point severity rating (rather than three): Catastrophic; Critical; Marginal;
Negligible. They then use a five-point (rather than three) probability rating: Frequent; Probable;
Occasional; Remote; Improbable. Then rather than using a mathematical calculation to determine a
risk level, they use a predefined chart.
Blocker: This bug prevents developers from testing or developing the software.
Critical: The software crashes, hangs, or causes you to lose data.
Major: A major feature is broken.
Normal: It's a bug that should be fixed.
Minor: Minor loss of function, and there's an easy work around.
Trivial: A cosmetic problem, such as a misspelled word or misaligned text.
Enhancement: Request for new feature or enhancement.
1. Catastrophic:
Defects that could (or did) cause disastrous consequences for the system in question.
E.g.) critical loss of data, critical loss of system availability, critical loss of
security, critical loss of safety, etc.
2. Severe:
Defects that could (or did) cause very serious consequences for the system in question.
E.g.) A function is severely broken, cannot be used and there is no workaround.
3. Major:
Defects that could (or did) cause significant consequences for the system in question - A
defect that needs to be fixed but there is a workaround.
E.g. 1.) losing data from a serial device during heavy loads.
E.g. 2.) Function badly broken but workaround exists
4. Minor:
Defects that could (or did) cause small or negligible consequences for the system in
question. Easy to recover or workaround.
E.g.1) Error messages misleading.
E.g.2) Displaying output in a font or format other than what the customer desired.
29
5. No Effect:
Trivial defects that can cause no negative consequences for the system in question. Such
defects normally produce no erroneous outputs.
E.g.1) simple typos in documentation.
E.g.2) bad layout or mis-spelling on screen.
What criteria you will follow to assign severity and due date to the MR?
You find a bug and the developer says “It’s not possible” what do u do?
I’ll discuss with him under what conditions (working environment) the bug was produced. I’ll
provide him with more details and the snapshot of the bug.
Exception testing deals with handling the exceptions (unexpected events) while the AUT is run.
Basically this testing involves how to change the control flow of the AUT when an exception
arises.
30
number of ways there are to traverse a piece of code. This determines the minimum number of
inputs you need to test all ways to execute the program.
What is ODBC?
Open Database Connectivity (ODBC) is an open standard application-programming interface
(API) for accessing a database. ODBC is based on Structured Query Language (SQL) Call-Level
Interface. It allows programs to use SQL requests that will access databases without having to
know the proprietary interfaces to the databases. ODBC handles the SQL request and converts it
into a request the individual database system understands.
•Complete information such that developers can understand the bug, get an idea of its severity, and
reproduce it if necessary.
31
•Current bug status (e.g., 'Released for Retest', 'New', etc.)
•The function, module, feature, object, screen, etc. where the bug occurred
•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
•File excerpts/error messages/log file excerpts/screen shots/test tool logs that would be helpful in
finding
the cause of the problem
•Tester name
•Test date
•Description of fix
•Date of fix
32
•Tester responsible for retest
•Retest date
•Retest results
•Complete information such that developers can understand the bug, get an idea of it's severity, and
reproduce it if necessary.
•The function, module, feature, object, screen, etc. where the bug occurred
33
•Test case name/number/identifier
•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
•File excerpts/error messages/log file excerpts/screen shots/test tool logs that would be helpful in
finding the cause of the problem
•Tester name
•Test date
•Description of fix
•Date of fix
•Retest date
•Retest results
34
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
- Deferred Defects - The list of defects remaining in the defect tracking system with a status of
deferred. Deferred means the technical product manager has decided not to address the issue with
the current release.
- Pending Defects - The list of defects remaining in the defect tracking system with a status of
pending. Pending refers to any defect waiting on a decision from a technical product manager
before a developer addresses the problem.
- Closed Defects - The list of defects verified as fixed by QA during the project cycle.
The Release Package is compiled in anticipation of the Readiness Review meeting. It is reviewed
by the QA Process Manager during the QA Process Review Meeting and is provided to the Release
Board and Technical Support.
35
Unnecessary iterations of the bug report between the developer and the tester before being fixed is
just waste of time due to ineffective bug reporting.
* Draft the bug report just when you are sure that you have found a bug, not after the end of test
or end of day. It might be possible that you might miss out on some point. Worse, you might miss
the bug itself.
* Invest some time to diagnose the defect you are reporting. Think of the possible causes. You
might land up uncovering some more defects. Mention your discoveries in your bug report. The
programmers will only be happy seeing that you have made their job easier.
* Take some time off before reading your bug report. You might feel like re-writing it.
Defect Summary
The summary of the bug report is the reader’s first interaction with your bug report. The fate of
your bug heavily depends on the attraction grabbed by the summary of your bug report. The rule is
that every bug should have a one-liner summary. It might sound like writing a good attention-
grabbing advertisement campaign. But then, there are no exceptions. A good summary will not be
more than 50-60 characters. Also, a good summary should not carry any subjective representations
of the defect.
The Language
* Do not exaggerate the defect through the bug report. Similarly, do not undertone it.
* However nasty the bug might be, do not forget that it’s the bug that’s nasty, not the
programmer. Never offend the efforts of the programmer. Use euphemisms. 'Dirty UI' can be made
milder as 'Improper UI'. This will take care that the programmer's efforts are respected.
* Keep It Simple & Straight. You are not writing an essay or an article, so use simple language.
* Keep your target audience in mind while writing the bug report. They might be the developers,
fellow testers, managers, or in some cases, even the customers. The bug reports should be
understandable by all of them.
Steps To Reproduce
* The flow of the Steps To Reproduce should be logical.
* Clearly list down the pre-requisites.
* Write generic steps. For example, if a step requires the user to create file and name it, do not
ask the user to name it like "Mihir's file". It can be better named as "Test File".
* The Steps To Reproduce should be detailed. For example, if you want the user to save a
36
document from Microsoft Word, you can ask the user to go to File Menu and click on the Save
menu entry. You can also just say "save the document". But remember, not everyone will not know
how to save a document from Microsoft Word. So it is better to stick to the first method.
* Test your Steps To Reproduce on a fresh system. You might find some steps that are missing,
or are extraneous.
Test Data
Strive to write generic bug reports. The developers might not have access to your test data. If the
bug is specific to a certain test data, attach it with your bug report.
Screenshots
Screenshots are a quite essential part of the bug report. A picture makes up for a thousand words.
But do not make it a habit to unnecessarily attach screen shots with every bug report. Ideally, your
bug reports should be effective enough to enable the developers to reproduce the problem. Screen
shots should be a medium just for verification.
* If you attach screen shots to your bug reports, ensure that they are not too heavy in terms of
size. Use a format like jpg or gif, but definitely not bmp.
* Use annotations on screen shots to pin-point at the problems. This will help the developers to
locate the problem at a single glance.
Severity / Priority
* The impact of the defect should be thoroughly analyzed before setting the severity of the bug
report. If you think that your bug should be fixed with a high priority, justify it in the bug report.
This justification should go in the Description section of the bug report.
* If the bug is the result of regression from the previous builds/versions, raise the alarm. The
severity of such a bug may be low but the priority should be typically high.
Logs
Make it a point to attach logs or excerpts from the logs. This will help the developers to analyze
and debug the system easily. Most of the time, if logs are not attached and the issue is not
reproducible on the developer's end, they will revert to you asking for logs.
If the logs are not too large, say about 20-25 lines, you can paste it in bug report. But if it is large
enough, add it to your bug report as an attachment, else your bug report will look like a log.
2. Remember that the only person who can close a bug is the person who opened it in the first
place. Anyone can resolve it, but only the person who saw the bug can really be sure that what they
saw is fixed.
3. There are many ways to resolve a bug. FogBUGZ allows you to resolve a bug as fixed, won't
fix, postponed, not repro, duplicate, or by design.
37
4. Not Repro means that nobody could ever reproduce the bug. Programmers often use this when
the bug report is missing the repro steps.
5. You'll want to keep careful track of versions. Every build of the software that you give to testers
should have a build ID number so that the poor tester doesn't have to retest the bug on a version of
the software where it wasn't even supposed to be fixed.
6. If you're a programmer, and you're having trouble getting testers to use the bug database, just
don't accept bug reports by any other method. If your testers are used to sending you email with
bug reports, just bounce the emails back to them with a brief message: "please put this in the bug
database. I can't keep track of emails."
7. If you're a tester, and you're having trouble getting programmers to use the bug database, just
don't tell them about bugs - put them in the database and let the database email them.
8. If you're a programmer, and only some of your colleagues use the bug database, just start
assigning them bugs in the database. Eventually they'll get the hint.
9. If you're a manager, and nobody seems to be using the bug database that you installed at great
expense, start assigning new features to people using bugs. A bug database is also a great
"unimplemented feature" database, too.
10. Avoid the temptation to add new fields to the bug database. Every month or so, somebody will
come up with a great idea for a new field to put in the database. You get all kinds of clever ideas,
for example, keeping track of the file where the bug was found; keeping track of what % of the
time the bug is reproducible; keeping track of how many times the bug occurred; keeping track of
which exact versions of which DLLs were installed on the machine where the bug happened. It's
very important not to give in to these ideas. If you do, your new bug entry screen will end up with
a thousand fields that you need to supply, and nobody will want to input bug reports any more. For
the bug database to work, everybody needs to use it, and if entering bugs "formally" is too much
work, people will go around the bug database.
What are the different types of Bugs we normally see in any of the Project? Include the
severity as well.
The Life Cycle of a bug in general context is:
Bugs are usually logged by the development team (While Unit Testing) and also by testers (While
system or other type of testing).
A tester finds a new defect/bug, so using a defect tracking tool logs it.
1. Its status is 'NEW' and assigns to the respective dev team (Team lead or Manager). 2. Th
e team lead assign's it to the team member, so the status is 'ASSIGNED TO'
38
3. The developer works on the bug fixes it and re-assigns to the tester for testing. Now the status is
'RE-ASSIGNED'
4. The tester, check if the defect is fixed, if its fixed he changes the status to 'VERIFIED'
5. If the tester has the authority (depends on the company) he can after verifying change the status
to 'FIXED'. If not the test lead can verify it and change the status to 'fixed'.
6. If the defect is not fixed he re-assign's the defect back to the dev team for re-fixing.
39