Tuesday, December 14, 2010

More money for testing

Last Friday, I followed the webinar of James Whittaker, Testing expert @ Google, called “More bang for your testing buck”. Now, I want to summarize the talk but also reflect on the interviews of the Testing study. In addition, I’m eager to hear your opinion about this subject.

The main question is: If you have additional money to spend on testing, where would you invest and why?”
In his talk, James reasons about two options: Spending it early and let developers test, or spending it in later phases and have test professional test the product. He argues that quality cannot be tested in, and that developers are actually creating the product. Thus, they might be more valuable than testers. In a second thought, he mentions reduced costs for testing early in the cycle. When a developer sees a bug, he often does not even have to write a bug report, he just fixes it. The third reason why money might be invested during development is because testers write too many, as he calls it, useless test plans. Test plans get written, get outdated and die.

“Developers grow trees.” he says, and nobody knows a tree better than the developer who grew it. On the other hand, who is responsible for the forest, i.e., the integration of trees? Exactly this task should be performed by testers. The second reason to invest in testers is because they bring in the user perspective. The third reason why somebody should invest in testers is because many applications nowadays are just built by putting together pieces of software, without ever writing a single line of code.

James gave exactly three reasons for spending money during early testing and another three reasons why somebody should spend money in later phases. Nevertheless, after presenting this “fair-play” summary he showed a couple of nasty bugs. These bugs can be identified by smart human beings, but there is no way to automate finding such bugs a priori.
A picture of one of the presented bugs shows the walking road from Cambridge to Hull, unfortunately the walker must swim for a bit.
bugMapsSmall.PNG

All in all, he concludes that he would spend the money during later phases for manual testing of applications by “smart” testers, but that it is even more important to increase the productivity of testers by e.g., tooling. The time testers spend writing test plans has to be reduced. At Google, they use a tool for test planning called “Testify”. A second measurement to increase testers’ productivity is to reduce the time spend to file a bug. Also for this Google has a tool assisting testers.

After listening to this talk I am interested in how this measurements fit into the Eclipse world. The interviews of the Testing Study revealed that most of the commercial projects have dedicated testers on their team. Those indeed perform the tests on behalf of the customer, represent the user-perspective and mostly perform manual testing. On the other hand, nearly none of the open source projects have dedicated testers. Tests (automated and manual) are performed by developers themselves. In the interviews, some open source developers mention they are worried that they have a too strong technical perspective on testing, and might oversee the users' perspective. One might argue that many developers of open source projects are also their own clients and use their own software even on a daily basis.

I wonder: "Why do open source development teams not have testers on their teams but commercial projects do?" Do open source teams not need testers because “they eat their own dog food”? Is the community around a project to some degree responsible for manually testing? Or are commercial projects not up to date with their development strategies?

What do you think about this subject, and are you involved in an open source or in a commercial project?

Tuesday, December 7, 2010

Sneak Preview of the Study Results

For the last couple of months, more than 20 interviews with experienced Eclipse developers and testers have been conducted in order to get a deep understanding of the way testing is done within the Eclipse community. During the interviews, the participants have been asked about their general test process and strategy, but also about how they handle versioning, when and how they test the user interface, and which tools they use to facilitate testing. Participants revealed also the challenges they face during testing, how they handle them and which strategies they have identified as best practices in their projects.

The very good thing about such a study is that in contrast to the experience, preferences and dislikes of just one person or one project, more than 20 people could express their opinions and expertise, which gives the possibility to share best practices and pitfalls from different projects with different characteristics, needs and development strategies. Amongst others we interviewed people from following open source projects: EMF, SOA Platform, Mangrove, Usus, EclEmma, JaCoCo, IMP, CDO, GDA, Spoofax, RAP, Mylyn, GEF, and counting. But we also interviewed people involved in commercial products that we can not mention here, with the exception of GUIDancer and Tasktop.

To share all results with you, we submitted an EclipseCon proposal for 2011 called "Test Confessions: What Eclipsers Think and Do about Testing". If you are interested in this study, you can have a sneak preview (like a movie trailer) of a potential talk by looking at the slides. If we are one of the lucky ones that get accepted we will present the whole results next March 2011.

Some of the participants agreed to be named, some want to remain anonymous. At this point, I would like to thank ALL participants, including Sven Efftinge, Leif Frenzel, Markus Harringer, Marc Hoffmann, Alexandra Imrie, Lennart Kats, Ed Merks, Tracy Miranda, Adrian Mos, Benjamin Muskalla, Steffen Pingel, Aurelien Pupier, Holger Staudacher, Eike Stepper, and Jurgen Vinju for taking part in this study.

Saturday, November 27, 2010

Testing Eclipse RCP and Plug-in Applications

This blog post tackles the question "What is a must-have reading for a plug-in or RCP-apps developer when it comes to testing?"

Over the past couple of month, I collected more than 100 resources on testing Eclipse plug-ins and RCP applications. Today I want to share the 6 primary testing pointers, and summarize some of the most often stated recommendations on testing. This is a subjective collection, please feel free to add missing pointers in the comment section. On purpose, I spared links to specific utility tools or testing frameworks.

