Software Engineer’s Blog

Software Engineering weblog

First sensible discussion on software testing after a long while

I happened to listen to a CAST 2012 lecture “Get the Balance Right: ATDD, GUI Automation and Exploratory Testing” in You Tube; an interesting one in the sense that it highlights essentials from practitioners point of view rather than riding on marketing hype and mundane technical jargons.

It is probably the first sensible one in software testing after a long while.  There is unfortunate explosion of jargons which complicate and hinder rather than help improve software testing as a specialization. My personal observation is both hype and jargons more to do with marketing/business needs of consultants and tool vendors rather than the subject matter itself.

July 24, 2012 Posted by | Software Quality, Software Testing | Leave a comment

Making of a professional software developer!

I came across an interesting lecture on professional software development by Robert Martin, a promotion part of video lecture series on clean code. I would recommend every software developer, and aspiring ones, to listen to. I believe that you will find this as quite thought provoking, and inspiring, just as his many other lectures are.  You would find it gently nudging you out of comfort zone into challenges of evolving into a true professional

Head count of manpower involved in software development has multiplied manifold from the time I started my career in software development more than two and a half decades back. Technology involved has changed, and software development environment has changed as well. World of software, and its role in the world, too has changed quite a lot since then…. and, as software reached out to every walk of life,   complexity and expectations too has increased manifold.

As we have reiterated many times over, software is essentially a construction in mind in first before it is executed in computer. It gets created in the minds of users, customers, developers, testers, … and often these do not connect breaking dynamic equilibrium of balance as software evolve. Making it still harder, complexity and disconnect increases exponentially with increase in the number of minds involved. It does not make any sense to wish these complexities away. These are here to stay. It can only get more complex and challenging, as we depend more and more on software.

Key to being a professional is to get on top of these. That is, a true professional would stand up for what he believe in, what he likes to do, take up the initiative, own up the commitment and deliver to the commitment. A true professional will see commitments as extremely important, not a casual word. We work as we work as a team, and a whole chain of commitments depends on your commitment. Many business, and many lives, depends on it and if commitments are not honored all of them are affected. It is your responsibility to see that commitments made by you are honored within time, budget and quality expectations.  That is, you are absolutely in charge of the situation, rather than its victim.

Note: Video of interviews with a super star from Indian film industry and another one with a master batsman from Indian cricket embedded here, both worked their way up fighting many odds. Both are involved in a profession which calls for individual excellence and team work for success. Both are professional who made indelible in their space, and are reflecting back on their rich experience. I believe spirit of professionalism cuts across many disciplines. It may differ on details but fundamentals remain the same. It is about conviction, self belief, working hard for what you believe in, working as a team and and winning against many odds, in the right spirit

I believe, technologies, processes, methodologies and tools have evolved to a great extent by now and these can help us address the key challenges, if we can put these together in the right way, as people/team enabler. Well, it is important to get it right.

Also, it is important to stay clear of dogmas, and realize that when we direct attention towards moon by pointing in that direction, the pointing finger is not moon. It might sound trivial but it is common to see finger being confused as moon. What do I mean by that?

I have seen process quality standards like CMMI degenerating into a compliance ritual. Insistence (by whom? It is interesting to know) on excessive documentation leads to outdated, and even lack of (gets postponed as it is time consuming), documentation. Later documentation is done purely to satisfy auditing needs. That is, an initiative intended to help you manage collapse on its own weight. The real problem is not with CMMI but in its adoption

I have also seen free and honest communication getting compromised in so-called ‘agile’ environment with regular meetings turn into witch hunting and ‘save my skin’ interactions. That is, the term ‘agile’ gets stripped of its core values and gets used as a matter of convenience rather than any good. Again, what fails is not ‘agile’ but its adoption

Automation initiative, that starts with purchase of a commercial software for software development, get stuck in learning some esoteric aspects of the tool rather than addressing true automation needs. Again, problem is not automation rather how automation is approached and implemented

It is curious to see the patterns of wrong adoption repeating itself. While technologies, processes, methodologies and tools can help us in addressing key challenges, often, it is the related technical details grab attention through advocacy of vociferous loyalists and marketing machinery, rather than applying them right. The fact that these are enablers in the first place is conveniently forgotten

Looking around, it look forward to a phase in software development, a phase that physics had gone through between Galileo Galilei and Isaac Newton … a phase of consolidation, period of drastic and intense changes with far reaching impact. We have seen some of these continuing even into early 20th century through Albert Einstein, Werner Heisenberg , et al…. and as an industry, we continue to deal with more unknown factors than known ones, till the dust settle

