For COVID-19 updates, please go here
J. Reyes POSTED ON 27 Jan 2015

A Deeper Look into Testing and Checking

Software testing has changed drastically over the years. New methods and tools have been introduced that have helped in delivering high quality websites, apps and software products. However, there are terms that sometimes confused the developers, project managers and even testers. One of these points of confusion is definition of “testing” and “checking”. In this post, I will describe these two concepts, their differences and how it fits in a software development cycle.


Most of the time testing and checking have been used interchangeably. Developers test their code, testers check the feature. Or is it the other way around? Every person in a team does their part in testing and checking their work towards one goal: to release a “bug-free” product. But there is not always a clear understanding and definition of those terms in the development and testing communities, which is why James Bach and Michael Bolton worked together to come up with these definitions:


“Testing is the process of evaluating a product by learning about it through exploration and experimentation, which includes to some degree: questioning, study, modeling, observation, inference, etc.”

“Checking is the process if making evaluations by applying algorithmic decision rules to specific observations of a product.”


Generally, we describe testing as a process to explore and discover unexpected behavior, looking for defects and trying to analyze the impact from a user’s perspective. By testing, we attempt to identify any issues that may hinder the user from using the system. We try to discover any issue (recurring or intermittent, replicable or not, etc.) and make intelligent guesses of how the system should work. We investigate and isolate the root cause of the problem to help developers reproduce the defects and to fix them efficiently. Hence, testing can be summarized as, “learning sufficiently everything that matters about how the program works and about how it might not work.”


On the other hand, checking often involves an observation. By checking, we try to confirm if our assumption is true or not. We verify if the system still works after modifying or making some changes. We validate if our observations are accurate with our expectations. Checking usually provides a binary result – true or false, yes or no, pass or fail. With such, we can determine if a function works as we’d expect.


So how do we differentiate these two strategies? To paraphrase James Bach, testing encompasses checking, whereas checking cannot encompass testing. We can perform checking while testing, but not the other way around. Checking is more focused on specific facts and rules, while testing is an open-ended investigation. Another distinction is specifications. Since testers are more exploratory in nature, they tend to look outside the box (unconstrained scenarios) without solely looking on what’s expected. They try to “break the system” and look for unexpected behavior. On the other hand, checking requires specifications in order to validate, verify or confirm claims if a particular feature actually works against requirement descriptions.


Some will say testing is better than checking, while others may disagree. But as a tester myself, I believe that both disciplines have their own strengths and weaknesses. Testing is ideal for discovering issues that may appear before product release, but it consumes a lot of time to hit all those corner case scenarios. Checking is important in verifying all known functions, especially for projects with tight timelines, however some unforeseen bugs may occur once deployed. Therefore, to have an effective, efficient and excellent product, development team should always consider performing these two strategies. Because, as they say, “If you don’t like testing or checking your product, most likely, your customers won’t like to test it either.”


Your Checklist For A Successful Website Launch

Get maximum value from your digital next project by using our ultimate testing checklist full of great tips for testing websites pre and post launch.
  1. All text free from spelling errors
  2. Page and content formatting appropriate on all pages
  3. Placeholder text removed
  4. All pages have content
  5. Privacy Policy included
  6. Print stylesheet exists and tested
  7. Favicon created and displays correctly
  8. Device icons created and display correctly
  9. Footer includes copyright statement
  10. 404 page exists and informative
  11. Correct author is attributed to pages and posts (as required)
  12. Page titles are descriptive and SEO friendly
  13. All page titles are unique
  14. Meta data included and appropriate
  15. H1s used for page titles and only one H1 per page
  16. XML sitemap has been generated and added to root of website
  17. robots.txt is generated and added to root of website
  18. 301 redirects for existing website are prepared and in place
  19. Website can be accessed by search engines (remove noindex, nofollow for pages)
  20. Google Analytics and relevant analytics/tracking tools installed
  21. Open Graph tags included across website and appropriate? (including images where possible)
  22. Social accounts integrated, linking to correct URLs and use API for integrations
  23. HTML has passed validation (or known issues noted)
  24. CSS has passed validation (or known issues noted)
  25. Bonus: CSS tested on CSS Lint (to hurt your feelings)
  26. Site links have been tested and resolve correctly
  27. JavaScript is error free
  28. Website meets appropriate level of WCAG compliance
  29. ARIA Landmark Roles specified
  30. Semantic headings and structure used
  31. Links are clearly recognisable and have :focus state
  32. Images use appropriate ALT text
  33. Alternatives provided for users with Javascript disabled
  34. Forms have logical layout
  35. Associated label for all form controls
  36. Colour contrast tested
  37. Displays & functions correctly in all latest browsers
  38. Displays & functions correctly on mobile devices
  39. Forms have been tested and processed correctly
  40. Required fields have been tested
  41. Review input validation (min/max lengths, character limits)
  42. Forms send to the correct recipient
  43. Forms have confirmation URL or event tracking so submissions can be tracked
  44. Forms process correctly with JavaScript disabled
  45. Website search and search results function correctly
  46. Images have been optimised
  47. CSS is minified and combined
  48. JavaScript is minified and combined (as much as possible)
  49. Enable gzip compression
  50. Ensure only necessary fonts, weights and character sets are installed
  51. Run Google speed test and optimise accordingly (record score and known issues)
  52. Run Web page test and optimise accordingly (record results)
  53. Incorporate CDN / Caching as required
  54. Secure areas are locked down and not accessible by search engines
  55. Default CMS login URL is changed
  56. Default CMS username is changed
  57. SSL Certificate is requested
  58. Ensure site is visible to search engines
  59. SSL certificates successfully installed
  60. Images, media and links reference live URL
  61. Webfonts integrated and working correctly on live site
  62. Webfonts set to production (as required)
  63. 301 redirects are in place and working correctly
  64. Website URL has been submitted to Google
  65. Generate a new sitemap.xml and upload to root
  66. Site added to Google Webmaster tools and sitemap submitted
  67. Analytics has been setup and integrated into website

Discuss Your Project With Us

Get maximum value from your next project by chatting with our team of digital engineers, who have over 20+ experience delivering digital solutions for our clients. We are a team of problem solvers who have lots of learnings that we're always open to share. Need assistance in achieving your project outcomes? Get in contact.




By continuing to use our site, you indicate your acceptance
of our Privacy Policy and Website Access Rules.