There is the opinion that QA should design cucumber scenarios, define the right data for tests, communicate with business and end users to fully understand use cases, focus to semantics and look also for quality assurance of governance processes and legal compliance – but should not do development of the automation code themselves, instead driving the developers to do so because the developer has the deep knowledge of product APIs and trained programming know-how. Let’s call this approach “QA designs, DEV develops”.
While fully understand this philosophy of “separation of concerns”, but I have my doubt here. The implementation of cucumber steps is development as any other development. So the QA engineer needs repetitively change the code & run the code in IDE until the cucumber script is perfect structured and working. It is not possible to create a clear, structured cucumber scenario from the scratch! That means the idea that “QA designs, DEV develops” is not applicable in practice – it’s just a theory.
To be more specific: QA starts with a raw cucumber scenario that they received from business analyst. Now, the QA engineer needs to refine this scenario, apply the right parameters, add new validations, group statement accordingly, etc. As any development, it is essential to run the code after every small change. That way the QA moves successively from imperative notation to declaratively styled scenario formulation.
Or what do you think? It is possible to separate clearly these responsibilities? Maybe even some real experience?