How to build a high quality Website or App

Published by Ross MacKenzie | 16 Mar 2021

Categories

Developing a website isn't overly complex. With easy to use CMS's, and low cost web agencies, what makes a high quality website and why are they expensive?

We believe the answer is the software development practice of testing. Especially automated testing.

Every website needs to be thoroughly tested after it's development, but manual testing alone won't always catch every bug. At Spinbox we have embraced the idea that getting the computer to do a lot of the lengthy (and perhaps mundane) legwork comes with many benefits.

Key Benefits

  • Reliability: Humans occasionally make mistakes, and a missed test case can result in a critical bug slipping through the net. Automated tests will be executed the same way every time, improving confidence that the desired testing coverage has been achieved every time they are run.
  • Time Saving: Once the automated tests are in place, they can be run at the click of a button (or even run automatically after every build and deployment). Much more time-efficient than having to carefully follow each step in a manual test plan.
  • Catch obscure bugs: Manual testing will likely cover the most common user journeys and use cases, but edge-case scenarios which require a specific set of steps to reproduce are more likely to be caught by automated tests.
  • Identify problems early: Any change made which inadvertently breaks an existing behavior of the application can be caught early, in some cases seconds after the developer has made the change, thus preventing a breaking change ever making it as far as a test environment.
  • Documentation: Well written automated tests can also serve to document the intentions and expected behavior of the implementation. Unlike traditional documentation which has a tendency to become out-of-date very quickly, an automated test will be kept in sync with the code it is testing by it's very nature.
  • Extensive browsers and clients: Selenium tests run on BrowserStack have the luxury of being run on many different clients and browsers, therefore detecting problems that manifest themselves on obscure browser differences. Testing on such a plethora of clients would be difficult with manual testing.

Types of automated testing


Unit Testing

This is the most granular level of automated testing which tests individual units (or "classes") of code. These types of tests will normally be run on the developers machine immediately after a change is made, as well as part of a build & release pipeline.

This type of testing is good for testing middle tier code (business/application logic), but not so much for testing of the UI or low-level data-access code.

API Testing

These test the data endpoints that a website exposes to another application or system. Postman is a tool commonly used for this purpose.

Selenium testing

This type of testing is excellent for testing that the UI elements of a website meet the expected look, and perform the expected behavior. These can be run on a multitude of different operating systems and browsers.

Drawbacks

Although there are many benefits of automated testing, unfortunately it isn't a sliver bullet and a level of manual testing is still necessary to compliment the automated tests.

  • It is time consuming to initially develop the tests, and require a development skill set.
  • Some actions taken by a real user might be missed with an automated test.

Conclusion

Whilst there is an initial time overhead with developing an automated test, this is outweighed by the cost saving in the long term by quicker retesting after future enhancements are made, and catching obscure bugs before they make it into production, improving the confidence that users have in the application.