Google’s 10 Minute Test Plan – Attributes

James A. Whittaker, of considerable testing fame, has published both on the Google Testing blog as well as in IEEE Software an article on the so called ’10 Minute Test Plan’. This test plan is also described in detail in the book ‘How Google Tests Software’ (Whittaker, Arbon, and Carollo, 2012). I read all three versions and I think the article on IEEE Software is the quickest and most pleasant to read (however, you will either have to pay for the article or be part of an institution that has subscribed to IEEE xplore).

Now, there are a couple of things I really like about this ’10 Minute Test Plan’. Chiefly, the idea to use attributes as key building blocks to create test plans.

The test plan described by Whittaker is established in a process named ACC; an acronym composed of attributes, components and capabilities, which are to be elicited in the given order. Components and capabilities are rather ‘standard’ in my mind, describing modules of the software under test and desired functionality respectively. Attributes, on the other hand, seemed at first counterintuitive to me. Attributes, in the ACC framework, are simple adjectives or adverbs, which describe what differentiates the software under test from competitors.

First, I thought this is overly simplistic, given that a single adjective might be too broad a concept to describe anything meaningful. However, while applying this ACC process to the Appjangle platform, I found the attributes to be of particular value! Maybe it’s one of those things one needs to try out to appreciate the value. Below, I have collected three examples of adjectives, which could be used to describe a range of products:

Product Attributes Source
Google Sites Searchable

Sharing

Quick

No Technical Knowledge

Customization

Rich Content

(Whittaker, 2012)
King (A Tool to Estimate Network Latency) Accurate

Easy to Use

Fast

Lightweight

(Gummadi et al., 2002)
Appjangle Scalable

Portable

Testable

Connected

One thing I noticed while creating a set of attributes is that there can be lower level (technical) and higher level (business) attributes. For instance, ‘portable’ is a more technical attribute that can easily be verified. ‘Agile’ could be another valid attribute. However, it is one that is arguably more difficult to measure and verify. In that, I found that multiple technical attributes can be thought of as supporting one higher level business benefit. For instance:

Business Attribute Supported By
Flexible Scalable

Modular

Portable

Testable

Concise

Apart from a set of ‘technical attributes’ enabling business attributes, ‘higher level’ business attributes themselves can be enabled by a set of ‘lower level’ business attributes. For instance, for a product to be adaptive, it needs to be both flexible and agile:

Business Attribute Supported By
Adaptive Flexible

Agile

I think both ‘technical’ and ‘business’ attributes are a great way to describe the benefits of products, as well as to assert these benefits through directed tests. However, one thing I didn’t like so much about the ’10 Minute Test Plan’ is the idea to create a test plan in 10 minutes. To come up even with the most rudimentary set of suitable attributes took me hours – but then maybe I’m just too slow!

Google Releases Tool J2ObjC to convert Java Source Code into Objective-C Source Code

I love the Google Web Toolkit, a powerful and mature open source library to automatically translate Java Source Code into JavaScript code. While I doubt the merit of using Java to write user interfaces for JavaScript (unfortunately, this is often what the Google Web Toolkit has been advocated for), I think it is a great tool to share Business Logic between Java and JavaScript applications.

In this context, I am very happy to see Google release the free tool J2ObjC: This library is targeted to translate Java Business Logic code (not UI code!!!) from the Java Source Code into Objective-C source code. The objective of this project really appears to be to share libraries between Java and iOS applications rather than translating entire applications (with UI) from Java into Objective-C: a limitation I think is a great strength!

I hope that soon we will be able to write Business Logic-level code just once and then embed it everywhere!!!