Testing? Ain't nobody got time for that!
At Ignation we love innovation. We love to work quickly, in small project teams and with short lines of communication. Testing however, is a step in the development process that needs to be planned and fought for to prevent it from being forgotten. Many small enterprises overlook the importance of testing, even though it can be so simple and effortless!
I would love to take you on a quick trip through the field of (software) testing and show how you can implement some testing tricks that will greatly improve your time-to-market, benefits and project mood.
Oh and if you don't feel like reading, just scroll to the pretty images. They cover the essentials of my story. You're welcome!
Why tell me why!
If you have some experience in software development or IT consulting, you probably heard and read this a million times before: by incorporating testing throughout your development process, you can save money, time and frustration. Sounds like a lot of effort, but it doesn't have to be.
Anyone can test.
And I will teach you in a second, if you are still interested after reading why testing is a good idea (or you can scroll down if you are eager to start).
Money
Money is a very important resource for any company, big or small. By testing in at least 2 phases of your development process, you can decrease your time-to-market and save money on bug fixing.
Unit testing
Unit testing is a dirty word to many developers. No matter what kind of product or system you are developing, just make testing by the developer(s) part of your way of working. In unit testing, the developer writes tests for the smallest parts of his code (units). Thus preventing bits of his/her code from crashing when building a new release.
Functional testing
Functional testing is a great way to assess your software and/or hardware based on functionality. This is where a tester, developer or end user gets to play with the product, and test it against the criteria it was build towards. In other words: before you start developing and building; you, your client or your end user sets out user requirements or criteria that the product or service needs to meet. Make sure that the person who will perform the tests, has a good understanding of these requirements. This does not have to be a trained tester! Anyone with dedication to the project can be a good tester.
Bonus Round
User testing can be performed by the client or an uninformed end user. Let them fool around with the solution you built (or a prototype) and learn from the behaviour they show and from their expectations of the product. Focus here should be on User Acceptance and Usability.
Great, but how does this save me money?
You invest a minimal amount of time in proper requirements, development time and a few hours (or days) in testing. Yes, this will show on your invoice or bill. But imagine what happens when you save money and time on testing:
- Requirements are minimal or absent
- Developer programs code (not unit tests)
- Someone says it looks good (use it a bit)
- Distribute towards client/user
- Bugs come back, are discussed and logged
- Developer fixes bugs, makes a build and deploys again
- Repeat steps 4 to 6 until satisfied
Without some good testing, you can imagine how steps 4 to 6 will become costly very quickly. And who is going to pay for this? Most of the time the (small) enterprise that developed the product carries the risks.
If you add the testing suggestions I made earlier to this process, you create 2 more smaller loops in which incremental improvements and fixes can be done before your code goes through the entire loop towards the client.
A general rule of thumb: the earlier in the process a bug is found, the cheaper the fix.
I don't care, just tell me how and I'll do it!
Okay, by now you may be convinced that testing will help your business to move forward towards a future full of quality and growing revenue. No matter what you develop, I would like to show you how you can start to incorporate testing practices and get underway.
Web development
So you build websites? Whether you use wordpress, clean php, javascript or custom software, please pay attention to these aspects for testing to insure good quality of content and framework:
- Perform frontend / visual checks according to the acceptance criteria/requirements.
- Ask a colleague outside the team to conduct the main user tasks before delivery to the client.
- If you did some custom coding, make sure that the developer tests the built functionality using a basic checklist.
Keep in mind: cross-browser compatibility, responsive designed interfaces and user friendliness for both visitor and administrators.
App development
Since most apps require pretty design, a steady backend and some solid UX, the testing of an app is a bit more intensive than that of your average website. So pay attention to:
- Unit testing on the backend for a good code base.
- If functionality in the backend is complex, you want to consult someone with testing experience to formulate clever test scenarios for a good testing coverage.
- If functionality in the backend is of low complexity, you may describe some test scenarios yourself to make sure you test all the happy-flows [the way to use a function step by step, exactly as intended by the creator] and error-flows [ways a function behaves if "unexpected" behaviour is shown by the user or if the product ought to give an error. Also known as 'alternate flows'].
- Perform visual checks on the user interfaces.
- Test compatibility on the desired devices (tablets, phones, desktops).
- When working on products with a maintenance contract or longterm development projects, consult an expert on CI-CD development and testing (Continuous Integration | Continuous Development).
IoT development
We all love some good innovation by coupling hardware to an app. So basically follow the ingredients for app testing, but add a bit of this:
- Did you use existing hardware? Confirm with the supplier that it has been thoroughly tested for the intended use and focus on your unique use of said hardware.
- You're awesome and developed your own hardware alongside the software?! Incredible! Get ready to consult a trained high-tech tester because sh*t just got real. You want to focus on interfaces between user and hardware, between hardware and software and between software and user.
Product development
Maybe you are not that digital, or don't care much for IT. No worries, testing is always useful. Here are some good ideas:
- Do user testing to get to know your users and their behaviour towards the situation and your solution.
- Still work with user requirements and acceptance criteria to validate the product you developed.
- Make sure that everyone involved in the development and building process works with the requirements and quality in mind.
Or just follow my easy to use flowchart (because everyone loves a chart with pretty colours):
So I can't go wrong? Wrong!
You may have noticed that I advise to consult a test expert on more complex matters. I do this because testing can be done by anyone, but devising a test strategy or efficient test scenarios is a profession. There are many professionals out there who can help you on your way or you can dive into the subject yourself and follow a TMap NEXT course to master the methods and terminology.
Be the master of your own quality
No matter what you decide, test and quality awareness make a great difference. So keep in mind:
- Testing is a team effort, everyone is responsible.
- Your tests are only as good as your requirements.
- Sell testing as part of your process and charge the extra hours (and quality).
- Consult an expert if the project increases in complexity.
As a designer and test consultant for a small enterprise with projects of different natures I enjoy a good challenge. So feel free to contact me if I raised questions or if you would like to learn more. At Ignation we love to listen to you and help you reach quality through innovation and innovation through quality.