By Lena Pejgan Wiberg
The first version of this checklist for Testing Web Page Functionality was created as a very passive-aggressive way of telling the team I was working with at the time to stop making me find the same (types of) bugs over and over again. It was a horrible idea that, in the end, actually turned out to be super useful.
From it came many discussions, a few conference talks and the foundations of a few training sessions. It represents a simplified version of my mental model of things I “auto-magically” check, things I ask questions about, things I teach others.
This checklist is focused on web applications but a lot of it can be used for desktop applications, apps, services, messages or even mainframes. Some points will be clear on how to check, some might require some thought, and some could need you to learn something you've never heard of before, or thought was possible to check without being “an expert”.
Please use it, download it below, and be sure to adapt it to your unique context. Use it as a foundation and build from it.
Happy testing out there!
Boundary values
Minimal value/length
Minimal value/length – 1
Maximum value/length
Maximum value/length + 1
Text fields (all formats)
Non-ASCII characters (could be Swedish characters, Russian characters)
Copy/paste
Drag/drop
Leading/trailing space
Line break
Tabs
NULL value
Blank or empty
HTML-tags
Special characters (such as<!#$|%)
Mandatory fields
Minimum and maximum length
Numerical fields
Non-ASCII
Non-numerics
NULL value
Blank or empty
Negative numbers
Zero (0)
Decimal numbers in integer fields
Overflow: Numbers that are bigger than the data type used
Different numerical formats (metric, Pound etc)
Numerical separators (ex. 1000 vs 1.000 vs 1,000 vs 1 000)
Division by zero
Date & Time
Date/time in the future
Date/time in the past
Invalid dates/time (such as day 32, month 13, hour 25, minute 61, second 61)
Bank holidays, weekends and regular weekdays
Leap year/Leap day
Summer and winter solstice (26: e mars kl 02-03 and 29: e October 02-03)
Different date and time formats
Time zones
Navigation & Lists
Back/forward button
Lists: Column sorting (if implemented)
All list objects: Sorting alphabetically vs. numerically*
Empty lists
Very large lists
Paging: Sort order should work on the complete list, not per page
Paging: Go to first page and try to move backwards
Paging: Go to last page and try to move forwards
*If a numerical field is sorted as a string, the sort order will be alphabetical, which will probably not be the expected result
Usability
Consistent language
Consistent use of fonts
Correct alignment of text, numbers and fields
Correct spelling and grammar
Correct tab order
Error messages (language, spelling, grammar
Objects have a consistent shape and size (buttons, images etc)
Inactive links and objects are clearly disabled (grey, toned down, not shown)
No broken links, images or objects
Test with different screen sizes
Test with different browsers
Test with different devices
Scroll bars are not shown if not needed
Scroll bars are shown if needed
Windows can be resized without losing functionality
Non-functional
Performance under normal load
Performance under a reasonable high load
Performance under pressure (x times the normal load)
Concurrent use – multiple users executing the same action
Slow network speed/bandwidth
Multi-threading – multiple users executing different actions
Transactions – can the system safely revert failed transactions
Queues – can the system safely handle transactions queueing up
Time outs
Can the system handle an integration goes down during a transaction?
Can the system handle if an integration is down when the transaction starts
Security
SQL Injections
Cross Side Scripting (XSS)
Unexpected errors: The system must not show information about server, database etc
Verify access handling: all existing roles
Session variables can’t be accessed/manipulated, for example via address bar
Cookies are saved encrypted and cannot be read/manipulated
You cannot access other users’ documents, accounts, orders etc
Accessibility (WCAG)
Pictures have an alt-text
Pictures that lack importance have an empty alt-text
Pictures are not used to represent only textual content
Pictures are not used to represent only textual content
Colour is not used as the single way of identifying visual content, such as links
No instructions rely solely on shape, size or placement (such as” click the square icon” or” see instruction to the right”
The title of the page can be understood outside of its context
All elements are accessible through the keyboard
It is clearly shown what object is active
The document follows a clear and logical structure
It is possible to move directly from the page header to the page main content (this avoids headers and menus to be re-read if the page reloads)
Links and buttons with the same text but different targets are uniquely identifiable
Tables are not shown for layout purposes only
When an element gets the focus/is activated, the page does not change in a way that might confuse a user (such as a popup opening or keyboard focus changes)
No big validation errors in the HTML/XHTML code
Forms use the correct label for every element
Field validations use label and/or title to tell user of errors
There are enough labels/guides/instructions for all mandatory interactive elements on the page
Validation errors, such as incorrect values, are shown with a suggestion of how to correct the error
Any video/sound content has textual alternatives explaining the content
All sound > 3 seconds can be paused/stopped/volume adjusted
All blinking or moving content > 5 seconds can be paused/stopped/volume adjusted
No content blinks more than 3 times per second (if this cannot be avoided: small, low contrast and not red)
If a page has a time out of less than 20 hours, the user gets prompted and allowed to renew, close or adjust the time limit
Author Bio:
Lena has been in the IT-industry since 1999 when she got her first job as a developer. Testing and requirements have always been a part of her job but in 2009 she decided to take the step into testing full-time and she has never looked back since. Lena has worked as a single tester, test lead, test manager, senior test manager, test strategist and manager. She is also involved with the software testing education in Sweden, both as chairman for one of the schools and by mentoring interns to give them the best internship possible. Lena lives in a big house filled with gaming stuff, books, sewing machines and fabric. Gaming is a big thing for everyone in the family and something she loves talking about. Biggest achievement: the Dance Dance Revolution-machine taking up half of her living room-space.