Martin Fowler describes how infrastructure automation is a key enabler of microservices:
“Many of the products or systems being build with microservices are being built by teams with extensive experience of Continuous Delivery and it’s precursor, Continuous Integration. Teams building software this way make extensive use of infrastructure automation techniques. This is illustrated in the build pipeline shown below.”| By Tim Hinds | Article Rating: |
|
| October 22, 2015 03:00 AM EDT | Reads: |
175 |
What Does Test-Driven Development Mean for Performance Testers?
"Begin with the end in mind."
You must have heard that phrase, right? It's a common one that's led many people to great success, not just in agile, but all throughout history. In fact, it's habit #2 in Stephen Covey's best-selling book The 7 Habits of Highly Effective People.
Starting with the end in mind is what Olympic athletes do when they visualize their gold medals. Musicians do it when they envision their perfect performance before stepping on stage. Architects have a full picture of the completed skyscraper in their head before ground is broken. If you know what you are aiming for, in detail, you'll find it much easier to achieve.
That's exactly the philosophy behind Test-Driven Development, or TDD. Before you start coding business logic, you write a test. It's almost like a detailed specification for the module you are creating, except it's produced as a set of functions and gates that the module will have to pass through to confirm it is working as expected. When you initially run the test, it'll naturally fail because your code doesn't yet do anything. However, once the test passes, you know you've built what you needed to build.

