Welcome to the Software Testing Spot!
This spot has some ramblings
about software testing (and software design, development and other
information technology related stuff too), some useful tips, an
exercise in design, usability and testing and
a lot of web places to investigate.
If you've got no idea
how you ended up here, don't panic. For light amusement, visit
MagPortal. For a slightly stronger
diversion, try a googlewhack or two. For
heavier entertainment, try teaching yourself a little about software
design, quality and testing with this.
If
you are interested in some of Erik Petersen's ideas about exploratory
testing and bug clusters, have a read of the award winning Back
to the Beginning paper or choose a link below to read about
something else.
About
Testing
In September 1997, in an online discussion
on the purpose of testing, Boris Beizer said
that software was tested 1] to find bugs and 2] to check quality.
David Gelperin said a higher priority
purpose (when achievable) was 3] to prevent bugs being born. None of
these areas need be the exclusive domain of software testers,
particularly the last 2.
People always make mistakes. When computer
systems are built, it is often from scratch and in a rushed time
frame so the possibility of mistakes is significant. What's worse is
many people are completely unaware that they make so many mistakes
and never bother to check what they have done. When these mistakes
occur in software, they are called "bugs". According to
Boris Beizer , this is a very old English word
(from the Welsh "bwg") that meant a problem or a
difficulty. It was later used to describe problems with machines then
computers. A bug causes people problems or difficulties when they use
software.
While "testing" traditionally (up
until the early 1980s) referred to what was done to a system once
working code was delivered (now often referred to as system testing),
testing around 2002 was "greater testing", where a tester
could be involved in almost any aspect of the software development
life cycle. Once code is delivered to testing, it can be tested and
checked but if anything is wrong, the process involved to fix it is
quite detailed and time consuming. If the error was caused by a
design ambiguity, or a programmer oversight, it is simpler to try and
find the problems as soon as they occur, not wait until an actual
working product is produced. Studies have shown that about 50% of
bugs are created at the requirements (what do we want the software to
do?) or design stages, and these can have a compounding effect and
create more bugs during coding. The earlier a bug or issue is found
in the life cycle, the cheaper it is to fix (by exponential amounts).
Rather than test a program and look for bugs in it, requirements or
designs can be workshopped or documents can be reviewed.
Anyone working in software development (not
just testers) needs to check their own work for mistakes, and check
for other team members, so everyone is involved in "greater
testing". We need to check what and how we design, develop and
test, and better design and development practices can help
mistake-proof our application for the people who will use it. As
agile software development has become popular, the line between
developer and tester has blurred and disappeared in some cases. A
developer testing tends to be structure focussed, and system testers
tend to focus on software behavior.
Software is typically built to a model that
is documented in some detail (from a specification, to index cards,
to a conversation that creates an example of how a system is to
function), and the testers compare the model to software as it is
designed. They need to learn about the model (through reading
documentation or investigation) then compare the expected model
actions with the actual system actions. This comparison of actual
versus expected can move beyond software testing into general quality
assurance for the whole software development life cycle. For example:
- Project
planning
-
-
Is a project plan meeting expectations - is it
realistic; does it have short tasks and regular milestones to track
progress; does it have checking tasks such as reviews, risk
assessments, audits or replans; does it allow for slippage and
rework of defective code; is it agreed to by the team working to it,
etc
-
Design specification
-
Is a design specification (whether for a large
system or a prototype) meeting expectations - is it clear , concise,
unambiguous, without contradictions, understandable by both the
customer and the technical team that will work with it, etc
-
Coding
-
Is code meeting expectations - following
standard practices (for the industry, organization, department or
team); containing enough explanatory comments; as simple as possible
to allow easy modifications and maintenance; using Test Driven
Development (TDD); containing tracing or debugging code if required,
etc
-
Testing documentation
-
Is a test plan meeting expectations -
following standard practices (for the industry, organization,
department or team); explaining the required test environment; the
type and amount of test data needed; roles and responsibilities;
change management; bug raising, resolution and retesting processes,
etc
With the popularity of the internet,
software was often developed without a specific model, making it much
more difficult to test. Just as documents could be reviewed without
specifically defining each expected result of each step of the
review, so could tests be performed without explicitly defining
everything that had to be tested in advance. Testing approaches to
this problem are becoming known as as "Exploratory
Based Techniques". The techniques include risk based
exploratory testing, rapid testing, attack or taxonomy based testing,
etc.
Testing is a lot simpler than it seems once
the basic principles are understood, but software quality is going
backwards. One study
found that most software was tested, though about three quarters of
all software was only tested informally. Another study (Meta Group
Dec 2001) found only 20% of web sites are tested at all. Hopefully
this site may help in some way to correct that appalling figure.
We
already know one effective approach. In the last decade, practices
built around small teams (known as agile methodologies) have been
documented and described, focussing on minimizing the overhead
involved in delivering software by trying to deliver regularly
working software to customers, and focussing on human to human
communications when determining the models that are used. I think
these approaches will replace the traditional ones within a decade. I
hope so at least....
About
this page
My name is Erik Petersen. I'm based in
Melbourne, Australia, and have a consultancy
called Emprove.
I've worked in all facets of software development since the mid 80s,
concentrating on quality since the middle 90s. This occasionally
biographical site contains
some of the things I have found since I came online in
1996. During a short career break in 2002, I created this
software testing site, different from other testing sites on the web.
I wanted it to be like a book of information that I could use and
share with other people. I based it on a folder I had in the early
90s when I worked in software services and moved regularly between
roles across the software development lifecycle. The folder had
reference material with tips and articles of relevance to work, or
things I may do occasionally like give a presentation, or help out in
an interview, etc.
The Internet was and remains a major source
of knowledge for me beyond hands-on experiences. I had a good
collection of good reference sites on testing and quality, and I have
added to those for other relevant areas such as life skills and
project management. This site has introductory material for people
who want to learn more, but it is also a useful resource for
experienced testers, developers, designers, managers and others. It
also has an exercise in design, usability and
testing that both novices and experts should find rewarding.
I
invite you to wander through and discover things. The Spot is one
large page so you can search it all using your browser, or use the
heading links or just page through it. The
linked sites are all free, and you can grab the information as you go
(but respect the legalese at each site please). Most sites have their
own links page too. Sometimes I have pointed out particular articles,
sometimes you can investigate for yourself by searching the site or
looking through the articles. Some files are PDFs, so I presume you
have Acrobat Reader. Some files are MS-WORD documents, but most word
processors would handle them. If you do find an unreferenced article
was very useful or have a favorite unlisted site, send me a note
and I may mention it by name. There are other sites that I will list
when I get the time (and others that I have yet to discover). For the
time being, try these.
Mostly
lifecycle
The information here spreads across the
entire software development lifecycle from requirements to design to
development to testing to release. Once you finish here, don't forget
to try the exercise in design, usability and
testing either.
- The
StickyMinds site
-
The software testing and quality engineering
site (acronym STQE, pronounced sticky). When I started at the ANZ
Bank in 1997, one of our goals was to create an internal database of
testing knowledge. We never got around to it, but this cornucopia
did. It has the best articles about almost anything from hundreds of
sources. Also has some other good features like weekly "editorials",
and discussions. Sticky minds is part of SQE
which Dave Gelperin used to give as his home page before he sold his
share (but you'll still find some of his articles at StickyMinds).
-
The CrossTalk
article
-
This software engineering magazine crosstalkonline.org (with a
defense slant) had all the issues online and searchable. Each issue
focused on a particular area of interest with articles from leading
experts. If anyone finds it archived, please let me know
-
(archived)
All about Reviews
-
This is an 89 slide presentation, from the
people behind CrossTalk, covering all types of reviews across the
software lifecycle.
-
Software
Development
-
This magazine has all issues online and
searchable. They also have great newsletters.
-
the MagPortal
-
Search here at the Magazine Portal for
software development, design and testing articles from the technical
Dr Dobbs Journal, to big-picture CIO and other mags as well. Search
All categories to include other IT magazines, but also diverse mags
from Scientific American to Wired, and many others. There were 101
magazines that had articles containing "software testing"
though quite a lot would be passing references (like "Car and
Driver", "Bank Director", "Askmen.com" and
"Entertainment Today"!).
-
Software
defect reduction top 10
-
I consider this short article by Barry Boehm
and Victor Basili to the closest thing yet to a holy grail of
software quality, and if you understand each item and the
implications of it, and you are able to implement a process to
leverage it, you will be producing great software.
-
the SWEBOK
-
The Software Engineering Body of Knowledge is
a brave experiment, modelled on the Project
Management BOK. The Association for Computing Machinery pulled
out of the SWEBOK process based on the findings in this report.
While the BOK approach may work for some aspects of the
software lifecycle, software testing is another matter. There are so
many different situations and variations on testing that a BOK
cannot cater for. Some University of Calgary students have created
an alternative
view of the testing SWEBOK section (slightly more agile
friendly).
I voted against approving the draft versions of the
SWEBOK. I was happy to note that Australia had the largest number of
reviewers outside of the US and Canada, but 16 people out of 600 or
so is a tiny sample of the possible reviewer base.
-
Principles
of context-driven quality
-
The realist's manifesto for quality software
systems. Rather than a testing BOK, what is required is a context
driven approach that changes with the type of software, or project,
or supporting documentation or deadline involved. With minimal doco
or planning time, we utilize exploratory
based techniques. The techniques include risk based exploratory
testing, rapid testing, attack and taxonomy based testing, etc. See
James Bach's or Cem Kaner's
sites for more information, or read some of James's articles on
StickyMinds. Also check out James
Lyndsay's great exploratory testing page
-
Yoopeedoo
-
Completely unrelated to Fred Flintstone's
"Yabbadabbadoo", the UPEDU or Unified Process for
EDUcation is a fully featured software development methodology, but
designed to teach good practices in software development (and not
for commercial software production!).
It is based on Rational
Software's RUP process, and a text book that describes the process.
Many companies have proprietary methodologies that they will only
distribute to paying customers. RUP is probably leading the world
because it is built around Use Cases that represent what software is
meant to do, where diagrams supplement words. Search yoopeedoo for
the Use Case artifact for more information or try StickyMinds
-
SDLC
-
A cynical but often true view of the software
development life cycle
Mostly human error
Once you are finished here, you'll also
find some examples in the exercise in design,
usability and testing if you look carefully.
- the
Britney Variations
-
Composers of music often write pieces of music
that contain variations on a musical phrase. This archived page
lists variations of a different sort.
-
You
don't need to spell to sell
-
An example of the confusion caused by the
Britney (and other) variations, and a clever piece of functionality
to get around it.
-
About
Human Error
-
Ray Panko has collated the results of many
studies that show how feeble we really are. One of the most
dangerous aspects of this now is users creating spreadsheet macros
and not realizing how easily they can get it wrong. This rates a
mention as the last item in the Software defect reduction top 10
-
An
Engineer's view of Human Error
-
Article about Trevor Kletz on various sorts of
human error. He believes better training or supervision can prevent
some errors but the most effective action is to reduce opportunities
for error, or minimise their effects, by changing designs or methods
of working. This is a presentation
of his as well.
-
Introduction
to Human Failure
-
This talks about different aspects of human
errors. There's also other reference
material as well
-
Accident
Aetiology
-
This is a course on errors and failures from a
English quarrying site, with lecture notes and slides.
-
Computer
Stupidities
-
No matter how perfect a computer system may
be, a fundamental flaw we usually cannot avoid is it needs to be
used by humans. Thanks to Gerard Yvanovich for the link.
Mostly testing
Once you finish here, don't forget to try
the exercise in design, usability and testing
either.
- Mr
Glenford
Myers
-
Well, sort of. This is my "Back to the
Beginning" discussion of testing axioms from 1976 and their
impact on testing today. It won Best Paper at STARwest in California
in 2006.
-
Testing
FAQ
-
If you are after some basic information, you
may find it in the Software Testing Frequently Asked Questions
-
(archived)
System Testing Lifecycle
-
This was a good introduction to the classic
system testing life cycle. There was also 10
System Testing Commandments with explanations.
Luckily this is on the web archive. (There was a typo in the
explanation but there are probably a few on this page too.) It's
also worth looking at 16
Testing Commandments.
-
the
Testing Life Cycle
-
This link actually takes you to a book called
"Rapid Testing". The sample chapter is a good introduction
to testing activities from design through to code, and defines some
useful buzzwords like validation, verification, V model, static
testing, dynamic testing, etc. Use these terms in job interviews.
[grin]
-
On
risk and quality
-
This paper, "A Software Quality Model and
Metrics for Identifying Project Risks and Assessing Software Quality
" is a good introduction from NASA on quality, requirements and
risk, though all the ideas on metrics may not be relevant. Check out
the typo in the URL as well. Oops. [grin]
Another related
article is "verification and validation implementation at
NASA", which you will find at
NASA.
It includes the risk criteria that NASA use.
-
(archived)
A Testing Introduction
-
A brief but meaty university introduction to
software testing by Kevin Sullivan. Testing wasn't even available
when I was at uni, and I don't believe you need a uni education to
be a good tester, but it certainly wouldn't hurt.
-
Choosing
data for tests
-
You can't test everything, so you need to be
choosy. Equivalence Partitioning is a key technique and this article
is one of the best I've seen. It will help you to choose a good
cross-section of your data. Craig Borysowich does not seem to
mention tester or trainer in his bio but he writes great articles
about testing. The slides by Gail Kaiser at Columbia University was
a long time reference, but they have vanished into the ether. So
have George Corliss' slides from Marquette U.
Another approach
to equivalence partitioning is on this University
of Maryland page. Follow it up with this California
Polytechnic EP example from Dr John Dalbey.
-
Test
Partitioning Techniques
-
A guide from the Eclipse team.
-
Partition
Testing
-
A great example of using equivalence classes
from Debra Richardson (reposted). Could also be called "How to
thrash a Find function". Study the example, then try the
partitioning exercise then compare your answer to the provided one.
More great uni material.
-
Mr James
Bach
-
James is a leader in the new school of
software testing moving away from the traditionally heavily
engineered approach to testing software to agile methods drawing
from other disciplines such as human problem solving and scientific
method. The "exploratory based techniques" link in the
opening paragraphs of this page links to this
article by James that sums up his ideas. You'll find a lot of
interesting reading at his web site. I recommend "Exploratory
Testing Explained". Try to solve his dashboard puzzle (under
Presentations) too.
-
Dr Cem
Kaner
-
Cem says he "tests software, legislation,
and people's patience (not always in that order)". Shift.com
reported that Network Computing magazine called him "one of the
sharpest thorns in the side" of software makers. Cem is a
Professor in Computer Science at Florida Institute of Technology,
and is looking at educating the next generation of software testers.
Back in 1996, when I first started participating in online testing
discussions, I had no idea who he was and blithely gave him some
testing advice. I have used a lot of his advice and wisdom in my
testing. Look at "Paradigms of Black Box testing" for a
great overview of the variety of test approaches.
-
Michael
Bolton
-
If you watch the deleted scenes with
commentary in the 2nd Blade movie, you'll see they try the Michael
Bolton experiment with the Vampire King, putting a long blonde
curly wig on him. [grin] This is not that singing MB, but this one
is into experiments of many kinds. One of the deepest thinking
testers and definitely one of the most productive in terms of
regular output, Michael has many great conference presentations and
regular columns to read. Start by reading "A Map By Any Other
Name" perhaps.
-
Dr James
Whittaker
-
James was the professor at FIT who lured Cem
from consulting in California and into education in Florida. James
is breeding "Jedi Testers" that will routinely crash bad
software, just as advanced martial artists smash bricks and wood. If
you haven't heard the mantra of "input, output, data,
computation", you have some catching up to do. With a teaching
team headed by Whittaker and Kaner, can you guess where Microsoft
used to go to hire testers? Then they hired James! Now James has
moved on to Google. James's web site seems to have gone off line, so
I've linked to a Breaking Software presentation.
-
Mr Brian
Marick
-
Brian has his own articles on testing and
development and some surveys of new testing ideas here. Brian has a
foot in both the developer and tester camps, and was the original
tester signatory for the Agile
Alliance. He has probably the best set of agile
testing links on the web.
One general article of Brian's,
"Classic Testing Mistakes", has since become a minor
classic in itself, and I am very proud of the fact that I was one of
the reviewers of the original draft.
-
Paul
Gerrard
-
After providing your email address and name,
you'll find great articles on risk based testing amongst others.
Paul Gerrard probably has the largest number of web hits for his
name of any person in testing. Paul is a British tester, but also
shares his name with a footballer. I wonder if that has anything to
do with it. [grin]
-
Ms Elisabeth
Hendrickson
-
Elisabeth, Ms Test Obsessed, has some great
articles about software testing. Check out "Why are my pants on
fire".
-
Mr Rex
Black
-
Rex has some great material on software
testing too. Check out "Risk Based Testing: What It Is and How
You Can Benefit".
-
Rob Sabourin
-
Rob is always writing great pieces. Search the web to read Rob's "I am a bug" presentation
to learn a little about bugs!
-
Jonathon Kohl
-
Jonathon is interested in exploratory testing
amongst other things. In the fourth
part of his ET intro , he presents strategies for test ideas.
Many of these qualify as quicktests, short test ideas designed to
highlight a particular behaviour of interest.
-
Danny
Faught
-
Danny is a interesting contributor to the testing space and has some great content.
-
Harry
Robinson
-
Harry specializes in model based testing but
he is also interested in testing humor like testing
bumper stickers!
-
Mr (often
broken) Boris Beizer
-
Boris concentrates on writing books and hasn't
got a web site. He's been heavily involved in testing and quality
since the mid 60s (after getting a testing doctorate!), and takes a
engineering approach to testing and doesn't like to cut corners, but
is now semi-retired. This book extract highlights the best and worst
of 13 test practices. Note that Jakob Nielsen has disproved Boris's
thoughts on usability testing (to my satisfaction at least but
probably not Boris's). Boris also presumes that management always
allows lots of time to develop and test....
The saqa domain
routinely vanishes then returns so if the above link is broken,
you'll also find the extract
here
-
Software
Testing Education
-
This site has some excellent training material
and links to American testing and quality courses.
-
Test
Process Improvement
-
TPI was created by Martin Pol and Tim Koomen,
and is probably the best process improvement tool to measure where
you are presently and target actions to produce improvements. You'll
probably need to buy the books to do it properly (now called TPI
Next with new tools
), but this is an introduction at least.
-
Testing
dirty systems
-
This is Randy
Rice's approach when you're not sure what you are testing.
Mostly risk
After 50 years of software projects, they
still seem to fail at a rate that would be completely unacceptable in
any other industry. I think the role of risk management will be more
important over the next decade in both testing and software
development. As well as these links, search the page for other risk
links including one from NASA.
- The
Negative Side of Positive Thinking
-
Payson Hall discusses why risk is so important
in software development. You'll also find some other great risk
articles by Payson here
and at StickyMinds.
-
Ursus
Three-step
-
In 1997, IEEE Software magazine had a special
issue on "Managing Risk". When the guest editor, Tom
DeMarco, and the author of the lead article, Tim Lister, write a
book on risk "Waltzing with Bears", you would expect a
lot, and they have delivered. There is also a related risk
planning tool (in an Excel spreadsheet). There is more like this
at their ASG site
-
The
biggest risk
-
This essay by Mark Cashman looks at the risks
that technology development and integration projects face, and
suggests some mitigation strategies.
-
Risk
and Uncertainty
-
A summary of a speech by Les Hatton.
-
A
guerilla guide to risk management
-
A speech by Rear Admiral Kathleen Paige, with
the amazing title of Chief Engineer, Assistant Secretary of the Navy
for Research, Development and Acquisition/ Director, Theater Air and
Missile Defense and Systems Engineering. Please respect the
conditions of use. This is now broken, so I'm trying to relocate it.
-
SEI
Risk management
-
This is the Software Engineering Institute's
take on risk. There are some (long) documents to download relating
to the 3 letter acronyms SRE, CRM and TRM. Happy reading.
-
Risk
Prioritization
-
A lesson on ranking risk for testing,
including sample questions.
-
Risk
Reference card
-
A double sided reference on risk. Please
respect the legalese.
Mostly design
Once you finish here, don't forget to try
the exercise in design, usability and testing
either.
- Jakob
Neilsen
-
Jakob Neilsen's useIT (Useful Information
Technology) site is a treasure trove of information on building user
focused systems. He has proved it is quite a simple exercise to test
how usable a system is. If you want to do it too, start out with
"Why you only need to test with 5 users", "Cost of
user testing a website", and "Instructions for branch
office testing". Also check out Bob Stahl's "Usability
Testing" article at StickyMinds.
-
Mr Alan
Cooper
-
Alan Cooper wrote some software that Microsoft
bought off him and renamed Visual Basic. Alan is into engineering
simple mistake-proof human oriented designs that allow us to do our
work easily. His articles have gone from his site, but I recommend
the archived Fourteen
principles of polite applications
-
(archived)
Paul Heckel
-
This is an extract of Paul's "The
elements of friendly software design". It is a hyperlinked
document, and the legalese states it is for reading only and not for
printing.
-
Karl
Wiegers
-
Karl focuses on the design side of software,
with some good articles on requirements and reviews amongst others.
-
The Atlantic
Systems Guild
-
They claim "If you build software,
chances are that you and your organization are using some technique
developed by The Atlantic Systems Guild." They have a lot on
requirements here, articles, a template and links too.
-
Thomas
Alspaugh
-
Thomas has a nice discussion on kinds of
requirements, ways to group them, and who could be interested in
them. There's also various other articles to explore.
Mostly development
Developers sometimes will ask testers for
assistance or sources of information, so try these. Also, the Agile
Alliance has seen development testing become much more advanced, and
the line between tester and developers is becoming less clear in many
teams. (This section is under development!)
- Planning
Poker
-
Estimates are invariably wrong
on traditional IT projects for many reasons. This simple agile
approach to a more formal method (a.k.a Delphi
) gets all the team involved, is fast and fun. This site is Mike
Cohn's free web-based planning tool. For a more detailed explanation
of how it works, read this.
For non-web p-poker, you can make your own cards if you want to
(here is an example)
or use this template
pack or this set of very visual cards.
Read this piece
for ideas on further improving estimates.
-
Some agile
conversations
-
The Agile Alliance is an amazing group of
people creating better ways to design, develop and deliver software
that does what customers want and need. It will take me a long time
to collate all the links I want here, so in the interim, this site
has audio interviews with many of the key players. Alternatively,
try the Open Directory's agile
links
-
agile@atlassian
-
The Atlassian folk blogging on how they do
agile
-
Explaining agile
to executives
-
Here is Brad Appelton's suggested approach for
a presentation slide.
-
Ten
tips on agile software development
-
This is taken from a conference session by
Joshua Kerievsky.
-
About TDD
-
Test Driven Development is a poor name for an
amazing practice. By building small unit tests that assert the
validity of small parts of programs as the program is built, the
tests as a whole become a regression test checking that everything
still works as changes are made. The requirement to plan tests in
advance of creating the code also forces simplicity of design on the
code, that makes long term changes much simpler and less time
consuming. If newly added code breaks existing code, an assert test
should fail, and relevant code needs to be corrected so that the
failing test passes. The tests remain part of the code and can only
be moved to system test when everything works. Properly done, this
covers off lots of the risks of regression that system testers
typically faced. All new software development should be done using
TDD, and as the assert code is free, there is no obstacle to it.
Here is some more TDD info
and case studies involving money
handling and reading
a data file (both in the original TDD language, Java). If you
are interested in trying TDD, why not try
it with Ruby. Alternatively, here is a non-programmer 1 hour
hands-on tutorial
involving Excel macros.
-
the Ruby
Language
-
If you are wanting to learn more about
development, try Ruby (go on, try
it now!). If you want more, learn
to program with Ruby, or just learn
Ruby, or even read the amazing illustrated
Ruby book. Ruby will enable you to create utilities to help make
testing easier, and has libraries to support test automation and
other application areas (look up watir
). Ruby is free, as are a lot of the references. Brian
Marick's Ruby book is a great source of information too (but
you'll have to buy it).
-
To make things easier, use an IDE (integrated
Development environment) like EasyEclipse
for RUBY . Read this
short introduction to using it (read from Creating a Sample Ruby
Application From Eclipse), or a longer
introduction if you prefer.
-
All
about Refactoring
-
While a program work for a user, the actual
under-the-covers implementation may be overly complex, not tested
properly, hard to understand and maintain, contain duplicated code,
and basically be unfinished. Refactoring is all about cleaning this
up. The stuff that refactoring cleans up is called technical
debt. This material is from Martin Fowler. There's another good
article by Chuck Connell on The
missing theory of refactoring
-
Dependency
Injection
-
I once did some technical writing for IBM, and
one of the challenges was writing help text or explanations of
complex functions, while trying to use the language of a grade 6
student. Explaining dependency injection to a non-coder is a similar
challenge. Imagine you run a window washers collective. Each worker
has their own basic gear, buckets, sponges, scrapers, and can handle
smaller jobs unassisted. Larger jobs need scaffolding or cherry
pickers, so they need to be provided for the workers in those cases.
Dependency injection provides complicated material to a worker
function to help it do its job. This simplifies the design, and
makes it more flexible allowing different types of materials to be
provided in different cases. Another advantage is the ability to
provide fake materials, when we are only interested in testing the
function to check it still works properly. Another introduction to
DI is the first chapter
of a book all about it, or this shorter article.
Here's a ruby focussed intro
as well.
-
the Software
Dev Commandments
-
Jean Debell says "May the source be with
you". These 10 items serve as lessons to code by for
developers, and evidence that "developers love acronyms"
for testers.
-
How
To Write Unmaintainable Code
-
While this is part of a large site dedicated
to Java, it is of value to all programmers, especially in procedural
or object oriented languages. I hope your developers will realize
that this is really a "how not to" guide!!
-
Teach
yourself programming in ten years
-
The Amazon search in this article no longer
works. Amazon give you a message saying use Advanced Search, but
provide no links or clues to find it! Maybe they need to hire some
of the people the article talks about!
-
(archived)
Testing, Debugging and Reviews
-
This university book chapter is a technical
introduction aimed at software developers, and it includes example
programs in C++.
Mostly management
- Managing
in Mayberry
-
This parable is a clever look at management
styles, and the importance of a comfortable chair....
-
1
minute manager
-
An article based on the famous book.
-
Johanna
Rothman
-
Johanna writes about managing people and
projects as well as testing. Her new Manage It! book is fantastic.
-
Mike
Tarrani
-
Mike's Life Cycle, Project &
Infrastructure Management site is a mix of artifacts and links
(across the SDLC including testing and risk), and some engaging web
logs (under Content We Update Daily). Thanks to Chris Holt for the
link.
-
Basic
project management skills
-
These articles are written from an engineering
point of view but apply to IT as well.
-
the PMBOK
-
The PMBOK is the standard internationally
accepted guide to managing a project, but it is viewed as
information that needs to be paid for, hence the wikipedia entry. In
2002, old versions of the PMBOK were available at the PMI site, then
it was only extracts and now, nothing. This dead link
had the entire 1996 PM Body of Knowledge here, then they followed
the example of the English language sites and removed it. Oh well,
suffice to say that the PMBOK doc ("A guide to the project
management body of knowledge) is available as both a pdf and zip
file, and if you experiment
with a search engine you may find a copy. If you wanted to, you
could buy
the latest PMBOK at the PMI site......
-
the
Busy Person's Project Management book
-
Rob Thomsett's plain speaking guide to all
things projecty. Rob's from Melbourne Australia like me.
-
Principle
based project management
-
James Chapman adds 10 principles to focus on
beyond the PMBOK. I like his 8th, "If it hasn't been tested, it
doesn't work." He also has some tips for project mgmnt newbies.
-
(archived)
Runtime collective
-
This is a good summary of IT project
management, including Steve McConnell's classic project mistakes.
-
(archived)
100 rules
-
There are 100 rules for project managers here,
based on experiences at NASA.
-
Leadership
for Librarians
-
There is a tutorial and summaries of a variety
of books here (down to a single sentence or even word!), including
the 1 minute manager, and lists from Martin Luther King and Benjamin
Franklin.
-
Corner
Office
-
Corner Office is a section of the Business
pages of the New York Times. It features interviews with senior
managers on leadership and management. Some interviews (like Steve
Ballmer) also have the audio highlights to listen to.
-
Boss
-
Boss magazine (Australian based but
internationally focussed) is a general management magazine that
comes out in print on the second Friday of each month as an insert
in the Australian Financial Review newspaper. All the content is
online as well and it has great articles, information and links and
is searchable.
Mostly Tools
- A
survey of free and commercial Test Tools
-
Rather than reinvent the wheel, I'll let Danny
Faught take over on this.
-
Open
Source Test Tools
-
I haven't played with many of the tools here
but they look promising.
-
Just
Enough Test Automation
-
Read these articles extracted from the book of
the same name.
-
Automation
Junkies
-
"(archived) dedicated to exploring and
supporting the area of software test automation and how it fits into
your software testing cycle" and doing it well...
-
Alternative
Test Tools
-
Alan Richardson has some tool lists, a
presentation, a paper and even some movies of the tools in action.
I've had freemind on my PC for several years now and track most of
my work activities with it.
-
Test
Tools list
-
A good list with several free tools. Also see
the tools links pages at QA City, Testing Stuff and Workroom
Productions below.
-
Brian
Lawrence
-
You'll find free requirements, design and life
cycle tools here.
Mostly Bugs
Once you finish here, don't forget to try
the exercise in design, usability and testing
either.
- A
dozen bug writing tips
-
This is short, sharp and to the point. Also
see Rex Black's "The fine art of writing a
good bug report", and Elisabeth Hendrickson's
"Writing Effective Bug Reports".
-
Reporting
bugs effectively
-
A useful article from the programmer point of
view.
-
Origin
of the species
-
Not Charles
Darwin , but Fred Shapiro on the origins of the words "bug".
Apparently, his origins are not altogether. Grace didn't actually
find the bug, but was involved with the team that did. They knew of
the term "bug" already, which is why they made the pun
(first ACTUAL bug) in the report.
-
Struggling
software
-
Ben Simo asks "Is there a problem here?"
where software struggles to function or communicate to the user when
it has not functioned according to expectations.
-
Usability
bugs
-
The Bad User Interface gallery highlights
screens and messages that are a little less than "user
friendly".
Mostly Retrospectives
- Retrospectives
-
A neat introduction to retrospectives from
Chris Sims.
-
Agile
Retrospectives - Appreciative Inquiry
-
An overview of the core material in the book
Agile
Retrospectives by Esther Derby and Diana Larsen.
-
Live
and learn from Retrospectives
-
Another introduction to retrospectives, from
Rachel Davies.
-
Retrospective
Techniques
-
A framework for retrospectives, with lots of
links, from Idia Computing.
-
Agile
Retrospective Resources
-
To quote Rob Bowley's site, "a resource
for sharing retrospective plans, tips & tricks, tools and ideas
to help us get the most out of our retrospectives".
-
Retrospectives
changing culture
-
Alan Dayley wrote this in the washup of a
twitter thread I started about the 1 key agile practice to adopt
first, based on my blog
post. For me it was standups because of the impact on quality,
but the bulk of commenters thought it was retrospectives!
-
Retrospectives
and 5 Whys
-
Using the 5 Whys to avoid the blame game.
Mostly Life Skills
- Managing
stress
-
This site also has information on creativity
and memory skills, problem solving, management, etc.
-
Online
writing lab
-
This site has tips on writing and language.
The material on conciseness is similar to a poster presentation I
did while I was working for Computer Sciences of Australia. If you
follow the conciseness rules when writing, your message should be
understood every time.
-
Virtual
Communication Assistants
-
Online tutorials to improve skills for public
speaking, interviewing, meetings, teamwork and more.
-
Big
Dog's Biscuit Bowl
-
Don't let the name fool you, there is some
great material here on training, leadership (including presentation
skills), an amazing links page (under Library) and more.
-
Business
Balls
-
Continuing on with strange site names, this
grew out a consultancy that provided juggling lessons as part of
team building. This site has all sorts of gems, covering team
building, human resources, leadership, communication, humor, even
juggling!
-
Creativity
and problem solving
-
Some ways to generate ideas or solve problems
in teams and by yourself.
-
Problem
Solving Techniques
-
This is a comprehensive guide to a range of
problem solving techniques.
-
Investment
in People Skills article
-
The first half of this article is a short
people skills introduction. Good people skills are essential for
testers who are typically criticizing other people on a regular
basis and need to be good at sugar coating the message and building
trust.
-
Listening
to Connect: A Beginning Frame
-
An approach to improving your listening
skills, by Sally Ann Roth (scroll down till you see her name). I
wish I could follow the advice here more often, but just as my
fingers keep producing typos, my mouth keeps on talking!
-
Influencing
with Integrity
-
Genie Laborde's book "Influencing
with Integrity" is one of the most amazing books I have
read (in the library of one of the companies I worked for) , but
unfortunately I don't remember enough of it.
I have to buy a
copy soon. If you don't want to buy it, the downloads at the bottom
of this link page introduce some of the core ideas.
-
Life
Skills
-
This holistic list is something to aspire to,
and not that hard to attain if you set your mind to it.
Links blogs and
forums
Once you finish here, don't forget to try
the exercise in design, usability and testing
either.
- Testing
Reflections
-
A series of tester and developer blogs,
focussed on testing and quality.
-
Erik's Blog
-
My blog at testing reflections.
-
IT
Project Failures Blog
-
Michael Krigsman muses on the sad realities of
software/hardware/infrastructure projects.
-
Software
Testing Hotlist
-
A comprehensive list of links, maintained by
Bret Pettichord. At the very bottom of the list you'll find a link
to his own papers and presentations, or just go to his website
to see them.
-
Testing
Stuff
-
Kerry Zallar has a neat name for his site, and
a great disclaimer, "This may not be the best testing web site
out there ... but, it links to many that are! "
-
Workroom
Productions
-
I was looking for James Lyndsay's site for
some articles, but was pleasantly surprised at the great links list
he also had. James has won several best paper awards, and you'll
find those papers here, plus an exploratory testing timer amongst
other things. We used the timer at an ET workshop we both
co-presented at AsiaSTAR 2003 & 2004 in Sydney, Australia. We
have since independently delivered ET training sessions around the
world. Also check out James's great exploratory testing page and his
shockwave black box testing machines
-
QA city
-
QA city has now merged into another website.
Go to the page of Downloads and look for "Common software
errors" to see a great (long) list of error types, after you
provide your details.
-
Lots
of online training
-
While it is preferable to learn technical
skills from a human, there are many introductory courses available
for free on the web. All testers should know XML and SQL, and you'll
find interactive courses that let you practice your programming as
well.
-
mainly design
and development links
-
A (archived) great page of design,
architecture, patterns, use cases and other links.
-
some Usability
links
-
A great page of usability and user interface
design links.
-
Project
Management Links
-
A page of useful links, aimed at non-profit
organisations.
-
More
Project Management Links
-
Another page of useful links, mostly templates
and reference with some (archived)
BOK links.
-
CIO's
Research and analysis pages
-
These links are to assorted magazine articles.
-
Open
Directory's software testing links
-
The Open Directory sites are listed by
popularity as sites and links. Will this page ever make it? Yep. It
appeared in mid 2002, and cracked the top 30 in Sept 2002, but has
since dropped out (it is now on the Directories page). Maybe I
should have updated those broken links quicker... :)
-
QAforums
-
The name may indicate Quality Assurance, but
in their own words, this is "The online community for software
testing & quality assurance professionals". There are
nearly 40 forums covering process, approaches, tools and logistics.
There's also an associated links
site.
Mostly whatever
Here you'll find odds and sods including
some sites that look back at the past, a site that looks to the
future, and some web related sites.
- AFTWANT
-
Australasian functional testers, with a nimble
twist, rather dormant but may revive
-
Arabic
Testing Spot
-
This is an archived version of this page
translated electonically into Arabic. Read my Arabic
on-the-fly translations blog entry for more and a description
how to generate translations yourself.
-
Levi
Hand Signal Technique
-
I've blogged (is this a dictionary word yet?)
on this. It is an incredibly simple technique to use in meetings to
wrap up all the discussion on a topic before moving on to the next
topic, or alternatively jump to a new topic to move on from a stale
one.
-
Download
Shockwave
-
James Lyndsay got me interested in using
shockwave programs run in browsers for teaching testing. He prefers
to write his own testing machines, but I
prefer to reuse other people's (with real bugs). I have shown
hundreds of people my exploratory testing of clocks demo. I have
written up but not posted a simple intro to testing using shockwave
programs (stay tuned!). If the following game and clock don't work,
you will need to download shockwave. So here is an interesting game
you could try and a corresponding clock.
I challenged James Bach with the game as a
testing challenge, and he ended up beating my high score of 6481 I
think (can you find the strategy that lets you score in the
thousands?). If you get an extremely high score, send me a
screenshot. The clock has no bugs but you can watch it forever....
-
Turning
Points in Computing (up till 1999 at least)
-
A special 1999 issue of the IBM Systems
Journal, this is a good source of historical information.
-
Significant
Folks in IT
-
Computerworld's interviews with significant IT
people.
-
History
of Computing
-
This is a interesting source of information
covering many aspects of technology.
-
Brief
history of Programming
-
David Chisnall takes us from Turing to
tomorrow.
-
Harrow
Technology Report
-
The rapidly changing face of computing is the
subject of this report (it used to be called that until recently as
well). People from around the world assist Jeff Harrow with items
for his newsletter. You can subscribe via email or just read it
here. Thanks to Craig Spendlove for this.
-
Search
Engine Watch
-
A must-visit site for the serious net
searcher, with a great monthly email newsletter
-
the Googlewhack
instructions
-
All work and no play makes for an unhappy day.
If Magportal can't amuse you, try
googlewhacking as an intellectual challenge. What is googlewhacking?
Try it and see. A related activity is using Google Autocomplete,
or creating your own Autocomplete application
site
Try this out
- Perpetual
Calendars
-
Try this exercise in design, usability and
quality. Here are some examples of perpetual calendars (most of
which need Javascript to run). A printed calendar is typically only
valid for a month or a year at a time. A perpetual calendar is
designed to allow a calendar to stay current. It may also be used
for future planning, or investigating historical dates. Try out each
calendar then try and answer these questions. Which are the best
designed? Which are the most usable? Which are the simplest? How
would you justify your choices? If you redefined your concept of
good design or usability or simplicity, would your choices change?
What if you had to choose a calendar for a child to use?
What functionality does each
calendar offer? Is it a yearly, monthly, weekly or daily calendar?
Is it obvious how to use it? Do you think people would need to be
trained to use it? Can you tell what day of the week a date falls
on? Can you easily move to adjacent months or years? Could you use
your browser to print a calendar for a month or a year and hang it
on a wall? If you print it, do you have space to write notes for
particular days? Which calendar would you choose to use? Would this
change if you had to meet a particular requirement (e.g need space
for notes, or need to easily view next or previous month), or some
combination of requirements?
What is the quality of the
software like? Are the calendar headings correct? Do they overlap?
Are you doing all the calculation instead of the computer?
Alternatively, could you print one out as fallback (perhaps during a
power strike) to calculate a future date? Try doing incorrect things
as well. What happens if you enter unexpected information, eg
letters for numbers or vice versa, or just spaces or nothing at all
or is it mistake proofed to prevent you? What happens if you try to
enter a year with 10 digits, or a negative year or a year of zero?
Which calendar would you choose to use in terms of quality?
If
you want to, try the exercise again with these perpetual calendars.
While these calendars all work for both Internet Explorer and
Netscape Navigator, calendar E does not fully function with W3C
browsers like Opera, Mozilla, etc (though all the other calendars
are OK for W3C), and Opera does ugly things to calendar D.
Feedback
Was the spot "Some Preaching On
Testing"? Or "Some Polemically Overblown Tirade"? Or
something in between? Send comments to Erik Petersen at
If you took the challenge in the Mostly Bugs section, you may
have already seen the first
bug report.
In case you are wondering why some links are
listed as the something site, or Mr Somebody Useful, and others are
not, HTML won't let you nest a site link inside a page link, so the
extra text at the start of the site link lets you do it (but it looks
a little clumsy all the same).
Currently
this site is under (perpetual?) construction. Please visit again.
Thanks to the wayback machine site for preserving lost
gems.
Copyright © 2002-2020 Erik Petersen
CRUD
statistics
First created - March 25 2002
Last read - What
time is it now?
Last updated - 20 Mar 2020
Ongoing Task - updating 50 broken links
Last updated with archived sites - 21 Aug 2011
Word clouds added - 6 Nov
2009
First deleted - On June 2 2004 for 10 days by an annoying
hacker
(hey IR, this is a site to help people so please don't
come back)
Also hacked with random text and links for expensive european watches, WTF?
Disclaimer : My fingers ignore my brain as I
handcraft HTML so please ignore typos. The reliable links were all
live last time I checked.