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.
- All text free from spelling errors
- Page and content formatting appropriate on all pages
- Placeholder text removed
- All pages have content
- Privacy Policy included
- Print stylesheet exists and tested
- Favicon created and displays correctly
- Device icons created and display correctly
- Footer includes copyright statement
- 404 page exists and informative
- Correct author is attributed to pages and posts (as required)
- Page titles are descriptive and SEO friendly
- All page titles are unique
- Meta data included and appropriate
- H1s used for page titles and only one H1 per page
- XML sitemap has been generated and added to root of website
- robots.txt is generated and added to root of website
- 301 redirects for existing website are prepared and in place
- Website can be accessed by search engines (remove noindex, nofollow for pages)
- Google Analytics and relevant analytics/tracking tools installed
- Open Graph tags included across website and appropriate? (including images where possible)
- Social accounts integrated, linking to correct URLs and use API for integrations
- HTML has passed validation (or known issues noted)
- CSS has passed validation (or known issues noted)
- Bonus: CSS tested on CSS Lint (to hurt your feelings)
- Site links have been tested and resolve correctly
- JavaScript is error free
- Website meets appropriate level of WCAG compliance
- ARIA Landmark Roles specified
- Semantic headings and structure used
- Links are clearly recognisable and have :focus state
- Images use appropriate ALT text
- Alternatives provided for users with Javascript disabled
- Forms have logical layout
- Associated label for all form controls
- Colour contrast tested
- Displays & functions correctly in all latest browsers
- Displays & functions correctly on mobile devices
- Forms have been tested and processed correctly
- Required fields have been tested
- Review input validation (min/max lengths, character limits)
- Forms send to the correct recipient
- Forms have confirmation URL or event tracking so submissions can be tracked
- Forms process correctly with JavaScript disabled
- Website search and search results function correctly
- Images have been optimised
- CSS is minified and combined
- JavaScript is minified and combined (as much as possible)
- Enable gzip compression
- Ensure only necessary fonts, weights and character sets are installed
- Run Google speed test and optimise accordingly (record score and known issues)
- Run Web page test and optimise accordingly (record results)
- Incorporate CDN / Caching as required
- Secure areas are locked down and not accessible by search engines
- Default CMS login URL is changed
- Default CMS username is changed
- SSL Certificate is requested
- Ensure site is visible to search engines
- SSL certificates successfully installed
- Images, media and links reference live URL
- Webfonts integrated and working correctly on live site
- Webfonts set to production (as required)
- 301 redirects are in place and working correctly
- Website URL has been submitted to Google
- Generate a new sitemap.xml and upload to root
- Site added to Google Webmaster tools and sitemap submitted
- 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.