TDD is there to make sure you don't overbuild. You control costs, you increase efficiency, and you build quality into the product from the beginning. You only create what's needed to pass the test - no more, no less. You eliminate all that wasteful junk that ends up never getting used (or at least a lot of it). For most people, TDD is a great way to ensure that your app delivers on the functionality it needs to.
Can TDD Apply To Performance?
Test-Driven Development is a great tool for functional testing, but can you apply the same technique to performance testing?
Why not?
The purpose of TDD is to build out small unit tests, or scenarios, under which you control your initial coding. Your tests will fail the first time you run them because you haven't actually developed any code. But once you do start coding, you'll end up with just enough code to pass the test.
There's no reason the same philosophy can't be applied to performance testing. You can develop performance tests that stress algorithms and exercise code at the unit-level, just like functional tests do. Unit performance tests give you a baseline confidence in your core algorithms. They force developers to think about how their code behaves under stress at the time that code is being written.
Just like with functional testing, TDD helps to eliminate big, systemic problems that may appear later on. The process just requires the forethought involved in careful scenario planning.
Performance TDD Is a Good Start, But It's Not Everything
Let's face it: even if your app passed all its TDD-based unit tests for functional testing, you still wouldn't feel confident that it was flawless. No matter what you were doing for TDD, you'd still create larger functional tests, integration tests, end-user tests, and a whole host of other tests. You'd have a suite of different functional test methods you'd bring to bear to make sure your app was ready for users to attack it.
The same thing is true for load & performance testing. Just because you incorporate Performance Test-Driven Development, doesn't mean all your performance issues are solved. You'll still need to coordinate your large, integrated load tests to push your algorithms to their breaking points.
But with Performance TDD, you'll have much more confidence in your product's ability to pass those tests at the get-go.
Some Tricks for Performance TDD
If you want to incorporate Performance TDD into your development process, here are a few tips that may come in handy:
- Create small-batch load tests that can stress small components. As you start planning your module, think about how that module would be stressed. What algorithms are most likely to limit scalability? Is there an opportunity for resource contention? Do you have queries that could impact performance if they get too large or complicated? Then create your test scenarios specifically to stress the component in these ways. As you and your team work through more and more of the product, you'll end up building an amazing library of load test scenarios that you can leverage in lots of interesting ways moving forward.
- Don't apply TDD to optimizations, instead just use it for base-level performance. The job of a performance engineer is often focused on optimizing code that's already been written by someone. TDD isn't really going to be much help here. Remember, TDD is best leveraged at the beginning of the code-writing process. So that's where you should start. As your product matures, it's completely appropriate to make your load tests incrementally more demanding (a certain function must return in 2 seconds instead of 4 seconds), but that may not always be the ideal place to focus because scaling problems are often driven by more complex interactions that are best suited for different kinds of test methodologies.
- Automate. TDD and automation go hand-in-hand, and you should approach it that way from the beginning. Think about how to automate your TDD from the moment you start doing it, like any modern development method. By doing this, you'll be able to easily plug your performance testing into other automated processes like continuous integration, but you'll also end up with a number of micro-load test scenarios that can be strung together into a larger automated test scenario. This gives you a ton of leverage.
Conclusion
As we've said before, the more you can plug performance testing into your standard development process, the more effective you'll be as a team, and the more successful your application will become. If your team operates using Functional TDD, you'll definitely find value enhancing that practice with Performance TDD.
Photo Credit: Andrew Hurley
Published October 22, 2015 Reads 175
Copyright © 2015 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Tim Hinds
Tim Hinds is the Product Marketing Manager for NeoLoad at Neotys. He has a background in Agile software development, Scrum, Kanban, Continuous Integration, Continuous Delivery, and Continuous Testing practices.
Previously, Tim was Product Marketing Manager at AccuRev, a company acquired by Micro Focus, where he worked with software configuration management, issue tracking, Agile project management, continuous integration, workflow automation, and distributed version control systems.
Martin Fowler describes how infrastructure automation is a key enabler of microservices:
“Many of the products or systems being build with microservices are being built by teams with extensive experience of Continuous Delivery and it’s precursor, Continuous Integration. Teams building software this way make extensive use of infrastructure automation techniques. This is illustrated in the build pipeline shown below.”Oct. 22, 2015 08:00 AM EDT |
By Elizabeth White SYS-CON Events announced today that Colovore, the Bay Area’s leading provider of scalable, high-density colocation solutions, will exhibit at the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA.
With power densities of 20 kW per rack and a pay-by-the-kW pricing model, Colovore is Silicon Valley’s premier provider of flexible, high-density colocation solutions. Our 9 MW facility has the power and cooling your se...Oct. 22, 2015 08:00 AM EDT Reads: 181 |
By AppDynamics Blog This article series has covered a lot of ground: it presented an overview of application performance management (APM), it identified the challenges in implementing an APM strategy, it proposed a top-5 list of important metrics to measure to assess the health of an enterprise PHP application, and it presented AppDynamics’ approach to building an APM solution. In this final installment this article provides some tips-and-tricks to help you implement an optimal APM strategy. Specifically, this arti...Oct. 22, 2015 08:00 AM EDT Reads: 383 |
By Carmen Gonzalez Oct. 22, 2015 07:15 AM EDT Reads: 532 |
By Carmen Gonzalez Oct. 22, 2015 07:15 AM EDT Reads: 102 |
By AppDynamics Blog To let other TypeScript libraries use your library, you need to create a .d.ts file to declare all your public APIs of your library with the typing information. The enforce to clearly list all your public APIs for each libraries you are developing. We found it serves as a quick and accurate reference for all your APIs.
Refer to https://github.com/borisyankov/DefinitelyTyped for TypeScript definition files created for large amounts of JavaScript libraries.Oct. 22, 2015 06:45 AM EDT Reads: 228 |
By Pat Romanski DevOps Summit, taking place at the Santa Clara Convention Center in Santa Clara, CA, and Javits Center in New York City, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait...Oct. 22, 2015 06:45 AM EDT Reads: 474 |
By Samuel Scott DevOps has traditionally played important roles in development and IT operations, but the practice is quickly becoming core to other business functions such as customer success, business intelligence, and marketing analytics.
Modern marketers today are driven by data and rely on many different analytics tools. They need DevOps engineers in general and server log data specifically to do their jobs well. Here’s why: Server log files contain the only data that is completely full and accurate in th...Oct. 22, 2015 06:00 AM EDT Reads: 942 |
By Jnan Dash Yesterday, Dell announced the largest technology M&A; in history with a proposed$67B buyout of EMC and VMware (via EMC’s 80% ownership of VMW). The combined company will have over $80B in revenue, employ tens of thousands of people around the world and sell everything from PCs, servers & storage to security software and virtualization software. Not to be overlooked is the fact that Dell and EMC will be private companies and free from the scrutiny of activist investors.Oct. 22, 2015 06:00 AM EDT Reads: 418 |
By Liz McMillan Developing software for the Internet of Things (IoT) comes with its own set of challenges. Security, privacy, and unified standards are a few key issues. In addition, each IoT product is comprised of (at least) three separate application components: the software embedded in the device, the back-end service, and the mobile application for the end user’s controls. Each component is developed by a different team, using different technologies and practices, and deployed to a different stack/target –...Oct. 22, 2015 06:00 AM EDT Reads: 302 |
By Lori MacVittie Still here? Okay then, let me explain further. This whole thing started because I was reading the Internet the other day and happened upon a claim that stated: “the attack surface for cloud applications is dramatically different than for highly controlled data centers”.
And that made me frustrated because it isn’t true at all.Oct. 22, 2015 06:00 AM EDT Reads: 279 |
By Elizabeth White Any Ops team trying to support a company in today’s cloud-connected world knows that a new way of thinking is required – one just as dramatic than the shift from Ops to DevOps. The diversity of modern operations requires teams to focus their impact on breadth vs. depth.
In his session at DevOps Summit, Adam Serediuk, Director of Operations at xMatters, Inc., will discuss the strategic requirements of evolving from Ops to DevOps, and why modern Operations has begun leveraging the “NoOps” approa...Oct. 22, 2015 06:00 AM EDT Reads: 936 |
By Pat Romanski Father business cycles and digital consumers are forcing enterprises to respond faster to customer needs and competitive demands. Successful integration of DevOps and Agile development will be key for business success in today’s digital economy.
In his session at DevOps Summit, Pradeep Prabhu, Co-Founder & CEO of Cloudmunch, he will cover the critical practices that enterprises should consider to seamlessly integrate Agile and DevOps processes, barriers to implementing this in the enterprise, ...Oct. 22, 2015 05:00 AM EDT Reads: 148 |
By Tim Hinds At some point you’ve probably heard the term “test early and often.” If you are in an Agile organization, that term perfectly captures the philosophy of iterative development and the commitment to rooting out defects sooner rather than later. It's nice - maybe even ironic - that a phrase which had such unscrupulous origins is now a hallmark characteristic of a process that exemplifies teamwork and quality. It's in that modern spirit that we wanted to share these 10 strategies to help you test ea...Oct. 22, 2015 04:30 AM EDT Reads: 362 |
By Joel York Agile software development and agile marketing have followed similar, but unique paths. Buggy software, product delays and death marches were the norm in the 90s. A groundswell formed around the idea of taking the agile principles that had been so successful in manufacturing and applying them to software. Oct. 22, 2015 04:15 AM EDT Reads: 411 |
By Pat Romanski In a recent research, Analyst firm IDC found that the average cost of a critical application failure is $500,000 to $1 million per hour and the average total cost of unplanned application downtime is $1.25 billion to $2.5 billion per year for Fortune 1000 companies. In addition to the findings on the cost of the downtime, the research also highlighted best practices for development, testing, application support, infrastructure, and operations teams.Oct. 22, 2015 04:00 AM EDT Reads: 137 |
By Jason Bloomberg Microservices architecture compartmentalize the application by function allowing for greater application flexibility, portability and an increase in update/changes. This architecture introduces new layer of monitoring challenges to an already complex application environment. The strides and enhancements we made in CA APM 10 with APM Team Center Perspectives, Timeline views and Differential Analysis has helped us to make strides in solving these challenges of monitoring microservices that includ...Oct. 22, 2015 04:00 AM EDT Reads: 300 |
By Mike Kavis Containers are a hot topic these days. I have run a few workshops with clients, and one of the questions I get asked most frequently is “what are companies using containers for?”
After answering this question a number of times, I thought I would share some common use cases with my readers.
Check out my latest post at the Virtualization Practice where I highlight 3 common use cases.Oct. 22, 2015 04:00 AM EDT Reads: 274 |
By Andy Thurai As with most modernized economies, the United States economy utilizes capitalist principles. It is only fitting that we invented a technological solution that will help companies engage in c-api-talism using APIs in a more efficient manner.
If we look back into the history of mankind, we progressed towards more civilized, mature, monetary-based economies on a steady basis. The progression from the Stone Age, to the Bronze Age, to the Iron Age, to the Industrial Age and to the current Digital ...Oct. 22, 2015 04:00 AM EDT Reads: 316 |
By XebiaLabs Blog Look at production incident numbers, most organizations have sufficient data on that and sufficient problems to solve. It ends up being really compelling. Once you show the numbers, generally management just says do it, if that solves the problem just do it. Though you might have to prove that the approach you’re proposing, in other words putting the environments under better control and getting better control on the application releases. You can do that through proof of concept, but I would say...Oct. 22, 2015 03:00 AM EDT Reads: 313 |

