One of my to-do list item from last year was that I didn’t do justice was, blogging, and I (in all earnest effort) hope I’ll do better this year, so let me start afresh (again).
This month QSIT hosted STeP-IN Summit-2011 in multiple cities, I had earmarked attending their Bangalore chapter hoping to catch-up on new trends of Software Testing that Indian IT is raving about, along with catching up with some old friends I somehow only end-up meeting in conferences.
True to its promise, STeP-IN had a wide range of topics spread over 2 days. Icing on the cake was their decision to do a 1-day pre-conference covering 4 separate half-day sessions on select topics. I had chosen to attend sessions from Lee Copeland who I had been following for quite some time for his great endeavour for STAREAST/STARWEST and, Rahul Verma whose constant pursuit to improve his knowledge of Software Testing amazes me everytime I meet him. Selecting these 2 topics were no-brainer for me and, here is a quick summary for all the readers out there who couldn’t make it – I hope I’m not breaking any NDA and will try and keep it to a generic-enough level so as not to get sued
Pre-Conference sessions (Feb-16)
Advanced Test Case Design using Pair-Wise Testing (Lee Copeland)
This is not a new concept or innovative test technique however, I was not surprised how it was received as something new by a lot of testers attending this session.
Initial half-hour or so Lee covered more generic testing topics which set him up nicely for the topic-of-the-day which was Pairwise testing. Lee has a knack for story telling (typical of good testers) and he used that to good effect to highlight how it is very important for testers to constantly question their beliefs and challenge claims by people to things they like to call “best practices”. I was surprised that not many had heard much about Exploratory Testing during this session, had somehow assumed that most testers in India already knew this testing approach well and practice it in various levels. I think there’s still a long road for us Exploratory Testers’s to carry the light and get it the exposure it deserves.
Pairwise testing is a technique that is very handy when you have to test a set of variables that result in a big list of combinations of possible test cases. Think of a typical use-case for web testing team who have to test a web page on different flavours of Operating Systems (Win-XP, Win-7, Ubuntu, Mac OS X, iPhone, Android) running different Browsers (IE, Firefox, Safari, Chrome). To test it “completely” you’d end up with a huge list and yet, we really don’t need to test “all” of them because most of the bugs may be identified if we hit upon all of these variables (OS and Browser types) at least once. So how do we get a smaller/more manageable set of test cases? say hello to Pair-Wise testing.
There were 3 different flavours of Pairwise testing that were discussed during the session, which were:
- Orthogonal Arrays: This is the traditional way of deriving a smaller
- All Pairs method, made famous by James Bach
- Microsoft’s PICT program
All 3 try to achieve the same goal of minimizing a real big list of possible test cases to a more realistically (and executable) number of test cases while ensuring that each variable is covered at least once.
This is not a silver bullet that testers can use in every situation where they have a matrix of variables to create testable combinations from. The caveats are aptly highlighted by James Bach in one of his papers on All-Pairs which I’ll try to summarize below:
- You must identify variables that interact. It’s tempting just to throw a bunch of variables into the mixer, but there is no probability of a bug unless the variables interact in some way.
- You must identify variables that can vary independently. In practice there are often many dependencies between variables. This leads to illegal test cases.
- You must choose specific values for each variable. Usually this means partitioning the variable into “interestingly different” values. But in practice you can’t know for sure what is interesting.
- You must provide the test procedure. All the pairing tool will do for you is tell you which sets of pairs to try. You still have a lot of work to do to make a good test.
- You must provide the oracle. This is more difficult in pairwise testing. So much changes with each test, there is a LOT to check.
- You must add cases for interesting combinations that pairwise testing ignores.
Key take-away for me: I had used all-pairs sporadically over the last few years with my teams and though, it hadn’t been as relevant to my testing needs on regular basis, I’m sure this refresher will make me remember to check for its usage in coming projects.
Designing and implementing a Common Test Automation Platform (Rahul Verma)
I’ve known Rahul for some time now and he is one of those presenters who relishes an audience. True to his nature, he was in full flow and at his eloquent best when tackling a daunting challenge of talking about a new way of thinking/designing/creating/implementing a generic Test Automation Platform. This was not a typical presentation on “how” to make an automation framework BUT, was about “what” things to keep in mind “when” deciding on making an automation framework. He used his current job’s use-case for most part of the presentation but there some good insights on the pitfalls, lessons learnt, tips and caveats ppl. need to remember when creating an automation framework.
The new thing that sprung out at me during this session was that it used a very simple mechanism of Object-Orientedness to devise the entire framework and gave more importance to the actual Test Case than the process of writing scripts in sequence to automate workflows. There were quite a lot of things covered so here’s a snapshot checklist of them – there are quite a few details that I haven’t listed here and if you have questions, feel free to contact the actual dude directly
- Creating a Test Automation Framework (TAF) is a very common requirement in big teams, we typically go look for tools and they mostly do not do all what we need so we end up customizing them OR mostly, end up creating our own TAF’s
- There are some important decisions to be taken way before you even start writing up your TAF. These decision are critical to success/stress you’ll experience when you are making or using the TAF
- Focus more on Tests when designing TAF rather than things like integration with Bugzilla, Email, Reports, etc…all these are noise that seem to overshadow the TAF designing time rather than thinking on what the actual Test should do
- We should look to design the TAF modular, scalable and flexible so that we can integrate additional features later on
- Don’t distinguish your Tests outside of TAF, distinguishing means – categorizing Tests as functional, regression, performance, load, stress, fuzzing, etc
- Empower each Test with ability to decide on runtime what it should do
- Use Test Encapsulation to allow them to decide on runtime with help of using meta-data for things like I list below – there are a lot of things a Test would like to KNOW for itself at run-time
- Priority (do you want me to run now?)
- Logging (should I use central logging mechanism or log something local)
- Performance (should I time myself?)
- Bugs (are these related to bugs we already know about?)
- Platform (what platform am I running under?)
- Think in modular terms when designing Tests, think running them as
- Prepare mode
- Set-Up
- Run
- Report
- Clean-up
Key take-away for me: There needs to a lot of thought that should be put way before teams think of designing their TAF and this session just highlights the benefits of planning rather than jumping in using tools and hoping everything will work out. There’s no shortcut to hard planning for successful frameworks.
Conference days (Feb 17-18)
The conference had hordes of software testers from a whole range of IT companies but it seemed to me that, the bunch of attendees were mainly from big MNC’s and less from small organizations who I think, would have benefitted more from such conference, maybe its the cost? not sure. I think Testers should try and network as often as possible via such mediums, blogging does help but conferences still has an advantage of face-to-face interaction which is quite unbeatable. The topics ranged from how testing is optimized in Trading domain, seemingly popular among many, Performance testing to, every testers all-time favourite, Requirement analysis. One thing that Lee had mentioned just 1 day before (and resonates with me quite a lot) was the way presentations were done, a lot of information was crammed into small Powerpoint files which were literally unreadable from 3rd row onwards. I wished either there were really good projectors OR, presenters used a format that helped audience read them better.
Here are few topics that I discussed, overheard, contributed to during the conference
- Testers do not get enough visibility during initial phase of project
- Test teams do not get enough time and always hard-pressed for resources (Me: I think we should really stop whining and be creative for solutions — no one ever has enough time!)
- Testers do not get heard or respected enough (Me: Respect is earned, providing timely & useful information will go a long way to earn respect)
- Everyone wants to claim that they use Agile even through they “really don’t. Its the buzz-word of the industry for quite some time now
- Automation (of any kind as long as we can throw that word) is still an enigma which everyone wants to tame but has trouble with, despite throwing tons of money/hours at it
- Testers are realizing that they need to add more value than just running scripted test cases and that learning more about the business models is going to give them an added edge in today’s competitive world
- Working in large companies gets you the brand but the quality of work (aka job appreciation/satisfaction) still seems to come from working in smaller companies/teams
As usual, the part I liked the best was the out-of-room networking and catching up with old friends and fellow Testers who I typically only see during conferences. One thing I wish could’ve been different was to meet more often than not.
Topics that flattered to deceive
- Testers aren’t born, they acquire greatness! I had expected to see some discussions about Exploratory testing, creative testers, how we do not need to stick to traditional biases and guidelines of testing. Sadly it wasn’t what I hoped it was but, the regular rigamarol of how we need to do things like manage timeline, attention to detail, etc. Oh one more thing, I don’t think that testers are NOT born, on the contrary, I think we all are born testers (read an earlier blog from me).
- Testing mobile applications for usability and context, “Crowd-sourced”, the topic looked interesting to me as I do iPhone/iPad testing for living but the things covered were pretty basic and something I could’ve learned via Bing anyways. No disrespect to the presenter – just that I had hoped for more.
All in all, they were great 3 days of interacting with Testers, listening to interesting topics and seeing what some of the big Software firms of India had to say about Testing and the future of this cult.
Did you attend Summit-2011? Is there something you want to add/rebut/discuss? lets talk some more in comments section.
Thanks for reading!
Follow what I'm upto on Twitter