Unit Testing Guidelines Software Unit Testing

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 12
At a glance
Powered by AI
The key takeaways are guidelines for unit testing including approaches, explanations, techniques and templates.

The purpose of the document is to describe the approach to unit testing that should be used to verify code performs as designed. The scope covers software developers and quality managers.

Unit testing techniques described include assuming errors will be found, using data likely to cause errors, ensuring all code paths are covered, creating test harnesses and plans, and testing as code is written.

Unit Testing Guidelines

Prepared by Scott Highet


Version v0.1 DRAFT

12/03/2002
Table of Contents
1. INTRODUCTION............................................................................................4
1.1. Unit Testing Approach................................................................................4
1.2. Audience...................................................................................................4
1.3. Contributors...............................................................................................4
2. Purpose and Scope of Document..........................................................5
2.1. Purpose.....................................................................................................5
2.2. Scope........................................................................................................5
3. Explanation of Unit Testing.....................................................................6
3.1. What is it....................................................................................................6
3.2. Who does it...............................................................................................6
3.3. Why do it...................................................................................................6
4. Unit Testing Techniques..........................................................................7
4.1. Assume you will find errors........................................................................7
4.2. Own Checklist of Common Errors.............................................................7
4.3. Use Data most likely to cause errors.........................................................7
4.4. Use Data that make Hand-Checks easier..................................................7
4.5. Make sure all paths in code is covered......................................................7
4.6. Creation of Test Stubs/Harness and Automated Unit Tests........................7
4.7. Test as you go...........................................................................................8
4.8. Plan your tests...........................................................................................8
4.9. Record you Results...................................................................................8
4.10. Type of things to test for............................................................................8
5. Unit Test Templates..................................................................................9
5.1. Personal Development Checklist of Common Errors.................................9
5.2. Unit Test Plan............................................................................................9
6. References...............................................................................................12

Unit Testing Guidelines Page 2 of 12


Version Control

Version Number Date Details


v0.1 March 2002 Initial document created

Document Update Procedure

Unit Testing Guidelines Page 3 of 12


Unit Testing Guidelines

1.Introduction
This document describes the approach to unit testing that is to be used to verify that
each particular piece of code that has been written performs the function that it is
designed to do.

1.1. Unit Testing Approach


The unit testing approach used is that each routine, method, function
or class of the application being coded has its own unit test plan and if
possible an automated test harness.

1.2. Audience
The audience for this document are software developers and quality
managers

1.3. Contributors
Document Author Scott Highet

Unit Testing Guidelines Page 4 of 12


2.Purpose and Scope of Document
2.1. Purpose
The purpose of this document is to:

 Explain unit testing


 Provide techniques on how to unit test successfully
 Provide details of templates required
 Provide a framework to work with on all projects
 Describe what needs to be included in each test

2.2. Scope
This document details on templates and techniques that are to be used
by Software Developers.

It does not cover the XP Unit Testing Techniques. This will be covered
in a separate document.

Unit Testing Guidelines Page 5 of 12


3.Explanation of Unit Testing
3.1. What is it?
Unit testing is part of the software development life cycle that ensures that
each piece of code that has been written performs the function that it is
designed to do.

3.2. Who does it?


The developer who wrote the code: plans, writes and executes the unit
test.

3.3. Why do it?


Unit testing is performed to improve the overall quality of the software that
is passed on to the testing team and then to the client. This is done by
reducing the cost of defects, as you are eliminating them while the
application is still being developed, rather than waiting until the system
testing phase.

Unit Testing Guidelines Page 6 of 12


4.Unit Testing Techniques
Detailed below are some techniques that you should find useful when
writing and executing Unit Tests

4.1. Assume you will find errors


A successful unit test is one that finds an error. If you write unit test plans
based on your assumption that all your code is perfect you will find it hard
to find any errors in your code.

4.2. Own Checklist of Common Errors


Create a checklist of your common errors (see template). This checklist
is your own personal list of errors that you generate or particular functions
you find hard to implement. This will help you from continually introducing
these types of defects into code.

Include these tests in any unit test you create where applicable

4.3. Use Data most likely to cause errors


When writing your test plans include data that is most likely to cause an
error. There is no point testing using data that will always pass.

4.4. Use Data that make Hand-Checks easier.


When executing a test that causes an error, it is a lot easier to Hand-
Check the function if the data you are using is easy to manipulate. For
example if you are doing some calculations on a number like 986326.34
you may more likely to make an operation error on that number rather
than a number such as 90000.00.

4.5. Make sure all paths in code is covered


When writing unit test plans make sure all paths in the code are covered
in at least one test. There is no need to execute the same test with all
possible values if the code will always return the same result.

