6

Before asking the actual question, let me describe the current situation.

The IT department consists of a few Scrum-like teams, with one or two software testers per team. Furthermore there are two overarching roles not bound to a team: the QA team lead, and a test automation expert.

The test automation expert has achieved the following in about 18 months:

  • Create a framework to write API tests
  • Create a framework to write UI tests
  • Create a framework to set up data (using SQL and events) for automated tests
  • Create a tool to collect and store results from all test runs
  • Over 2500 API tests have been written (including by the other testers)
  • Over 120 UI tests have been written

Additional notes:

  • Training of the team members is ongoing (basic coding skills to writing automated tests).
  • Tests are integrated in CI pipelines by the team lead and architectural team.
  • Maintenance of API tests is a responsibility being pushed to the teams.

Considering the above, the current 'test automation' work is now limited to:

  • maintenance of frameworks and tests (but that's decreasing)
  • training/coaching (limited in time of course)
  • writing additional API/UI tests on new features for the teams

The question

Is there a next level of challenges for this role - beyond the frameworks? And beyond simply adding more tests? In what other ways can the role support the QA process?

One idea was exploring AI test automation but that is quite a different beast. Especially because the ROI - for in-house tools - seems hard to defend.

Additional edit

  • The tests are run in pipelines (each team has at least one pipeline, and there are pipelines for consolidated Dev/Release branches). Especially for releases, tests provide a quick feedback and are fairly consistently at about 98,5% passing rate.
  • Test data management: currently, some pipelines deploy to both a "manual testing environment" having a full restored database, and and "automated testing environment" having an empty database. This database is first of all prefilled with fixed core data (specific scripts). Furthermore every test is self-sufficient in that it prepares its own customers, contracts etc.
4
  • 1
    I don't see much details on test data management. This is something very important for any automation effort and tells about the maturity of automation framework and areas of improvement. Could you please provide more details on that? Sep 29, 2018 at 13:42
  • 1
    Also, I have observed in my experience implementing CI pipelines could mean different things to different project teams in terms of maturity. Could you please elaborate on that as well as what's the role of tests in the overall CI pipeline structure? Sep 29, 2018 at 13:46
  • One more thing, its an excellent question :) !!! Sep 29, 2018 at 13:47
  • @V.A. Thanks, added two points at the bottom to clarify your questions. Hope that's sufficient.
    – FDM
    Oct 4, 2018 at 19:36

6 Answers 6

4

What's the overall execution time? How does the feedback loop look like?

Talk On: Accelerate Automation Tests From 3 Hours to 3 Minutes

Can be detailed results provided in a few minutes(or even better in seconds without compromising quality) on the overall health of the build to the relevant stakeholders with relevant metrics?

I would ask myself these questions in a similar situation, as a dramatic decrease in execution time(like from a few minutes to a couple of seconds) may prove to be something 'game-changing' in a fast-paced environment.

This may indirectly increase the release frequency of the SUT and greatly aids to the development team to experiment/change and perform refactoring on a greater scale with the help of this increased feedback loop. Both are highly visible value -addition to the team and the management.

As with any idea, this may or may not be relevant for certain business domains and project teams but definitely an idea worth exploring.

3
  • Thanks, currently our 2500 API tests are running in about 35 minutes. Will certainly have a look at that link!
    – FDM
    Oct 7, 2018 at 17:18
  • You are welcome.I hope you would find the link useful. Oct 17, 2018 at 23:10
  • Due to increased runtimes and complexer tests, reducing runtimes will be a main concern this year for us. Accepted answer as such, seeing the refactoring and impact involved in our case.
    – FDM
    Mar 4, 2019 at 13:12
4

The value of this role will depend a lot on how complex or unusual your product is.

If your product is reasonably simple to test and doesn't require complex engineering then there may not be a lot of value in having a framework specialist. For example a website and IOT stack have very different test requirements.

As someone who is framework specialist what i tend to add to the process is:

  • documentation - A proper framework should be fully documented with each release , i do this with inline documentation that is extracted with sphinx. This ensures that test developers know how to use the tools.

  • releases - If there are more than 1 people using it then you should have releases of your test framework, if not test developers will struggle to keep tests stable as they will have to manage changes from the product and the framework.

  • packaging - A test framework is useless if its not packaged in a way that makes it easy to deploy and allows you to A/B test versions of it. It should be easy to deploy in CI and on developers machines in as few steps as possible otherwise debug and triage will eat all the testing time.

  • encapsulation - Ideally the framework should encapsulate enough of the product that tests are focused on the business and functional requirements without having to handle the mechanisms underneath which may be changing. Good encapsulation also makes it easier to provide mocks and doubles.

  • support - The test framework developer should have time to help triage bug reports from their framework as well as train test developers in using the framework.

  • tests - Every test framework should have tests, it will track fast moving code and have a lot of tricky dependencies therefore it needs a test suite that will quickly show breaking changes.

  • utilities - A good framework developer watches how people use their framework and adds tools that fit the needs of the people using it.

