In a microservices architecture, the number of server to server connections increases dramatically compared to alternative setups. Interactions which would traditionally have been an in-memory process in one application now often rely on remote calls to other REST based services over HTTP, meaning it is more important than ever to ensure these remote calls are both fast and efficient. Let’s look at the lifecycle of an HTTP connection and how Connection Pooling can help!
JMeter 2 Way SSL (Client Certificate Authentication)
The Problem
Client Certificate Authentication is a method of authenticating with the target server using certificates. If you are using 2 way SSL on your target server you may see errors such as the following if you do not have JMeter configured to use client certificates.
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
The Fix
Managing Dependencies in a Ruby based automated test suite
The Problem
You may be just starting out with test automation, or you may have been a single engineer responsible for building, maintaining and running the suite. Suddenly there is a new QA in the team or other team members want to run the test to ensure they aren’t breaking anything. Immediately they are in dependency hell and you run a few “gem install” commands until everything seems OK, however there is some weird issue that you finally track down to being a different version of cucumber.
Surely this can’t go on…
BDD is more than writing “Given When Thens”
What is BDD?
I often hear of teams saying they practice ‘BDD’ and prove it to me by waving Given When Thens in my face, let’s check the definition of what BDD actually is:
Behavior Driven Development is a process designed to aid the management and the delivery of software development projects by improving communication between engineers and business professionals
I ask them how many “Business Professionals” have even seen their feature files, 9 times out of 10 the answer is “none”. Too often the testing/QA team use feature files as a shield in front of the automated test code lurking beneath and no other real benefit. Another misuse is hiding them away in stories during refinement and no one ever looking at them again, including the developers.
Test Coverage Metrics can be Misleading
Test Coverage metrics are useful for determining parts of your codebase that are not unit tested. They are also dangerous if used in the wrong way.
I have heard people say 100% test coverage is a necessity. 100% test coverage does not guarantee that all code functionality is tested.
Amazon API Gateway Testing through JMeter Fix
When calling the Amazon API Gateway, the client needs to support Server Name Indication. Here’s how to get it working through Apache JMeter. I am using JMeter version 2.13.
Test Data Management: A Better Way
You’ve seen it before. Large, unwieldy spreadsheets with an arbitrary user ID in the leftmost column. Will the data related to those scenarios still be intact across the 15 interrelated in-house systems and third party stubs next week? Tomorrow even? Maybe.
Test data ‘managed’ in this fashion quickly becomes outdated. Perhaps there are multiple teams working with the same testing environments. What if someone in Team A doesn’t know someone in Team B was using USER_ID 00000097 and changes it? What if someone accidentally wipes the database? All manual testing and reliant automated tests come to a standstill.
There is surely a better way.