Sunday, October 25, 2015

Where Do We Go From Here?

Soundtrack
Image "Which Way Now?" by Nick Page CC 2.0 Attribution

In my last post a talked about the changing nature of the QA department in the face of the upswing of Agile / DevOps in software development. So that inevitably leads to the question "Where do us testers and QA folk go when the separate Testing/QA Department goes away?"

The good news is that the characteristics that make up a good tester - curiosity, desire to check assumptions, empathy for the end user, a knack for breaking things and passion to make software and processes suck less - are valuable beyond the scenario where software is hurled over a wall at testers. Just because a department called "QA" doesn't exist doesn't mean that testing isn't happening. In fact "testing" or "QA specialists" can leverage their expertise to greater effect outside a dedicated QA department.

Automation / Test Infrastructure

The "A" in CAMS stands for automation and a mature DevOps release pipeline relies on robust and efficient test automation. As part of an Agile development team a person with coding skills specializing in testing is valuable asset. They can assist in developing unit tests as well as creating and maintaining test frameworks for use with continuous integration to help find errors earlier. They can also help determine if the team has clear and testable stories and proper acceptance criteria for features (that will be automated). Finally they can help the team keep in mind quality aspects as part of the "Definition of Done" for an iteration.

Specialize

Another option is to specialize the type of testing by developing deep knowledge. Both security and performance testing remain important for deploying applications at scale in the cloud. Knowledge of how to do various types of stress and load tests and benchmarking can give the business the certainty that their application will scale when it counts. Skilled penetration testing can give the business the confidence that customer data will be secure when the application is deployed to the public. 

Test Infrastructure

The implication of "Infrastructure as code" is that code still needs to be tested, so there will be a need for people with code testing skills to test the infrastructure and deployment automation frameworks. QA folk with operations skills or experience would be a valuable addition to teams tasked with maintaining infrastructure.

Manage the Process

An efficient continous delivery / deployment pipeline relies on a mature and efficient software engineering process. This process is continually improved via fast feedback loops. Process minded QA folk can help "test" this process as an Agile project manager or Scrum master, helping ensure the teams are performing as efficiently as possible. Engineering process design as a program manager is also a possible option for the process minded.


Help Others

Specific companies will have differing needs depending on their own particular business and place on their journey into DevOps. A smart QA engineer should always have something to contribute - even if QA or test is not in the job title.