I have seen many QA teams in many organization creating very complex and huge test automation frameworks and use concepts like Java reflections, use a lot utility classes, use many many dependencies/libraries and third party plugins, have many different reporting options, even for a normal sized web application.

However, to test a financial/banking web application, I made a lightweight Cucumber BDD based framework built on Selenium, Java, TestNG, Maven etc..

Used Page object model design patterns, Log4j logging and Cucumber Extent reports...at a basic level.

Now, some people argue that I made a very easy framework as I am afraid of complex Java programming and lack coding skills. But is complex and large Automation framework required anyway?

  • Have you asked them why the need different reporting options? Do you need them as well?
    – dzieciou
    Dec 12, 2021 at 8:41
  • ` Now, some people argue that I made a very easy framework as I am afraid of complex Java programming and lack coding skills. But is complex and large Automation framework required anyway? ` you should be asking that to those who asked , try to compare the result, what additionaly benefit does the complexity brings to the table .It is also important to know what is "complex" you refer to here. Really nice question ,
    – PDHide
    Dec 12, 2021 at 11:35

6 Answers 6


I used my fifth-grade math skills to calculate how much money I'll need to buy coffee. Some suggest that I did it because I'm terrified of college calculus. (I'm paraphrasing.)

People say silly things.

If you created a simple tool to do a job and it is done well, then good job. It does what it is supposed to and it is simple to maintain.

It would actually be bad for the business if you created an blatantly complicated tool just to show off your skill. That could easily lead to all kinds of unnecessary complication down the line: complex maintenance, time lost on unproductive activity etc.

Also, keep in mind the YAGNI and KISS principles.

  • 1
    "KISS" Keep it simple stupid is one of the core principle. Really good answer
    – PDHide
    Dec 13, 2021 at 8:21
  • @PDHide Thanks, added to the answer.
    – Mate Mrše
    Dec 13, 2021 at 9:00

some people argue that I made a very easy framework as I am afraid of complex Java programming and lack coding skills

Who are these "some people"?

Why would they say that?

Why does their opinion matter?

I'm assuming you are a tester. Now, you identified a few things (repeated steps you follow), which you thought if a machine did for you, it would make your life a little EASIER. I highlighted the word on purpose.

Now what exactly would make things easy for you?

  1. A simple, straight forward, to the point system.
  2. A complex structure which would be very difficult to maintain and may result in more cost (modifying, checking, verifying, executing, time) to your project.

I would always prefer to go with option 1.

What is the purpose of intentionally implementing "complex Java programming"? Are you trying to showcase your coding skills in a competition of who can write the most complex code?

Tools and systems are supposed to work for you and not the other way around. So, they are best if kept simple.

People usually should be happy if tedious and or complex work can be done easily with simplest of scripts/programs. At least that would actually be a big win for me.

If the program is simple, it would execute quickly and still get the the desired result. Also, it would be simpler to maintain and modify it.


Ask yourself,can your simple framework deliver complex features?

(assuming those features are actually required for your app testing?)

If the answer is yes, do I need to say anything else...

 “It's really complicated to make something simple, but very simple to make something complicated..”

If the answer is no, then there will be reason(s) why those complex implementations exist.

Find out.

An good read: Why do we need frameworks?


As the saying goes, "perfect is the enemy of good" and in the world of software, you'll rarely get the same recommendation from two different people and if you try to make it perfect you may never actually get a test written! If you start by identifying what the solution needs though (ie your requirements) and only after that trying to work out what components fulfil that role you should be in a good place. It sounds like this is where you are. If the framework ends up being a massively complex beast it is likely to become unmaintainable by anyone but you - plenty of frameworks meet their end this way unfortunately. That being said - you may wish to revisit Log4J and update to a patched version :)


No, there is no need to create a complex automation framework when you are able to yield the desired results with a standard or most basic automation framework. The complexity of the automation framework is a matter of purpose which usually follows the requirements associated with the product under test.

Nevertheless, I would advise you to have confidence in yourself. Unless your efforts are not yielding results, there is no need to change your approach.


In my opinion, achieving a complex solution to a problem is a wrong way of problem solving. In simple words, it is necessary to solve the problem, and not complicate things, specially when you have to maintain a code-base. The problem here in hand is to automate the QA process in order to save resources. So, what matters is that the automation process fulfills the documented objectives and the results are visible over time. For example when trying to provide automation for security testing services one won't unneccesarily add over her head the burden of creating a "complex" solution, rather than simply following the security testing protocols as required.

As the product in question evolves, so will QA test-base, and with it the automation code-base. This evolution makes the your automation framework complicated, as later features are added over an already developed framework. So when a new automation engineer will be introduced to it, she will obviously feel it is complicated. Maybe, this usually gives a false feeling that complex solutions are better.

Your Answer

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