Pages

Tuesday, May 17, 2011

Software Testing Classics : Bug Advocacy by Cem Kaner

What is “Bug Advocacy” all about?

The title pretty much says it all (I hope), but let’s take a look at some key excerpts from this 100-page masterpiece to find out more. First the, the premise:
  1. The point of testing is to find bugs.
  2. Bug reports are your primary work product. This is what people outside of the testing group will most notice and most remember of your work.
  3. The best tester isn’t the one who finds the most bugs or who embarrasses the most programmers. The best tester is the one who gets the most bugs fixed.
  4. Programmers operate under time constraints and competing priorities. For example, outside of the 8-hour workday, some programmers prefer sleeping and watching Star Wars to fixing bugs.

A bug report is a tool that you use to sell the programmer on the idea of spending her time and energy to fix a bug.

Motivating the Bug Fixer
Some things that will often make programmers want to fix the bug:

  • It looks really bad.
  • It will affect lots of people.
  • Getting to it is trivially easy.
  • It has embarrassed the company, or a bug like it embarrassed a competitor.
  • One of its cousins embarrassed the company or a competitor.
  • Management (that is, someone with influence) has said that they really want it fixed.
  • You’ve said that you want the bug fixed, and the programmer likes you, trusts your judgment, is susceptible to flattery from you, owes you a favor or accepted bribes from you.

Overcoming Objections Via Analysis of the Failure

Things that will make programmers resist spending time on the bug:

  • The programmer can’t replicate the defect.
  • Strange and complex set of steps required to induce the failure.
  • Not enough information to know what steps are required, and it will take a lot of work to figure them out.
  • The programmer doesn’t understand the report.
  • Unrealistic (e.g. “corner case”)
~SA

Tuesday, April 19, 2011

Agile and Cloud - Made for Each Other

Agile and the Cloud: Perfect Together:

Agile is a style of software development that places new capabilities in the hands of users, as and when they need them—almost as rapidly as they need them. It does this by stripping the project requirements down into achievable component parts and then focusing on each part individually and single-mindedly, full of intent, energy, and drive. As each part is developed, it becomes an “iteration,” a release of useable software that can be made instantly available to users instantly. While they start using it, the development team moves onto the next step, the subsequent iteration. At every step of the way, product owners, developers, and users emphasize collaboration. Everything is transparent to the client and the users. And, one of the most valuable aspects of all is that no useless functionality is built for users.

Agile and cloud computing are actually highly parallel concepts, both in terms of their methods and their aims. Perhaps the best way of summing up the benefits of agile development methodologies is to examine the definition of the word itself: characterized by quickness, lightness, and ease of movement; deft and active. The cloud can catalyze the development process. It’s just like the atmosphere; it’s everywhere. This means that new applications can be made available to users instantly, the very second a development team has completed them. There is no need for drawn-out deployment procedures, patches, and reinstallations. Users can jump right in and start using. Integration issues are overcome, change management is addressed, and risks are minimized.

Putting agile together with the cloud dramatically accelerates an organization’s improvement pace. The working style of agile is tied up with user involvement, drawing users right into the heart of the development process. Functionality is developed as the user wants it, how he wants it. As developments move along in cumulative steps (iterations), the features and benefits can be rationalized and reprioritized as each project unfolds. There is no waste—either of time or money. And just as soon as everyone agrees that the application is ready, off it goes into the cloud where everyone can start using it.

Agile development in the cloud now gives greater control over process innovation and more strength to a company’s competitive edge than ever before, and organizations in every vertical market now have exciting prospects.