4.6. Creation of Test Stubs/Harness and Automated


Unit Tests
With the explosion of XP (Extreme Programming) a technique that is
being used is the creation of Test Stubs/Harnesses and Automated Unit
Tests that allows the developer to test their code against other code
written for the purpose of testing. This gives the developer the confidence
of making a change in a particular part of the application, running a
previously working test to check that the function still works.

However in saying that, it is sometimes required to create a Test Stub or


Harness to allow entry of input data that cannot be entered anywhere
else. This may mean that you can use the Stub or Harness to mimic an
external or 3rd party application.

4.7. Test as you go


It is a lot easier to test as you go rather than attempting to do all your unit
testing once you have completed the entire function. When estimating

Unit Testing Guidelines Page 7 of 12


work add in a little bit more time for writing proper unit tests and recording
results.

4.8. Plan your tests


Before coding a piece of functionality or fixing a defect, plan your unit test.
This will greatly improve the quality of your change as you are already
thinking about what could make this fail. See the Unit Testing Plan
Template for the format to follow.

4.9. Record your Results


Use the Unit Test Plan template to record your testing results. These can
then be stored in a sub project of the Visual Source Safe project.

4.10. Type of things to test for


When writing the unit test consider the following when looking for things
to test:

4.9.1 Functional
Does the piece of code functionally perform the task it is
designed to do?
4.9.2 Boundaries
What are the minimum, maximum values for the function, will
the function accept strange characters, reserved SQL
characters, alpha and numeric values? What happens if they
are not within these boundaries?
4.9.3 Termination
What happens in the normal termination of the function? What
about an abnormal termination of the function? Will the
application continue or will an error occur. Is the error trapped?
4.9.4 Outputs
What are the expected outputs of the function? Where do they
go, what else uses them, what happens if the output is nothing?
What happens if the output cannot be passed to the next
function? i.e. The database was unavailable when attempting to
write to it
4.9.5 Algorithms and Computations
Do all the algorithms and computations work, what happens if
the wrong values are passed to them, are the variables stored
as correct types i.e. will the result exceed 32267 (integer)

4.9.6 Inputs
What are the expected inputs to the function? Where do they
come from? What happens if they do not get passed in? What
happens if they are the wrong type? i.e. an alpha instead of a
numeric. Do they rely on any third party application?
4.9.7 Interaction
What other modules/functions does this interact with? Will
those be effected by the change?
4.9.8 Transactions
What type of transactions will occur? What will happen if a
single transaction fails, is interrupted or succeeds? Are the
transactions event driven, system initiated, user driven, or time
driven?

Unit Testing Guidelines Page 8 of 12


5.Unit Test Templates
5.1. Personal Development Checklist of Common
Errors
A personal checklist of common errors is used by a developer as a
reminder of possible errors generated due to personal development traits,
lack of complete understanding in certain areas of the application or
development language. This checklist is to be used in conjunction with
the Development Checklist.

This is an example of a Personal Checklist of Common Errors, the


template can be found at put template here

If Problem has
been mastered

Description Steps to
of Problem prevent it

Resulting Defects
if not prevented

5.2. Unit Test Plan


The Unit Test Plan is the document that describes the Unit Test and
records the results.

Each Test must have actions, inputs, expected results/outputs, actual


results and a Pass/Fail mark. There is a reference to the Client, Project,
Developer, Module and Function.

It must also include a reference to the function in the design document,


the defect number or change request number.

The actions can be determined by using the Unit Test Techniques detailed
earlier in this document.

Unit Testing Guidelines Page 9 of 12


The Unit Test Plan must be stored in Visual Source Safe under a Unit Test
sub project of the project. This ensures the test plan is kept with the
source, allow others working on the source to use it and for it to be
reused for future versions.

The Unit Test Plan can be as brief or verbose as the Developer or the
Project Manager thinks is necessary for the project, as long as the Test
Plan describes and tests to the appropriate level.

This is an example of a Unit Test Plan. The template can be found at put
template here

Reference to Design,
Client Name Change Request or
Defect

Details of Developer /
Description Project / Module and
of Test Function

Details of any pre-


execution tasks

Unit Testing Guidelines Page 10 of 12


Actions to be Expected Results Actual Results
performed and Outputs and Outputs

Inputs Required
(if any)

If the Test Pass


or Failed

Unit Testing Guidelines Page 11 of 12


6.References
References used in the creation of this document and for further reading.

 Code Complete, Chapter 25 ‘Unit Testing’ by Steve McConnell


 Effective Methods for Software Testing by William Perry
 Stickyminds.com
 QA Forum Team Services Site

Unit Testing Guidelines Page 12 of 12

You might also like