Good application development consists of many different steps, tools and approaches before, during and after you write and push your code – so many that we can’t get into all of them in this post. We want to highlight the three key things we see as most important – and, if your doing all of these today you rock!
Let assume you’ve done all the right things leading up to pushing your code, and your ready to launch that new product, feature or update. It’s time to Test, Stress & Review/Repeat.
Deployment > Functional Testing > Load Testing > Measure & Repeat
Sure, there’s more than just functional testing, such as integration & unit testing, but let’s focus on the one that is responsible for testing web requests and will ultimately impact users first if its not working properly. The first obvious step after you deploy is functional testing, and while not everyone does it, it’s become very easy to implement part of many aplication frameworks and development environments, and has little to no financial cost. It’s first on our list because lets face it, if that pretty signup form you had yesterday no longer works after todays deployment, thats a big deal. If your not making testing part of your development and deployment process today, you should. Not having tests, keeping them up to date and running them in a regular cycle will ultimately catch up with you, making scale next to impossible as your application grows.
Load testing for applications has been around for a long time, and there’s many different options from custom installed systems, to hosted services. Load testing your application should be easy and just as important as functional testing. And, doing it as often as you deploy at a minimum is key to insuring your application can continue to scale and perform as it grows. In the past integrating load testing into the continuous development and deployment process was hard because of a couple reasons – complexity & cost. The good news is that complexity has been greatly reduced with the launch of easy to use cloud-based services (like loader.io) that address different types of load and scale testing. But, the cost aspect can still be a road block for some developers and engineering teams, especially ones just starting out and trying to build and grow a business with little cash. We’ve created loader.io to help ease both of these pain points, ultimately making load testing accessible to anyone that wants to commit to building a better and more scalable application.
Functional testing while important is not the end – while that signup form might still work after your new deployment there could be back end updates/changes that cause it to have degraded performance under load and general user activity. In addition, doing regular load testing helps you measure performance over time.
Measure & Repeat:
Measure your application internally. It’s important to understand where the bottlenecks are within your infrastructure and also the internals of your application. Using application & server performance monitoring services to see what’s happening inside your application and measure its performance along with functional and load testing helps complete the circle.
If your running your load tests, measuring the internals of your application and comparing this with your load testing results can be extremely beneficial. Doing these together allows you to see the effects different load testing scenarios can have on your application, and allows you to identify external and internal bottlenecks as well as make tweaks on the fly. There are many popular application and server performance services, a few to note and ones we like are: New Relic, Scout & Copperegg. If you already use one of these services you can easily compare reports with loader.io, and if you don’t have one we’d suggest you signup and check them out.
Finally, you need to repeat. Continue to write tests, perform functional tests, load test & measure. Identify issues, make improvements, release and do it all over again. You’ll build a better application and ultimately a better, stronger and more scalable service for your users.