I saw an interesting tweet from Lorin Hochstein about unit tests. I was already thinking about unit tests for the past 2-3 days, so I thought I would share my thoughts of effective participation of Testers in Ensemble Programming.
Admittedly, most of the companies today do not do Ensemble Programming because it takes effort and time from a lot of folks. People still prefer offline reviews (even over email attachments sometimes) to get code reviewed. I believe that when people sit together and work, we could accomplish things a lot effectively and quickly rather than going over multiple revisions back and forth (even with the help of source repositories). For these sessions to be effective, representations from the relevant stakeholders is necessary, and effective inputs from the stakeholders are also necessary.
If your organisation decides to do Ensemble Programming, then including testers in the session is key. I have already shared my thoughts that having one ‘Quality Coach’ representing the test is ineffective, as one Quality Coach won’t be able to effectively gauge the code written from various aspects like performance, security, etc. This is because each of these areas involve years of expertise and a critical eye to assess things from those unique angles. I recommend testers with varying expertise attending these sessions and providing their inputs.
When Lorin tweeted about unit tests, the immediate thing that came to my mind is the quality of the tests. Unit tests can be simple and effective when they are done by people with relevant expertise and background. They could also be useless when they are done just for the sake of doing them and not providing any value.
Testers Contributions To Developing Code
That brings about the question on how testers can help in writing effective unit tests and code. In one of the recent blog posts, I had written about what design considerations need to be kept in mind while designing/developing a module or a product. If testers who specialize in each of these areas can take part in the sessions and provide the inputs, the quality of the unit tests as well as source code will be far better than what would be when it is done without any oversight.
Why design considerations during Unit Tests stage?
As a developer, you may ask why we should consider design aspects when doing unit tests. You may think it is too early. You may think the module is pretty much doing nothing right now in order to provide value, so you would just add some ‘simple’ tests to make sure your code works. I don’t think that’s the way to approach development, because you need to have the end in mind when you develop. Granted, you will breaking up the big effort into small chunks, but your small chunks still contribute to the whole end result and that’s why the design considerations should never be out of sight. By the same token, the testers need to make sure that the design considerations are taken care of by observing and inspecting while the code is being developed. Also, recent security vulnerabilities and performance outages show that code needs to be inspected and tested right from day one and not as an after-thought.
Why should testers inspect while development? Why not test later?
As a tester, you might ask why the testers should inspect the development process and the code while it is being developed, and why can’t I test the software post-development. The reason is that you will prevent all the programmatic defects that happen in the unit stage at the unit stage itself, which will reduce a lot of burden on you when you test the product post-development. Your automation process will also flow well because of the absence of silly errors and a lot of time will be saved.
But I need to learn the programming language!
As a tester, you need to know the programming language to do the code inspection. In one of my recent blogs, I wrote about how to split the work between testing-while-development and testing-post-development, and the pros and cons. You can go through that blog and decide for yourself what will work in your organisation. There is no one right answer, and it all depends on the compilation of the team and the team members.
Hope this gives you some tips on Testers in Ensemble Programming.
For effective testing strategies, feel free to contact me.