Its tricky to attach metrics here but a good framework should be measurable in the following ways :

  • reduced bug triage time - when bugs are reported from a framework that is well written they are unambiguous and contain all the information required as well as a simple method for reproduction.

  • reduced test development time - testers should be a lot more productive with a good framework as they will be assembling parts rather than writing code from scratch.

A big mistake is to measure the amount of tests or the amount of test passes , neither of these things will help and are very easy to distort.

The takeaway from this i think should be , only some orgs are big enough to sustain a test framework developer and sometimes they only need one at the beginning of a project.

3
  • Very insightful reply, thanks. However, the points you listed are all covered already, tried and tested by a year of usage. :)
    – FDM
    Sep 28, 2018 at 6:49
  • sounds like you are doing it right then :)
    – Amias
    Sep 28, 2018 at 10:48
  • 1
    something that is often overlooked in this role is how you can interface with the maintainers of the upstream open source test tools that you or your org are using. This can be code contributions , reviewing changes or just helping out with bug triage. All of this helps the team get the most from the tools and be aware of any changes coming. But again you need a sizeable org to make this worthwhile, i've not seen many people mange this as external consultants.
    – Amias
    Sep 28, 2018 at 10:52
2

Create a tool to collect and store results from all test runs

At my team our next challenge was trying pinpoint the failure to a specific component and possibly to a function and not just the commit that triggered the CI.

Our system was complex and tests above the unit level had many environmental dependencies and consisted of many sub systems.

Logging was great, but each test resulted in huge multiple log files from the different sub modules. The idea was to build a clear picture of what happened in the system, compare it the what you would have expected from an healthy system.

The last part required machine learning algorithms, and if we had a chance to complete it we could also find problems that were not hard coded into the test's oracles.

tldr; use machine learning to analyze your results to find problems

2

Production monitoring. You can't test on prod, but you can monitor it. For instance, number of credit applications submitted. If you make a deployment and this number drops to zero, something is up. Optimally, you can monitor different endpoints over time and gather historical information. Eventually, you can use this as a baseline and start to establish a threshold to alert people to check if a service is functioning properly.

If you are really bored/have a lot of time, you can add some machine learning to and slowly train your thresholds to be more accurate.

You can also start parsing your logs for errors. Often times, UI tests will cause an error but your test misses it because you weren't looking for it specifically. If you get the backend logs from your website as your automation is going through the system and look for errors there, you will catch more bugs than your UI tests alone.

1

As you start to look at the bigger picture for more challenges I think it will help to consider the Agile Testing Quadrants - Unit, Integrated, UI and Performance/Security.

You will also want to look at them in respect to the Agile Testing pyramid.

Test Data is critical. Make sure you have isolation. Don't go overboard to create 'Joe Smith, 123 Main Street'

Increased and improved Visibilty of the CI pipeline (like on overhead and "public" (inside company) locations.

Performance testing using functional tests for the workflows is often a good thing to embark on to address that risk

0

Move from verification to quality improvement

Typically tests, especially end-to-end ones, verify quality at the end of the process against what has already been made. Tests that are verifying quality will not, alone, be the artifacts that actually improve quality.

The next step in the quality journey is to focus on actual quality code activities. There are several key areas to focus on:

  • Promote stronger linting. This is one of the cheapest 'shift-left' activity you can do. Strong linting provided guidelines for consistency and for following standards to make code more readable

  • Advance quality CI processes. There is only so much you can do on your local machine. As infrastructure grows it becomes increasingly important to run your tests in the cloud so they can be parallelized to run faster and consistently in a way that is visible to all. This means getting proficient and knowledgeable about using tools such as Jenkins and circleCI and approaches such as IAC (Infrastructure as code).

  • Promote quality PR practices. Make sure that PR's have healthy open discussions and are not a rubber-stamping process

  • Grade your application code. Perform static analysis with tools such as code climate to rate your code and point out low quality issues such as duplicated code, long methods, too many parameters, etc.

  • Focus more on code coverage during application development so that it is one of the key gating parts of adding code

  • Talk more about quality issues including testing and automation during backlog refinement sessions.

  • Champion development practices such as BDD and TDD to have quality baked in during development

  • Focus on cycle time and approaches to reduce how long tests take including parallelization, deleting tests, moving tests to a lower level, mocking and stubbing dependencies, etc. test approaches to

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.