I hope to see software development eventually settling down to become a profession, in its true sense… It has changed over years but still it needs to go a long way before it can truly be called a responsible profession.

April 21, 2012 Posted by | Agile, Business, Collaboration, lessons learned, Management, Sociology, software engineering, Software Engineering Career, Software Testing | Leave a comment

Life cycle of a test case

An interesting question on “”States” of a Test Case” in Software Testing & Quality Assurance group in Linkedin. This got me reflecting back on my test management practices.

Following are my comments:

I presume that question is not limited to test case execution. In such case, my suggestion would be to consider what I call ‘life cycle of a test case’.

Some of the states in the life cycle of a test case would be:
1. Identified: Test case is first identified in consideration of various factors. At this stage, test case may have only the name and description.
2. Designed: Test case is further designed with details and elaborated with test procedure/manual test script
3. Design-reviewed: This is a state where test case designed is reviewed and accepted.
4. Executed: Test case is executed.
5. Result-reviewed: Result reported by a human tester or a tool may require moderation
6. Closed: Test cases no longer valid

As we progress, some test cases may get further refined into many related test cases and some may go obsolete overtime. Maintaining state and related information helps in effective test management

December 22, 2009 Posted by | software engineering, Software Quality, Software Testing, Testing | Leave a comment

Cheese is moving again!

Landscape of world around is changing drastically with innovations like Sixth Sense, Project Natal , and multi-touch man-machine interfaces. Software is opening up new frontiers in collaboration. What is more, Cloud computing is changing the deployment and usage model of software taking it more towards a service paradigm.

I believe, these augurs well for the world at large as it brings technology closer to people. For me? I have different hats. Good for most hats but not so good for others

It is fascinating for the curious onlooker in me. It is good for my business as it provides new possibilities in improving my customers’ business. It is good for software developer in as I get to work with something new, different and probably even unique. It is a new challenge for the architect in me, as I grapple with the unknown.

It alarms the tester in me. I know, I will be in the middle of it in no time at all; even before the world comes to terms with it. The world understand the need for architect, developer and user to learn and adapt but the tester is expected to get into the situation and has to come to terms with it on their own. For instance, what are the techniques that hold good? Where are my tools?

Well, we like it or not, the cheese is moving. I am diving in…. better to be proactive than reactive, right?

December 1, 2009 Posted by | Agile testing, Natural User Interface, NUI, software engineering, Software Quality, Software Testing, Surface, Testing, User Experience, UX | Leave a comment

Times they are a-changing!

I am thrilled to see a game changing technology “Project Natal” from Microsoft. Does it sound like an exaggeration? Watch it action to believe

It is a disruptive technology that is set to change world of gaming and the world of computing. Life will not the same any more! Are my friends in business analysis listening? Demands of your customers would be asking for more! Are my friends in architecture/design listening? Possibilities in usability/user experience  is set for a paradigm shift! Are my friends in software testing listening? How are we to test this? You have new challenge in hand, if your hands were not full already!

October 9, 2009 Posted by | Game, Game Architecture, Game Engine, Gaming, Microsoft, Microsoft Natal, Natural User Interface, NUI, software engineering, Software Testing, User Experience, UX | Leave a comment

A Magazine on Software Test Automation

Though software test automation has been around for quite some time by now, success with test automation is far and few. Test automation space is replete with marketing hype, technical jargon, and claims of “silver bullet” solutions. Adding to the woes are idiosyncrasies of test automation tools used. Scene is sufficiently confusing to an innocent but curiously enticing to the gullible.

In my experience, failures are partly due to i) expectations based on hype rather than facts from the field, ii) half-hearted but expensive approach to automation as an extension of manual testing and iii) lack of business focus. These are, by no means, unique to software test automation; we have seen this repeated many times over in the past

I think, it is time for the dust to settle with increased demand for quality in software. I have come across a magazine focused exclusively on automated testing.

I am glad to see such an effort; it is need of the hour. I hope this magazine would help in harvesting success patterns, promoting knowledge exchange, scientific spirit and objective analysis in test automation space.

August 27, 2009 Posted by | Functional testing, Software Quality, Software Testing, Test automation, Test Automation Architecture, Test Automation Framework, Testing | Leave a comment

Consortium for IT Software Quality

As software permeates every aspect of daily life and as we depend more and more on software in all walks of life, quality of software gets to be of utmost importance.

World has come a long way from the early perceptions of quality as a natural consequence of following a good process. Agile community has asserted umpteen times, reflecting in manifesto of software craftsmanship and agile manifesto, quality of software that add value to users in their context is far more importance than religious, and often dogmatic, adherence to process.