SYS-CON Events announced today that Colovore, the Bay Area’s leading provider of scalable, high-density colocation solutions, will exhibit at the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA.
With power densities of 20 kW per rack and a pay-by-the-kW pricing model, Colovore is Silicon Valley’s premier provider of flexible, high-density colocation solutions. Our 9 MW facility has the power and cooling your se...
This article series has covered a lot of ground: it presented an overview of application performance management (APM), it identified the challenges in implementing an APM strategy, it proposed a top-5 list of important metrics to measure to assess the health of an enterprise PHP application, and it presented AppDynamics’ approach to building an APM solution. In this final installment this article provides some tips-and-tricks to help you implement an optimal APM strategy. Specifically, this arti...
To let other TypeScript libraries use your library, you need to create a .d.ts file to declare all your public APIs of your library with the typing information. The enforce to clearly list all your public APIs for each libraries you are developing. We found it serves as a quick and accurate reference for all your APIs.
Refer to https://github.com/borisyankov/DefinitelyTyped for TypeScript definition files created for large amounts of JavaScript libraries.
DevOps Summit, taking place at the Santa Clara Convention Center in Santa Clara, CA, and Javits Center in New York City, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait...
DevOps has traditionally played important roles in development and IT operations, but the practice is quickly becoming core to other business functions such as customer success, business intelligence, and marketing analytics.
Modern marketers today are driven by data and rely on many different analytics tools. They need DevOps engineers in general and server log data specifically to do their jobs well. Here’s why: Server log files contain the only data that is completely full and accurate in th...
Yesterday, Dell announced the largest technology M&A; in history with a proposed$67B buyout of EMC and VMware (via EMC’s 80% ownership of VMW). The combined company will have over $80B in revenue, employ tens of thousands of people around the world and sell everything from PCs, servers & storage to security software and virtualization software. Not to be overlooked is the fact that Dell and EMC will be private companies and free from the scrutiny of activist investors.
Developing software for the Internet of Things (IoT) comes with its own set of challenges. Security, privacy, and unified standards are a few key issues. In addition, each IoT product is comprised of (at least) three separate application components: the software embedded in the device, the back-end service, and the mobile application for the end user’s controls. Each component is developed by a different team, using different technologies and practices, and deployed to a different stack/target –...
Still here? Okay then, let me explain further. This whole thing started because I was reading the Internet the other day and happened upon a claim that stated: “the attack surface for cloud applications is dramatically different than for highly controlled data centers”.
And that made me frustrated because it isn’t true at all.
Any Ops team trying to support a company in today’s cloud-connected world knows that a new way of thinking is required – one just as dramatic than the shift from Ops to DevOps. The diversity of modern operations requires teams to focus their impact on breadth vs. depth.
In his session at DevOps Summit, Adam Serediuk, Director of Operations at xMatters, Inc., will discuss the strategic requirements of evolving from Ops to DevOps, and why modern Operations has begun leveraging the “NoOps” approa...
Father business cycles and digital consumers are forcing enterprises to respond faster to customer needs and competitive demands. Successful integration of DevOps and Agile development will be key for business success in today’s digital economy.
In his session at DevOps Summit, Pradeep Prabhu, Co-Founder & CEO of Cloudmunch, he will cover the critical practices that enterprises should consider to seamlessly integrate Agile and DevOps processes, barriers to implementing this in the enterprise, ...
At some point you’ve probably heard the term “test early and often.” If you are in an Agile organization, that term perfectly captures the philosophy of iterative development and the commitment to rooting out defects sooner rather than later. It's nice - maybe even ironic - that a phrase which had such unscrupulous origins is now a hallmark characteristic of a process that exemplifies teamwork and quality. It's in that modern spirit that we wanted to share these 10 strategies to help you test ea...
Agile software development and agile marketing have followed similar, but unique paths. Buggy software, product delays and death marches were the norm in the 90s. A groundswell formed around the idea of taking the agile principles that had been so successful in manufacturing and applying them to software.
In a recent research, Analyst firm IDC found that the average cost of a critical application failure is $500,000 to $1 million per hour and the average total cost of unplanned application downtime is $1.25 billion to $2.5 billion per year for Fortune 1000 companies. In addition to the findings on the cost of the downtime, the research also highlighted best practices for development, testing, application support, infrastructure, and operations teams.
Microservices architecture compartmentalize the application by function allowing for greater application flexibility, portability and an increase in update/changes. This architecture introduces new layer of monitoring challenges to an already complex application environment. The strides and enhancements we made in CA APM 10 with APM Team Center Perspectives, Timeline views and Differential Analysis has helped us to make strides in solving these challenges of monitoring microservices that includ...
Containers are a hot topic these days. I have run a few workshops with clients, and one of the questions I get asked most frequently is “what are companies using containers for?”
After answering this question a number of times, I thought I would share some common use cases with my readers.
Check out my latest post at the Virtualization Practice where I highlight 3 common use cases.
As with most modernized economies, the United States economy utilizes capitalist principles. It is only fitting that we invented a technological solution that will help companies engage in c-api-talism using APIs in a more efficient manner.
If we look back into the history of mankind, we progressed towards more civilized, mature, monetary-based economies on a steady basis. The progression from the Stone Age, to the Bronze Age, to the Iron Age, to the Industrial Age and to the current Digital ...
Look at production incident numbers, most organizations have sufficient data on that and sufficient problems to solve. It ends up being really compelling. Once you show the numbers, generally management just says do it, if that solves the problem just do it. Though you might have to prove that the approach you’re proposing, in other words putting the environments under better control and getting better control on the application releases. You can do that through proof of concept, but I would say...
Test-Driven Development is a great tool for functional testing, but can you apply the same technique to performance testing? Why not? The purpose of TDD is to build out small unit tests, or scenarios, under which you control your initial coding. Your tests will fail the first time you run them because you haven’t actually developed any code. But once you do start coding, you’ll end up with just enough code to pass the test. There’s no reason the same philosophy can’t be applied to performance testing.
Your Node.js application may be utilizing a backend database, a caching layer, or possibly even a queue server as it offloads CPU intensive tasks onto worker servers to process in the background. Whatever the backend your Node.js application interfaces with, the latency to these backend services can potentially affect the performance of your Node.js application performance, even if you’re interfacing with them asynchronously. The various types of exit calls may include:
Node.js has been in the industry a long time and yet the conversations about it never seem to slow down. So what’s all the fuss about? What makes Node.js different from other programming languages and environments out there?
Take a look at the infographic below and discover what!
BTW: You should know that Monitis has Node.js monitoring in its suite of application monitoring services. So if you’re building innovative mobile and web applications in the Node.js platform, you’ll certainly appreciate the awesome features pack to monitor the health status of your Node.js server and make sure t...



























