Yes. Sometimes it is okay to ignore rules, think from a different point of view. This may cause you issues and criticism and temporary failures but as long as you have a plan, it should be all right.
This is my journey on implementing a regression test suite in current project, how I solved different hurdles. I have broken many rules but now I believe it is a success.
When I join, the project there was acceptance tests embedded to the code. So as the unit tests, feature tests and integration tests. Those acceptance tests not cover user journey but more of a single function. All different tests are based on one code base. Acceptance tests were running in TeamCity as well.
I spoke to the team and then start adding tests to the acceptance tests because I felt it is not enough. However, it was making the code build too slow and maintenance get out of control. Why? It was one code base. When acceptance tests fail, the tests were either ignored or made to pass. Tracking them was difficult.
Therefore, it was a failure. I was discouraged and almost given up!
Then I asked the team how they feel about me creating a separate test suite. Seniors objected because it will make a duplicate code, unnecessary maintenance etc. I felt disappointed and discouraged again. I maintained an Excel sheet as a check list for different functionalities but wasn’t happy. Testing had become a long process when it come to build pick and deployments.
Few months later, I started creating the test suite without telling anyone. I copied some of the functions from the main code base that I can use and build up on it. It came out as exactly I planned. I started using it for checking the releases. So far, all happening in my local machine. Then I showed it to the team saying this is what I have done. I even used the test suite against live environments, which had not happened before.
Only few impressed. Same arguments came. I mentioned this is only maintained by me so it should not be any overhead to rest of the team. It will be in the common repository but I do not want the development team to update it because I would like to have a control of what goes in and out! Did they agree? No. They were telling about what happen if they change the modules that I have copied. My tests are independent from their code base. I just ignored all their concerns for their displease.
Some helped me setup the build in TeamCity and the team started to see results. Build picking and deployment times reduced. Issues caught up front in areas that was not thought of… Stage 1 succeeded.
I wanted to discuss the tests and its coverage with the business but the tests are very technical. Therefore, I wanted to do BDD format. However, all the documents I read and all the courses/workshops I went to told that BDD is a way of communication and it should start from the business and the teams talking to each other. I agree yes.
However, our team was doing most of these things. We are having open discussions with the Product owner. The business analysts are writing the stories in a Given, Then, When fashion .Doing changes from top to bottom will be troublesome. Many people do not want to change how they work unless there is a perfect valid reason.
Therefore, with a help of a contract tester we changed the existing test suite to use SpecFlow. Introduced BDD to the Regression tests and converted all tests. Detailed SpecFlow reporting and tests running in multi-thread mode the reduce overall time impressed the team. They now backing us with having a separate test suit.
When mobile tests needs to be done, it was easy for us. We expanded the tests to different devices to different break points with ease.
Then I showed the test suite to the product owner. Taken him through few scenarios.He was clearly impressed on what we have achieved. Now I am working with some editors to understand what scenarios I might be missing from their point of view. Involving the business with testing was great.
Now I am working with the business analysts to see how we can work together with the BDD scenarios. Whether I need to change the language that I used in the feature files or they need to change theirs or whether we can meet half way. We are going to try it on a small functionality change so there will not be less impact.
There is long way to go but I am happy the way I have made an impact without playing by the common rules.
Therefore, I think it is good to break rules now and then. Well it worked for me so far.