People, process and automation are three different, orthogonal but often inseparably interrelated, factors of what goes into making of a quality software. These form different dimensions that call for attention of a manager of software development project, and not conflicting goals as they are sometime made out to be. Managing software development project is not progressing on one dimension at the cost of another but working with a dynamic balancing of these dimensions through the course of project

Three dimensions of software quality

Three dimensions of software quality

It is interesting to note, in this context, emergence of a consortium focused on software quality. It is a step in the right direction. I hope that this would help in making life better for its users and customers

August 20, 2009 Posted by | Agile, Product Engineering, Software architecture, software engineering, Software Factory, Software Quality, Software Testing, Testing, Uncategorized, Unified Process | 1 Comment

Presenting success at RSDC 2009

It feels great to selected to presented at IBM Rational Software Development Conference 2009. Unfortunately, due to personal priorities, I would not be able to make it to the conference.

Success (QM15: Effective Test Automation of SAP Implementations) would be presented by my manager Vipin Kumar (Managing Director and Software Engineering Evangelist, Astra Infotech Pvt Ltd), who has played a crucial role all through for the success of this project

March 5, 2009 Posted by | Functional testing, IBM Rational, Rational, Rational Functional Tester, Rational Quality Manager, Rational Software Development Conference, RSDC, SAP Testing, Software Testing, Test automation, Testing | Leave a comment

Some observations on software testing and test automation practices

Following are my comments on “What do you think about the future of Software Testing?” in International Association of Software Architects group in Linkedin

Software testing was undervalued but no longer. Yes, there are people who undervalue software testing .

There is a tendency to overlook important of testing in immature software development environments. This typically happens in organizations or projects in a reactive (or worse, firefighting) mode. Immediacy of business imperatives in such cases being to churn out code (as if quality is of someone else’s concern….. An interesting thought in this line ).

Testing is an integral part of any development activity, and hence an integral part of software development as well.

Test driven development is a great way forward, it brings focus on testing quite upfront and makes it almost inescapable

I agree with the bottom line from Stephen with a minor refinement: Adherence to craftsmanship and good coding practices, plus the use of a good automation tool. I would also like to add agile values and principles to the list.

Refinement being “good automation” rather than “good automation tool”. What we need is automation, and tool is incidental. Purpose could also be served by in-house automation effort. In-house automation could also result in a tool. I am making refinement as purchase of tool generally comes with expectation of a “silver bullet”

February 4, 2009 Posted by | Agile, Agile testing, Software Quality, Software Testing, Test automation, Testing | Leave a comment

Testing Alone Doesn’t Guarantee Quality

Following are my comments on “The Application Quality Dilemma: Why Testing Alone Doesn’t Guarantee Quality?” in Software Testing & Quality Assurance group in Linkedin

A good quality software cannot be produced by processes and tools; it can only be done by people. Hence, software development is essentially a teamwork.

Process, standards, methodologies, best practices and tools are only enablers.
It is naive to assume that testing alone can guarantee quality software. After all, examinations alone does not make a great student come out of school/college!

Testing is essential but one of the many such essential activities that goes into making a quality product; not just software.

I agree with above statements:
Testing is a function that the business cannot do without

It is important by the companies to acknowledge that testing is a critical part of the SDLC… that should be done with clearly defined responsibility, authority, resouces and ownership

Test tools alone does not guarantee anything other than a cost to the company… I agree that vendors have contributed to the testing tools but I believe unrealistic expectations are also part of the problem…

This is something I had been working with over more than 7 years now and, hence, close to my heart:

* Expectations, misunderstandings and disappointments related to test automation is common in many first time automation efforts. Actual upfront effort involved is hardly realized upfront by novices

* Tool is only a means for an end; end being test automation which in turn is for better productivity (sometimes misinterpreted as elimination of human effort), repeatability, predictability and control

* One of the first tasks in my test automation assignments has been setting the expectations right

* What is being automated is testing, and not test development

* Just as a development environment helps a programmer in development of program (but does not develop program replacing programmer), testing tool can help a tester develop test (does not develop test replacing tester)

* I have not seen any test automation (or any automation project, for that matter) successful without setting the expectations upfront

Tailpiece: A typical (read “failed”) test automation project reminds me of a machine to help men eat in the Charlie Chaplin movie “modern times”… We seem to have invented a software equivalent in test automation


February 4, 2009 Posted by | software engineering, Software Quality, Software Testing, Testing, Uncategorized | Leave a comment