Who is a Software Test Automation Engineer?

Dr. Çağrı ATASEVEN
6 min readMay 16, 2021

The most common questions I encounter as a software test engineer are:

Who is a software test engineer? What are their responsibilities? What are the differences between software testers and software test engineers?

I will try to answer these and similar questions in this article. Whether you are in the IT industry or do not know a single word about IT, an answer in a few sentences to the question of who is a software test engineer will mean nothing to you. If your purpose is to find an answer in a few sentences, this article is the wrong address for you, If not, here we go!

As with other professions, the best way to understand what a software test engineer is is to understand why is needed this profession. This need cannot be considered independent of the historical evolution of software testing.

“We can trace the evolution of software test engineering changes in the testing process model and level of professionalism over the years. The current definition of a good software testing practice involves some preventive methodology.”

David Gelperin and Bill Hetzel [1]

Let’s take a quick journey together in the history of software testing

The first Bug

Before the 1950s, it was not possible to talk about a software programming test in the full sense. The testing for digital computers focused only on hardware. It means writing a program and then checking out the hardware components. The concepts of debugging and testing were not clearly differentiated in those years [1]. Perhaps the best example was lived on September 9, 1947, at Harvard University in Cambridge, Massachusetts. The scientists who worked with the Mark II computer detected consistent errors. When they opened the computer’s hardware, they found a moth. The insect had disrupted the electronics of the computer. Then they detailed the issue in the work log, pasting the moth with tape as evidence and referring to the moth as the “bug” causing the error, and to the action of eliminating the error as “debugging”.

However, only three years later, in 1950, the English mathematician Dr. Alan Turing opened the door to major changes in the software testing approach with the article he published[2] by asking the following question:

“How would we know that a program exhibits intelligence?”

What does it mean?

It’s quite simple. Let’s say the requirement is to build such a program, then this question is a special case of “How would we know that a program satisfies its requirements” [1].

Basically, with Dr. Turing’s work (Turing Test )[2],[3], the first steps in the transition from hardware testing to software testing have been taken, and it was started to discuss the concepts of software requirements and test assertion.

Turing Test [4]

In the following years, software testing would quickly go through many phases and become modern. In 1988 [1] Gelperin and Hetzel write the article The Growth of Software Testing. In it, they discussed the main 4 phases of software testing. These phases are so important for us because the concept of software test engineering was born while software testing was going through these stages,

Phases of Software Testing

  1. 1957–1978 Demonstration Oriented — To make sure that software satisfies its specification.
  2. 1979–1982 Destruction Oriented— To detect implementation faults
  3. 1983–1987 Evaluation Oriented– To detect requirements, design, and implementation faults
  4. 1988–__ Prevention Oriented–To prevent requirements, design, and implementation faults

The main difference between these phases is that the first two are Phase Models, and the second two are Life Cycle Models. In the first two phases, software testing has always been considered independent of the development process. Firstly, it appeared as a post-production stage, later it was the pre-production stage. The approach to software testing was that [5]:

“Make sure the program runs”.

So the test was done by the developers. But in 1979 [6] Myers defined software testing as “ the process of executing a program with the intent of finding errors”. It means that from now on, the tests will try to demonstrate that a program does not work as expected contrary to how it was done until then. Since the aim was to find errors, the software testing step by step with this definition began to find a place in all phases of development as a Life Cycle Model. Also, the developer’s perspective focused on making sure the program runs, was not enough for this new software testing. This led to the emergence of software QA and software tester concepts.

Software Tester

It wouldn’t be wrong if I said that the software tester profession emerged after Myers’ definition. In the Destruction Oriented phase, it made sense that the software tester and developer should be completely different people. Basically, the idea was that:

The more different tester’s point of view was than developers’, the better the software testing was”

Generally, software testers did not need to have coding knowledge. Their main responsibility was to test the product with the QA approach. Of course, this test did not go beyond the black-box test. Test processes requiring coding knowledge and automation tests were still the responsibility of the developers [1].

Need for Software Test Engineering

After the Evaluation Oriented phase, the definition of software testing had begun to completely change. It was in the requirements, design, and implementation phases anymore. It means that software testing has turned into a multi-stage job that needs a lot of time. Now software testing had a cycle called STLC independent of SDLC. Especially after the Agile manifest, the SDLC was much more dynamic and the DEV team was completely separate from the QA team. As you can easily understand, in this case, there was a need for a new position in software testing to fill the gap in software testers. There was a need for a new role that had both QA and DEV approaches, code knowledge, and could do white-box testing if necessary; software test engineer.

Software Tester vs Software Test Engineer

I am sure that the difference between a software tester and a Test Engineer is clear. But I would like to summarize that as follow:

[7]

Responsibilities of Software Test Engineer

  1. Requirement testing: Analyze requirements according to SMART criteria and prepare a query list.
  2. Test case preparation: Write and execute test cases to find system bugs
  3. Contribution to the CI-CD process
  4. Test Automation: Developing and maintaining of test framework
  5. Test Reporting

The skills set and tools for software test engineer

  1. Deep understanding of software testing
  2. Knowledge of all testing processes: the whole bug life cycle; different testing types, methods, test estimation techniques
  3. Ability to work in an Agile environment
  4. Programming skills
  5. Good communication skills and team player

Tools:

  1. Project management software, e.g. Jira
  2. Quality management tools, e.g. TestRail
  3. IDEs, e.g. IntelliJ IDEA
  4. API testing tools, e.g. Postman

Who is a software test engineer?

All of these!

References

[1] Gelperin, David; Hetzel, Bill (June 1988). “The Growth of Software Testing”. Communications of the ACM. 31 (6): 687–695.

[2] Turing A. Checking a Large Routine. Report of a Conference on High-Speed Automatic Calculating-Machines Jan 1950, 67–69

[3] Turing A. Computing Machinery and Intelligence. Mind 59, Oct 1950, 433–460

[4] https://de.wikipedia.org/wiki/Turing-Test

[5] Baker. C. Review of D.D. McCracken’ “Digital Computer Programming”. Mathematical Tables and Other Aids to Computation 11,60 Oct 1957, 298–305.

[6] Meyers, G.J. The Art of Software Testing. John Wiley & Sons, Newyork 1979

[7] https://testco.com/wp-content/uploads/2017/04/TESTCo-Report-Testers-Vs-TestEngineers-2017.pdf

--

--

Dr. Çağrı ATASEVEN

Cagri Ataseven is ISTQB Certified Software Test Automation Engineer, Also, he has a Ph.D. in mathematics.