Developing custom applications makes up a lot of our work - and to ensure the applications are customised to solve the individual needs of the business they are serving, testing is key.
Testing is one of the most important steps in the development process - our expert methods provide an additional layer of security, ultimately improving the quality of the application to reduce bugs and make them run seamlessly. Our testing also frees up our client’s internal IT teams from having to run these processes themselves.
In terms of the depth of testing, some projects require rigorous testing by our team before the solution is released to the User Acceptance Environment, while others only need a lighter test cycle. Some clients have their own testing teams to carry out some of this process, which also influences how deep we go. Each customer has their preferred level of testing requirements and we can adapt to suit.
Because there is a huge range and depth of testing options available, some businesses can find themselves paying as much for the testing process as the development. It’s important to have the right software partner to guide you through the process and protect you from these pitfalls and know when to draw the line.
We will take you through four of the testing techniques Sandfield uses most often, to ensure applications perform as they should, including some of our favourite testing tools and the best types of projects to use them in.
Our business is knowing your business
Before our solution developers get to testing, we get under the hood of the businesses we deal with to see what makes them tick. What are your business needs when it comes to performance and how well do your applications perform? Where exactly are the problems and how can we address them?
Our custom solutions mean we’re not selling a package - every solution is not the same. We understand the business problem or opportunity before pre-empting the solution. By collaborating with various leaders in the team we’re able to design a solution based on existing frameworks - our own, Microsoft, or others - by customising or integrating with other systems, on premise or cloud, or through something completely original. The custom nature of our solutions, means our testing can be rigorous if it needs to be and lighter if it doesn’t.
It’s important to note that because of our custom approach, we don’t use all four of the below testing methods in every project - as they don’t always fit best with each project’s requirements and goals. We adapt our testing to meet clients’ exact requirements and drive their business innovation.
1. Unit testing - every little bit matters.
Unit testing is a technique used in development to test each of the individual parts of the applications to ensure each piece of functionality does what it should.
This type of testing can be a very effective technique in the development cycle. It is best applied where projects can be broken up into small blocks with set outcomes.
Unit testing allows developers to find problems faster and earlier in the development life cycle. It allows us to test common repetitive tasks quickly. Unit testing is usually used to test the backend parts of the the application that are not visible to end users.
While it is a very effective testing technique, it also has high overheads to maintain in dynamic projects. Each project is evaluated for the best testing techniques, and unit testing is considered if the benefits outweigh the time spent writing and maintaining tests.
2. Automated testing - letting the technology do the hard work.
Automated testing, similarly to unit testing, is usually designed to test small blocks of a bigger project. Unlike unit testing, automated testing generally tests the actual application, e.g. browsing the actual website, rendering the results and checking for specific phrases or outcomes.
Using automated testing, we can test applications as an end user to ensure the application behaves as expected.
There are various automated tools on the market and our tool of choice is currently Selenium. We build custom frameworks using the Selenium WebDriver. This enables us to create a tailored solution for our clients, testing their unique sites across multiple browsers.
3. Load Testing - need for speed.
The above methods of testing have focused on projects where we test individual blocks of code, and also checking that parts of an application do what they should. So how do we test the application’s overall performance?
When we need to check if the application performs as intended, we perform load testing on the application. Load testing will test various measures, below are some of the more important questions we work through during this process:
- Can the application handle multiple connections? How many?
- Can the application scale? How much?
- What hardware do we need?
- What are the limits before the application fails?
- How responsive is the application under various loads?
- How can we optimise the application to run faster and better?
We currently use Gatling.io as our tool to load test our applications. Gatling enables flexibility to scale tests as well as the ability to create a tailored solution that meets the unique needs of the application we need to test.
4. User Acceptance Testing - for humans, not robots.
The previous testing techniques involved tools and automation to do the work. While this is efficient, each user interacts differently, meaning systems are often not used in the exact same way in which they were built for. The human factor in testing is very important in providing a robust solution.
User Acceptance Testing (UAT) is a critical step in testing.
UAT is a phase in the lifecycle when development has been completed. The application is then tested by a person using it exactly as it is intended, to ensure changes meet requirements. Any development issues are logged with the development team, these issues are then updated and re-deployed to the UAT environment. The testing and development teams usually work closely together during the UAT process to ensure that issues are prioritised and updated in the right way.
While the four above testing methods are some of our more frequently used approaches, and are excellent quality control methods, they aren’t used blindly for every application we develop - there are other many other testing types available too.
Each client and project is unique. We adapt our testing to meet clients’ exact requirements to drive their business innovation. We can work with you to determine what type of testing methods are required to ensure that your application provides a competitive edge.
We make it our business to know your business, building the best tools to carry out daily tasks and solve problems.
The depth of testing needed will often range - some projects require rigorous testing by our team before the solution is released to the UAT environment, while others only need a lighter test cycle. Every customer has their preferred level of testing requirements and we can adapt to suit.
From a client’s perspective, we recommend making sure your software partner is carrying out appropriate testing to ensure that when your application is ready for deployment, it is the highest quality possible to ensure a successful return for your business. Outsourcing the testing to a trusted software partner frees up your internal IT team to focus their energies on tasks that better demand their time.