The main article and also starting point for further reading is the wiki entry on Automated Testing [1]. This article covers some basic information on how to run tests, suggests useful test utility frameworks and also presents a list of user interface (UI) test tools.
Another somewhat older article focuses on automating Eclipse PDE unit tests using Ant, and gives further pointers to articles about how to automate PDE tests [2].

From several documents on the web, as well as talks in Eclipse events like Eclipse Summit and EclipseCon, it is apparent that writing unit tests and having continuous integration/testing are recommended as a best practice for Eclipse development. As for example, the Architecture Council lists unit testing, and continuous integration under the top 10 project development practices [3].


Further Test Driven Development is one of the most discussed and recommended strategies when it comes to testing. There are several resources out there, I selected a TDD webinar by Kevin Taylor [4]. In his webinar he suggests to use the Model-View-Presenter pattern to separate concerns and thus the UI code from the logic behind, which in turn helps to reduce the code within the UI.

In addition I would like to include some pointers to books: First, the Eclipse specific book of Erich Gamma and Kent Beck “Contributing to Eclipse” [5], which explains how to contribute to Eclipse in a test driven way. Further, one very well known but general book on testing, by Binder, namely “Testing object-oriented systems: models, patterns, and tools”, provides several patterns that are handy for practical use [6].

What else has to be included in every Eclipse plug-in/RCP developer's reading list?
Missing something? Please leave a comment.

------------------------------------------ Edit:
I am happy that people responded to the post and extended my list of testing pointers.
Here the additional links from the comments:

"Agile Java(TM): Crafting Code with Test-Driven Development" by Jeff Langr.
"Effective Java" by Joshua Bloch.
"FAQ: How to build a product": http://wiki.eclipse.org/FAQ_How_do_I_create_an_Eclipse_product%3F
"Eclipse PDE Build - Tutorial": http://www.vogella.de/articles/EclipsePDEBuild/article.html
------------------------------------------

References:
[1]: http://wiki.eclipse.org/Automated_Testing
[2]: http://www.eclipse.org/articles/article.php?file=Article-PDEJUnitAntAutomation/index.html
[3]: http://wiki.eclipse.org/Architecture_Council/Top_Ten_Project_Development_Practices
[4]: http://live.eclipse.org/node/700
[5]: http://portal.acm.org/citation.cfm?id=961854
[6]: http://portal.acm.org/citation.cfm?id=338330

-------------------------------------------------------------

Tuesday, November 2, 2010

#1 Testing Proposition: Our Opinion Counts

This is the first of a series of posts aiming at sharing some thoughts on testing with you that are inspired by the interviews during the Eclipse testing study. I formulate the thoughts as statements allowing you to express your opinion. Do you agree/disagree? Have you experienced otherwise? Please feel free to use also the comments to express your opinion in some more words and to foster a discussion on this topic.

These statements must not express opinions and experiences from individual participants.

The first proposition is concerned with the point in time when testing should take place and stands in contrast to test driven development that propagates a test first approach. The proposition is concerned with the overhead caused by writing test code very early in the development phase.

Questions raised are: “Does focusing too much on testing immature components hinder further code development because the tests will need to be changed whenever the component is refactored or adjusted? Therefore, should test code evolve over time and with the maturity of the component under test? Or should be writing test code the first priority when developing new functionality?”

Now it's your turn. Do you agree or disagree with the following proposition?

Friday, October 22, 2010

Poster @ Eclipse Summit Europe

The Eclipse Testing Study is present at the Eclipse Summit Europe with a poster.
Click for a sneak preview of the Poster on Slideshare.

This poster is intended to promote the study on identifying and conceptualizing the testing culture of Eclipse within the community and to foster an open discussion on testing best practices and pitfalls.

An open discussion helps to understand common testing traditions within Eclipse, but also to reveal diverging testing forces. With this study, we are interested in conceptualizing the different testing forces, and to develop a framework of testing methodologies within Eclipse. This framework can not only give insights into state-of-the-art testing and leverage current best practices, but it can also be used to direct improvements of testing strategies and tools. The results of the study will be compiled and made available to the community.

Monday, September 6, 2010

Participate at the Eclipse Testing Study!




How to participate?

The study involves participating at one approximately 1 hour interview, in most cases done via phone or Skype. Interested? Send an email to [m.s.greiler at tudelft dot nl].

What is the study’s aim?
The study aims to shed light on the testing culture within the Eclipse community, and to identify best practices and pitfalls. The results of the study will be compiled and made available.

Who conducts the research?
The research is promoted by the Software Engineering Group at the Delft University of Technology. The study is designed by Michaela Greiler and Arie van Deursen.

Who are we looking for?
We are looking for Eclipse plug-in developers and testers, as well as for developers and testers of Rich Client Platform applications.

What happens to the data?
All individual interviews will be treated as confidential. The results will be shared with participants, and some anonymized information may be used in academic papers or other publications.