No unit tests could be created after coding. Interview with Raimond Sinivee
Raimond Sinivee says: «Context-driven-testing is my cup of tea…». But his area of interests is much wider than that. It covers broadly tools-based testing and test management as well. Today Raimond is council member of Estonian Testing Board and member of The Association for Software Testing. Raimond has been speaking on all of the Peers of Estonian Software Testers peer conference. He is one of the founding organizer and content owner of Nordic Testing Days.
Raimond Sinivee started his career in Estonian biggest mobile telecommunication company EMT AS as tester working from stored procedures to web UI application testing and creating tools for testing. Currently he implements mentioned testing concepts working for such big VoIP provider as Skype .
a1qa has the honor to ask Raimond some questions.
a1qa: Raimond, you are adherent to Context driven testing, right? Sometime ago we interviewed James Bach who actually stood at the origins of this methodology. James suggests a program working well for one person in a given situation might prove inadequate or inappropriate for another person or context. Does Context driven testing proved its effectiveness for Skype which is really client oriented technology?
Raimond Sinivee (R.S): I value the principles of the Context-Driven-Testing and the first two principles are that the value of any practice depends on its context and there are good practices in context, but there are no best practices. This means what you’ve just said – that in web app testing there can be no silver bullet or a script that works in all situations. Context to me means all the aspects of the situation and taking into an account people, background, available resources and goals among other things. For example I avoid theoretical questions on interviews which ask what you would do. I haven’t seen a person who could give enough context to really explain all the aspects that would matter and I would not actually know how the person would behave. I can ask behavioral questions, because person can explain the context, because he/she has experienced it and that is specific example from what we can learn.
Skype has a lot of different teams working on different client applications. Skype is committed to platform diversity which means Skype makes clients also to Android, iOS, Mac OS X etc. The platform specifics are context to test teams and not all teams test exactly the same way. Similar teams share knowledge and tools, but every team uses their specific testing that matches their context. I work on Skype Plug-in for Outlook.com, OneDrive.com and Facebook.com and I use web based testing which is different from Skype desktop application testing in many ways like the tools we use and platforms we need to cover.
Context-Driven-Testing says that: “Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products” and I think that is great responsibility. I think this way of thinking attracts smart and thinking people and its honor to work with them.
Skype uses SCRUM for software development project management and I think Context-Driven-Testing matches the values of Agile very well.
People value these principles, reacting to situation and using Context-Driven-Testing makes it easy. I create test plans so that I could change them fast and they are not fragile to changes that I want to be open to. I use test ideas and objectives and don’t use detailed scripts for test planning. Some other team in Skype could use different kind of details in their test plans if it does match their context.
I think that Context-Driven-Testing gives the needed flexibility and makes people do smart decisions. The company does not need to state that they use Context-Driven-Testing, everybody can do that by themselves like I do it in the Skype, because not every team uses this definition or have to completely agree with that.
a1qa: Raimond, according to your vision “Testing is context driven learning process providing new, fast, relevant and trustworthy feedback to all stakeholders about the state of the software.” What is the role of testing tools in that process? I mean both debugging tools as well as complex systems supporting test management activities.
R.S.: First of all, I think that using debugger is sign of problems in coding process and I use that as rarely as possible. This shows to me that team is not using Test Driven Development or doing it wrong, because unit tests should give that information anyway. I do use it in for crash debugging to make my bug reports easier to understand and follow the coder way of approaching this kind of issues.
I haven’t used complex system for supporting test management activities, because by definition they are complicated and I want to make my life easier. I rather use lightweight and easy tools like readable documents tailored to the readers.
The role of testing tools is to speed up the feedback and help to check aspects which are humanly impossible or hard to achieve. I use tools for things that I’m not able to do or a tool could do it faster.
I use tools to collect information to make decision. For example, I test video calling application and use tools to make a lot of calls to measure different kind of resource usage. The tool does not return pass/fail answer, but it return numerical answer and I make a decision based also on the context. A value may be reasonable in one situation and not in other depending on the change or environment state. Harry Robison has good examples about it in his blog.
a1qa: Coming to automation testing let’s discuss famous Testing pyramid concept. How realistic it is to follow all the stages , if we do not begin developing a new product, but implement the automation in the current product that has already been released? How likely it is that API layer of the pyramid will go into the third one and become UI?
R.S.: This additionally depends on what are the plans with the application and where are the priorities in the company. Having no or low number of unit or API tests hints that the application would be hard to test on other levels than UI and that means it needs to be refactored. It becomes a trade-off of would refactoring add value or changes will not give much benefits, because for example we don’t plan to change the application and it’s in maintenance mode.
I don’t believe in creating unit tests after the fact of coding, because programmer would need to break the code to show that the test would find the issue if it would exist there. I have experienced that unit tests written after coding just conform to the code and are bringing very little value compared to the case when they would have been seen failing when writing them before coding.
I think that the testing pyramid shows the trade-offs and differences between different levels of testing and is guideline for refactoring or building an application and not for only testing teams to follow. It’s very likely that we can have only end to end UI tests if application is not testable from API level and no changes will be done to the system under test to increase testability.
a1qa: Raimond, since you are one of Nordic Testing Days conference organizers could tell us a few words about this event? What are the goals you are setting for this event? Who do you expect this year to be the key speakers? And finally, why should people attend?
The main aims are to educate people and motivate them to learn more about testing. Secondly, we want to raise the awareness of the testing discipline in the region and make it conscious career decision for people. Third, goals are to create network and make the bond between people stronger so they would share their experiences and it would be easier to communicate.
Our key speakers for this year are Matthew Heusser (USA) who is writer, blogger and vocal test professional, Anto Veldre (EST) from CERT, Jevgeni Kabanov (EST) from ZeroTurnaround and final keynote speaker will be announce in upcoming weeks.
People should attend, because we provide great learnings from people’s experiences and have practical tutorials, workshops and tracks.
Attendees have told us that they have really learned something practical and we are gaining popularity having more people every year creating better networking possibilities.
Reach Raimond Sinivee on Twitter.