The last thing you need is to have your website break in the first few hours of high-profile launch. Your customers are relying on you to make their experience using your website a memorable one — one they won’t forget, one that keeps them coming back for more. But if the website breaks, they will remember only the failure and likely won’t be using your website again. How can you avoid this? Test your website thoroughly so your customers don’t break it for you.
Step 1: Create the Test Plan
Begin with a test plan that covers the basic test coverage areas of requirements testing, unit testing, functional testing, system testing, user testing, security testing and performance testing. These test types may be called different things by different IT departments but the end result is that should you have end-to-end coverage that is both measurable and repeatable in the event you have several test cycles.
Step 2: Choose a Testing Tool
The testing tool you choose will have a big impact on how you test your website. Depending on the size and scale of your website, you should carefully consider a tool that will grow with the complexity of your website ecology. The goal is to have total test coverage that doesn’t hinder the pace of development but also is formal enough to integrate into development tools and workflow, i.e. bug fixes and reporting.
There are numerous test automation tools, both open source and commercial. Arguments for each abound but the bottom line is that you should choose a testing tool that fits into your IT website development tool’s long range strategy as well as the skill level of the testers.
Step 3: Test Early, Test Often
A website is tested much differently than a desktop application. A typical desktop application will have a predictable level of usage such as fat client like Microsoft Outlook in a corporate setting. A website is quite the opposite with sporadic usage with occasional spikes in traffic. This is where the architecture and design must be validated to determine if it can scale to meet demand.
Prototyping, unit and performance testing part of the website that will see the most use will provide early indications of scalability and thus the ability to re-design if performance standards fail to be met. Better to find out during the foundational design rather than at launch.
Step 4: Bake in Quality Testing
Often, quality testing is the first thing to get whacked from a project in order to save time yet there always seems to be time after launch to fix your broken website. Why not just bake in the needed time to QA test at the beginning of the project?
During this step, begin building reusable scripts with your testing tools that help you test components and modules in a repeatable way. Record quality metrics such as input validation requirements, error messages, input field order, workflow ordering, etc. This will help you build up a test suite so as the website becomes more complete, you can easily test new functions along with finished ones to see how they work together.
Step 5: Help Your Users During Functional Testing
Many websites are functionally tested by simply handing the website over to a group of users who are asked to “just do a run through and see how it works.” Save that for user acceptance testing. It is not enough to toss the app “over the fence” and see what gets tossed back.
Functional testing ensures that every functional requirement is tested according to specification, both independently and as a collection in the case of a workflow. You can dramatically improve the quality of your website by taking an active role in functional testing. As a web developer, you know best how a function was implemented. Work with your users to ensure it’s what they are expecting and solicit feedback.
Step 5: Conduct a System Test
Once the website is far enough along that all the major components have been through a functional and quality test, it’s time for a system test, which often includes a performance test. Why? Because not only are you testing to ensure each component in the website infrastructure is working in unison properly, but also to determine how the website will behave under various conditions, such as spikes in usage.
This is where your testing tools will help you tremendously. Create scripts that will run your website through all sorts of usage scenarios, from random usage to highly concurrent users working the most often used parts of the website. Measure and record baselines so you have a benchmark for follow-on testing and tuning.
Step 6: Conduct a Security Test
This step is often skipped because there is reliance on the website developer to provide security measures in their code. But that is only half of the picture. While in-code measures are implemented, unforeseen vulnerabilities can only be uncovered through penetration testing, a test that attempts to discover vulnerable parts of the website and then exploit them, rendering the website unusable or to expose data.
If your website collects or processes sensitive information, you cannot skip this step. Your customers rely on you to secure their personal information. Grave consequences are a given if there is a breach because of a website security hole. Perform the test in an environment as close to the production configuration as possible. This means firewalls, HTTPS certificates, user permissions, etc.
Step 7: Perform a Production Validation Test
This step is where your users can help greatly. After the website is launched, solicit feedback from your users. Offer them some gizmo or gadget for their time. Also monitor the website continuously for the first 30 days of usage so you can baseline usage for later tuning.
While these steps are not a one-size-fits-all for every website you build, it does represent a typical approach taken for testing medium to large scale websites where quality and performance are woven into the fabric of the software development process. If you only use just a fraction of what is outlined here, you will be much further along than most. And you will have fewer customers complaining about a broken website.