Sunday May 11, 2008

Where are the bulk of your test efforts focused on ? Am sure most testing teams would be focused on testing a product's functionality or at least a majority of the time spent in testing could be involved in testing for the functional requirements; which is not a bad thing at all ! But, how much focus is given to testing the non-functional requirements, assuming there are a set of well defined non-functional requirements and the same has been suitably incorporated into the product and tests have been developed for verifying the same.

What are the common non-functional requirements and why do we need to even spend time talking of them let alone have specialized resources dedicated and assigned to test them ?  Put it simply, assuming a condition of cetirus paribus (all other things being equal and similar functional features in two competing products), non-functional requirements often play a significant role in differentiating between a product that is well received by customers vs one that may not do well in the market place. Some of the key non-functional requirements include Usability, Performance, Security, Interoperability & Compatibility.

As an end user, how many of us would be willing to use - a multi-user application that has tonnes of great functional features but simply crawls or frequently hangs up when several users try to use the system; an application that has sensitive data but is fairly easily susceptible to security breaches and exposure of sensitive information; a web application that works best only in a limited set of browser types and versions on limited platforms and unfortunately there are users using and comfortable on other verions of browsers and platforms or even a scenario where usability was not given much thought to and users feel frustrated trying to use the application's features on offer .... it is not difficult to envisage many such scenarios which can drive users and customers away  into the out-stretched arms of the competition and functionality is'nt the one aiding this move.

While common reasoning states that a product that does not meet its functional requirements is incomplete, do we do the same for the non-functional requirements too or do we agree to address non-functional requirements / issues found in an upcoming patch or subsequent release? However, this line of thinking exposes the chinks in the armor when the product is being deployed at the customer site or when it is moved to production. A product that is'nt suitably performance tested and does not meet well laid out performance criterion, could fail miserably in a production deployment. Similarly with other items such as security, usability or compatibility. It is'nt hard to visualize the impact each of these non-functional items can have in a real usage scenario.

Non-functional risks need to be evaluated and considered during project planning. During requirements phase, both functional and non-functional requirements need to be spelt out and considered by both development and testing teams. Also, meeting non-functional requirements does involve a certain degree of trade-offs and arriving at a suitable balance between focusing on non-functional requirements vs. other areas of the product is needed.

Saturday Feb 16, 2008


This is a work-in-progress document and the purpose is to expand on the test types listed in a previous entry. Will keep updating as i find time to do this.

  • Acceptance testing
also known as User Acceptance Testing (UAT) is generally performed by customers or user representatives.Sometimes, the product team may perform these tests too. UAT tests can be both functional as well as non-functional.  These tests are performed after Integration & System testing.

UAT is supposed to be the final level of testing and verifies whether the product meets the agreed upon product acceptance criteria. A relatively small set of test cases are selected to be executed as part of the Acceptance tests. These are not meant to unearth new defects, instead they verify meeting of the product acceptance criteria. The tests that are part of UAT should have already been covered as part of the product test team's testing so that no late surprises emerge when the UAT is run by customers. Failure of acceptance tests at the hands of the customer can have serious implications including - the product being rejected by the customers, re-work & delays, penalties and so on.
  • Ad hoc testing
as the name suggests, this type of testing is generally termed as un-planned testing and does not need to use any formal testing techniques. It may also be termed as monkey testing or random testing in view of its nature and approach. An important attribute in this type of testing is the precedence of test execution over test case development. The tester's gut-feel, intuition, any past experience with similar products, any related domain or subject matter expertise are very much valued and leveraged during this type of test activity.

Ad hoc testing should be a part of a sound overall Test strategy to complement other types of planned test activities. It is not meant to be used in isolation and as a sole determinant of a product's readiness to ship. Some of the attributes of ad hoc testing that tend to endear it to testers include, speed and pace of execution, the range that can be covered and the sheer flexibility inherent in this approach. While all of these may make this seem like a totally unconstrained random activity, it need not necessarily be so. We can introduce some elements of planning into this seemingly unplanned test approach. One of the factors that may be constrained or limited is time. The start and end times for this test activity may be defined. In addition, the general direction of testing, the broad area(s) to be focussed upon may also be specified. The exact actions, the screens and features to be exercised, the sequence of steps to follow are left to the individual tester's judgement.

While an earlier statement indicates that test execution precedes test development, it does not absolve the tester from developing test cases. It is important to translate tests performed into test cases that will then become part of a formal test suite to be run as part of planned testing. The idea is not to end up repeating the same set or type of tests every time ad hoc testing is performed. Once a set of new tests are identified they need to be part of your test suite to be executed as part of your regular planned test cycle. It is recommended that during ad hoc testing, tester's make notes of actions performed, observations and any relevant data that may be used to later develop test cases and help with analyzing any issues that may crop up.
  • Aesthetics testing
it is said that, Beauty is in the eye of the beholder. In the case of our products, it is in the eyes of the users of our product. Aesthetics testing involves testing of the User Interface and focussing on the beauty, the product's looks rather than the products functionality alone. It is a part of Usability testing but often gets relegated to the back burner due to focus on attributes such as the ease of use and the user's ability to quickly accomplish tasks. One of the factors that go against any serious focus on product aesthetics is the notion of what engineers think is "good enough" for customers. Added to this is the primary focus on feature functionality and technical wizardry, which is good and essential. However, presentation is definitely important and should not be ignored. Bugs in this type of testing tend to be termed as cosmetic issues or even at times trivial issues which in the heat of approaching deadlines and schedule pressures invariably tend to be deferred or lowered in priority. 

Aesthetics testing covers the various elements of the UI including display styles, fonts, colors, messages, windows, icons, menus, pointers, etc. An application that follows good aesthetic principles helps create a good impression on the users as well as positively influences product acceptance. The product also tends to look and feel like an output of a well designed and professional endeavor. Frankly, how many of us would be inspired to use applications that have odd color schemes and display styles, unsuited fonts and such other cosmetic glitches which may not affect functionality but make the product not pleasing to view.

Considering the subjective nature of beauty and aesthetics, it helps to consult with a representative sample of potential users and folks such as professional UI designers, human-computer interaction experts, graphic artists, and also try to conform to commonly accepted & user expected interface design guidelines.
  • Buddy testing
this refers to the practice of pairing up of a developer and tester as buddies to test a piece of code or functionality. This type of testing is best applied in the early development stages after unit testing is complete and prior to checking in of the code. At this stage of product development, buddy testing may employ a variety of white and black box test techniques as appropriate to test the artifact that is available.

Buddy tests aim to avoid duplication of unit test coverage and endeavors to cover areas that may not have been addressed in unit tests, such as the user interfaces. Other important areas that buddy testing is expected to cover include, reviews of coding standards & practices, code walkthroughs, inspection and development of test scenarios to maximize coverage around statements and paths in the code. A beneficial side effect of buddy testing is greater clarity gained around product specifications which help the testers develop better tests and development to gain answers to make any needed design changes early.

Due to the early detection of issues that is possible with this type of testing, Buddy testing is often termed as "preventative" type testing where the aim is to unearth defects early in the development cycle and have them addressed when its generally cheaper to do so than in later phases. Any issues that are raised are discussed and after agreed upon changes are made, the code is checked-in. This buddy tested code is integrated and later delivered to the functional testing team by which time the specifications are clearer and there is an assurance of greater quality in the product.
  • Pair testing
involves a pair of testers testing a feature or module together on the same machine. During the actual testing process, while one person tests the feature, the other one makes note of the observations as well as provides additional perspectives. The expectation is that having two people test the same feature together can help leverage their different sets of views, ideas and unique perspectives to have the feature tested better than it would have been if only one tester had tested it. Pair testing may also be used to help quickly ramp-up a new comer by pairing him with a more experienced tester.

While all this sounds pretty good, a point to be remembered is that in some circumstances it may not be possible to derive synergies from this process. Examples include, pairing testers who do not get along well, pairing a junior and senior tester when there's a fast approaching deadline to be met, etc.

Sunday Feb 03, 2008


Here's a little sneak peek into the wonderful world of Quality & Testing at Sun's India Engineering Center (IEC) based at Bangalore. Did you ever realize that the IEC has a group comprising ~ 200 of the finest & most talented Quality Professionals on the planet, all based at one location, collaborating, thriving, creating & sharing best practices, working on a mind boggling range of technologies and areas spanning the entire gamut of Software, Storage and Systems, employing the best of breed tools and state-of-the-art techniques?

If you are wondering whether such a conglomeration could even exist ... the answer is, a resounding Yes! Not only does this group exist, it is today a very vibrant & thriving forum and is called "The Quality Forum" based at the Sun India Engineering Center, Bangalore.

Now that i've mentioned about the Quality Forum, let me give a little more info on this special group. There's so much to be said about this forum, but rather than continue harping about the Quality Forum at the IEC, here's a brief sample of some of the activities that the forum is currently driving - the Sharing initiative which enables sharing between Professionals across the various teams that are part of the forum, Training programs for Quality Engineers especially the folks who are relatively new to Testing to help accelerate their evolution into expert Testing Professionals, Participation at Industry conferences, Conducting Bug bash / Beta testing events across the entire forum, Quality & Testing events to show case the activities being performed by various groups, and many more.

This quote by William Foster seems pretty apt to say here ... “Quality is never an accident; it is always the result of high intention, sincere effort, intelligent direction and skillful execution; it represents the wise choice of many alternatives.”

Oh ! just one other thing that i thought was obvious but should mention now ... hey, I too am a proud member of this turbo-charged forum ! and am having a fantabulous time being part of this amazing community.

I recently received a query from a friend about Test Strategy and asking to shed some light on this topic. Whilst there is no dearth of information on this subject, sometimes you can end up with too much information and my good friend was keen to have a brief summary of the topic. Well, considering that its been a while since i've posted anything in the QA & Testing section, I thought, this reply to my friend could serve as fodder for a blog entry (what was that about two birds and a stone ...). Without much ado, here's what i intend to tell my friend.

The Test Strategy :

Is also referred to as Test Approach and is basically a plan of action. You could also call it a road map or blueprint that seeks to provide direction to your test efforts and tries to clarify how Testing will be performed; put another way, the Test Strategy communicates how you will go about achieving your Testing goals.

Some of the areas that the Test Strategy clarifies may include, the types of Testing to be performed, the resources needed, characteristics of resources required (e.g. in case of human resources, the skills needed, experience, etc.), dependencies and environmental needs for testing, the configurations / scenarios / matrix to be tested, the when of Testing (time lines & schedules), criteria for measuring success of testing, other prerequisites for testing, scope / extent / boundaries of testing, any tools needed, defect tracking / management, any risks perceived / analysis,  any  other items as may be  needed / apt for your specific product / project.

Developing a Test Strategy involves asking a lot of questions and communicating with various stakeholders as you piece together the elements of your specific plan. One of the positive outcomes of this exercise is gaining a better understanding of stakeholder expectations from Testing and helping avoid expectation mis-match.

An obvious attribute of a Test strategy is that its not etched in stone, meaning it can and most likely will undergo changes / updates. You start developing your strategy with the best information available at a given point of time. Of course you can wait until you have all the information you need but it just might be too late to be planning. Start with what you have and try to get at least the high level pieces  together. You can add the details as you move ahead and gain more information.

As Charles de Gaulle said, “You have to be fast on your feet and adaptive or else a strategy is useless."

Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

Monday Oct 08, 2007

Testing as a career offers multiple paths for testers to traverse in pursuit of their career goals and aspirations. Testers generally take the regular path from being a junior engineer to fairly senior quality engineering positions such as test leadership roles before coming across a fork in the road, one path leading to Management and the other pointing to a Technical growth path. While the Management career path is fairly well known and Managers seem like a dime-a-dozen!, the Technical path tends to seem a little unclear especially if you have few Senior Technical Leaders in the Testing space to look upto in your organization. The purpose of this post is to hopefully shed some light on the Test Architect role which is part of the Technical growth path in Testing.

Without much ado, lets dive right in.

The Test Architect (TA) role is a senior position in the organization and is treated on par with equivalent Management positions in terms of rewards, recognition, visibility and influence. However, one basic factor that distinguishes a TA from a Manager is the absence of direct-responsibility for managing people. While Management tends to have people management as a core feature of the job, the TA does not directly manage people. However, this in no way lets the TA off the hook, so to speak, from influencing, mentoring, coaching and providing direction to members of the Testing Organization - all very important responsibilities of the TA.

The Test Architect -
  • provides Technical Leadership and Strategic Direction to the Testing Organization (TO)
  • is responsible for Test Strategy formulation
  • helps Formulate & Develop effective Test Architecture per organizational needs
  • is Technically responsible for all the Testing performed by the TO
  • is the foremost Technical Authority and is responsible for the overall Quality of deliverables across all parameters, both functional and non-functional including performance, security, usability, etc.
  • is expected to pro-actively analyze current processes and practices and suggest/ drive improvements. Also, defines processes as needed
  • has wide-reaching scope, impact and influence extending beyond the confines of the TO and spans across the entire product organization
  • is the counter part to the development architect
  • is involved in driving organization-wide Quality Process initiatives and their implementation to ensure Quality of deliverables
  • maintains a “big and complete” picture view of the product, its dependencies, organizational goals, technology arena, etc. and helps guide & direct the functioning of the TO appropriately
  • influences the product organization's future direction, strategy and planning
  • collaborates effectively & on an on-going basis with all constituents involved in product development & release activity including development, testing, technical publications, marketing, program management and other entities to ensure execution & deliverables per plan
  • is involved in customer engagements and provides customer facing organizations with necessary technical product support in making presentations, demos, pocs, etc. Also, receives and analyzes existing customer feedback to identify gaps as well as work with deployment / sustaining organizations as needed. Customer engagement activity also spans alpha / beta trial opportunities and acts as a liaison with customers and partners while ensuring Test strategy is aligned appropriately
  • helps with Test plan development
  • is responsible for design & development of the TO's Test Automation framework / harness and any in-house tools required. Where tools do not fully meet requirements of the TO, the TA writes code / develops components that can extend available tools or even design & develop tools as needed
  • is involved in understanding Business requirements and works with the development architect to translate requirements into solution architecture designs. Reviews requirements and seeks clarity as required, participates in product design reviews and works with the development architect and development team to make any design improvements and refinement as needed. Also helps incorporate Testability requirements into design
  • Analyzes competitive products and technologies and makes appropriate suggestions (may use demos, pocs) to influence product / technology direction
  • has overall product knowledge and is able to guide both junior and senior team members
  • influences Technical direction and use of technologies after making necessary evaluations
  • involved in hiring activities for the TO and mentoring of TO team members
  • pro-actively seeks to make continuous improvements to Test coverage, execution and automation
  • is results oriented and has a high degree of accountability, commitment and responsibility. The expectation is that involving a TA in a project is a guarantee of obtaining positive outcomes
  • participates in test planning for all products handled by the TO and owns the test artifacts such as test specs, code, etc.
  • Growth upwards from a TA level is towards a more senior role with wider scope of activity & influence across the organization. Needless to state the obvious, there is considerable enhancement in responsibilities and charter as progress is made upwards on the growth path
Some of the attributes expected of a Test Architect
  • Extensive Technical skills covering Product, Technologies and Competitive knowledge. Sound knowledge of domain / areas being handled is essential. Its not sufficient to be a specialist in any one area or technology and requires a wide and fairly deep understanding of a gamut of technologies and tools
  • Knowledge of current industry wide Quality & Test processes and practices, Tools and techniques
  • Ability to work with teams. This point cannot be emphasized enough since at this level, the last thing that would be acceptable is silo behavior or merely trying to be an individual star performer. Being able to get the team to perform at an outstanding level is absolutely essential here. The “ability to influence” despite not having direct reporting relationships is very key. In this position, a high EQ is as much a necessity as a high IQ. The ability to collaborate and co-operate is important
  • Excellent communication skills – within and outside of the TO, across teams, with customers – both horizontally and vertically, is important. Effective negotiation skills are very important too.
  • Another facet that is extremely important is an excellent working relationship with the Manager. No i don't say this because i'm viewed as being on the Management side ! The fact is to be a successful TA, requires working in tandem and close co-operation with Management, keeping Management abreast and updated of developments, seeking and providing inputs and feedback, regular reporting, etc. is very important. This attribute cannot be stressed enough
  • Ability to focus and prioritize is important. Understanding the distinction between the urgent and the important and effectively prioritizing tasks is key
  • Needs to focus on the explicit & implicit customer / user needs
  • Self-management is a key attribute expected of a TA. Being able to work without the need for follow-up or “too much” management is important. The TA should be self-motivated and a self-starter. No, this does not absolve the Manager of the responsibilities of managing the TA as needed !, but a TA should require very little following up to get things done. The expectation is when a TA is assigned to a product, project or specific area, positive & agreed upon results are guaranteed almost always
  • Ability to motivate self and others is important. Also, vital is being able to set a good example for the other members of the TO to follow
  • Ability to set goals is also key. In many instances, the TA will need to define and set goals including stretch-goals as appropriate
  • Patience and a touch of humility is valuable, especially in all dealings with team members. This is especially true when trying to mentor or guide other team members, the ability to articulate in ways that are understood by the listener at their level is necessary while also possessing good listening skills. The humility to acknowledge need for continuous learning and to undertake a program of learning to constantly update skills and keep abreast of current developments in the industry is vital
  • Ability to strategize and look ahead and at the big picture
  • A great deal of maturity, accountability, high degree of integrity, highest levels of pro-active behavior, ability to take initiative and professional behavior is naturally expected of a TA
  • Sound Project Management abilities is important
  • Software Analysis & Design knowledge/experience is needed while also having a solid background in Software Quality & Testing. Must have hands-on experience having performed both functional and non-functional testing and be able to review requirements, design and even code as needed
Am hoping the above is useful in gaining a general understanding of the Test Architect role and some of the expectations surrounding this position. The above list is in no way complete nor a full representation of the responsibilities / requirements of the Test Architect role. Each organization and even groups within the larger organization would have its own expectations that form part of the Test Architect's charter. However, most or all of the elements listed above would be present in one form or the other.

Signing-off this post with a short quote, "Successful people don't do great things, they only do small things in a great way."

Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

Thursday Sep 20, 2007

Here's an attempt to talk a little bit about "Usability Testing".

We begin by taking a quick look at the term, Usability. According to the Usability Professionals' Association, "Usability is an approach to product development that incorporates direct user feedback throughout the development cycle in order to reduce costs and create products and tools that meet user needs."

Usability testing provides the opportunity to receive feedback from the very people the application is meant for. And, the consequences of building something without getting user feedback is obvious to anyone who's in the industry !

Whilst planning for Usability Testing, its easy to constrain it to be more of a "Validation" type technique. Usability testing & the information gathered from the exercise, should serve to make informed design & development decisions right from the outset, thereby acting in more of a "preventative" role. The idea in the case of Usability testing is to test early & test often. Usability testing lets the design and development teams identify problems before they are deeply entrenched. The earlier those problems are found and fixed, the less expensive the fixes are. As the project progresses, it becomes more and more difficult and expensive to make major design changes. The more you test and change based on what you learn, the more confident you can be that your application will meet your objectives and your users' needs when it is released.

An iterative process involving developing prototypes, testing it with users, analyzing the results, making needed changes based on the results and repeating the test, analysis and revision cycle is the recommended way to produce applications that are more usable (and acceptable) to users. We could also probably say that, in the initial stages of application development, users would be called to perform tests that are more "Exploratory" in nature. This feedback helps clarify direction for interface design, navigation, etc. In later stages, prior to release, "Validation" type Usability tests are performed to validate that interfaces and design are "usable" and feedback from earlier stages are incorporated.

The folks who should actually be doing Usability Testing (executing tests) should ideally not be anyone associated with the product or organization. A profile of potential subjects (folks who will perform Usability Tests) should be prepared that mimics end user attributes in as fairly and representative manner as is feasible. Based on this profile, subjects may be sourced from market research, temp or contracting agencies.

During Usability testing, representative users try to find information or use functionality on the Web site / Application, while observers, watch, listen, and take notes. The purpose of a usability test is to identify areas where users struggle with the application and make recommendations for improvement.  The most likely goals in Usability Testing or areas that are monitored and measured include, the Time (taken to accomplish specific scenarios or tasks), degree of Accuracy (covers inaccurate menu or navigation choices, errors and lack of clarity or misunderstandings), the Success (in accomplishing the set tasks wherein users are able to complete the scenario they were asked to perform using expected steps) and importantly, Satisfaction of the users (broken down and measured per area such as navigation, information search, etc.)

If you are developing an application, your product must allow users to do their tasks at least as quickly with as few errors and as much success and satisfaction as their current way of working. Ideally, it should let them be more quicker, more accurate, more successful, and more satisfied. Otherwise, there's little chance of customer delight.

That was a brief overview of Usability Testing. While it may not address all aspects and intricacies of this subject, the intent is that it hopefully arouses sufficient curiosity and interest for folks who are not familiar with this subject, to go and make your own exploration.


Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

Thursday Sep 06, 2007


The different "Types of Testing" are listed below.

The list should provide a fair indication of the breadth of activities that a Testing Professional may engage in .. did someone ever say that Testing was not challenging or there was very little to do in Testing ? I can hardly think of any other domain that offers so much leverage and affords such wide opportunites to specialize in & work on !

The list above, hopefully covers most of the "Types of Tests" that are generally performed. There may be a few that i might have missed ... let me know if that is the case and I'll be more than glad to add / edit them.

If you are new to Testing, my suggestion is to make it a point to look up each type of Testing (over the course of time at your convenience) listed above and get some information on each of these types.

Few testers end up actually working on all of the above "test types" during their Testing careers, but as a Quality & Testing professional, it helps to know your domain.


Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

Monday Sep 03, 2007

We look at a list of methodologies used in the process of designing test cases. The obvious questions that folks new to / not too familiar with testing tend to ask is ... why Test Case Design and why all of these methodologies ?

The answer to the why is based on a fundamental premise of Software Testing i.e. "Complete" or "100%" testing is not possible.

Yep, sounds a little negative to the uninitiated, but thats the fact. The derivative of the above statement implies that "all" Testing is incomplete, although the degree of incompleteness varies. In reality, testing is performed within various limitations and boundaries defined by variables such as resources, time, cost, etc.

Given these constraints, Testers need to come up with a set of Test Cases that has the highest probability of unearthing the greatest number of defects. This is where Test Case Design plays a significant role.

In this post, we'll keep things short and only take a really quick, very high-level view of the methodologies. These cover both Black and White box techniques. Here they are ...

1) Equivalence Partitioning
2) Boundary Value Analysis (BVA)
3) Cause-Effect Graph / Decision Table
4) Error Guessing
5) Statement Coverage
6) Decision Coverage
7) Condition Coverage
8) Combination of Decision & Condition Coverage
9) Multiple Condition Coverage
 
We'll look at some of the above in upcoming posts. For now, if you are really keen to deep dive, Googling might be a good idea or better still grab a book on Software Testing and let the concepts soak in. One other thing since we are on this subject of Test Case Design ... while it sure is important to test to check if the program does what its supposed to do, its also very important to test to check if the program does what its not supposed to be doing ...


Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

Sunday Sep 02, 2007

What's the "best" technique to estimate the time it will take to do something .. especially when it comes to Testing Software, this is one of the questions that gets asked quite a bit ... so whats the "best" answer to give to this question ?

Depends ... a likely and quite a workable + stick-able answer at times, might seem to be to go and actually ask the person who will be doing the actual testing. Well, this is the first step .. once you have a reasonable estimate from the actual person who will be doing the work and who would also be held  responsible for meeting the deadlines, the next step is to address any mis-match in expectations from what the Manager "thought" it should take and what the Engineer has expected it to take.

In case of gross discrepancies, rather than dismiss the engineer's estimate, the recommended practice is to understand why and all of the variables involved in arriving at the Engineer's estimate. This could also be an opportunity for the Lead / Manager to provide any advice (only if needed) on tweaking the processes used to arrive at the estimate as well as ... getting to really know what it takes to get the work done !

Ultimately, it "helps" to get inputs from - the person with the greatest knowledge and the the person who is most likely to face the music if the estimates are not met.

So, is this the "best" technique to make estimates ? ... hmm ... let me put it this way ... think of it as one more weapon in your arsenal and use it appropriately to your advantage.


Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

 

Tuesday Aug 28, 2007

One thing thats interesting to observe when interacting with folks on the subject of testing is the use of the words - "successful" and "unsuccessful" when talking about test cases that have been executed on a particular product / feature. 

Generally, people tend to associate the term "successful" with a test case that has "passed' without encountering any bug / error during execution and "unsuccessful" with a test case that "fails" due to a bug / error during execution.

From a Quality / Testing perspective, the above reasoning sounds counterintuitive and contrary to what we should really be saying which is ... a test case that fails is in reality "successful" and a test case that passes is actually "unsuccessful".

Lets imagine this scenario - my car leaks oil, belches dark fumes, rattles and makes enough noise to wake up the dead. Sensing that something could be amiss, I decide to take the vehicle to a nearby garage to check for problems and fix them. The friendly mechanic runs a set of "tests" on the automobile. After a while (and after reducing my net worth by a small fortune), the skilled tester, oops mechanic declares that all his "tests" passed and did not identify any problems with my car. Can he now claim that the "tests" were "successful" because they all "passed" ... talk of  a 100% pass rate ?

Interesting point though .. it boils down to what you think is the purpose of testing ? Is it to prove that a program is "error-free" ? Me thinks .... ok, will save that as fodder for the upcoming posts !


Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

 

Sunday Aug 26, 2007


When an entire organization relies on the Tests of the Testers, how much thought is given to the reliability of the Tests themselves ?

The fact remains that Tests too, like the programs they are designed to test, are artifacts created by human beings .. is'nt there a saying ... "To err is ..."

So, if the applications being tested can have bugs, why would the tests / test scripts not have bugs ? Are we doing "enough" to ensure that our tests are "worthy" of testing the applications they are intended to test ?

Lets first test our Tests !



Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us

 

Friday Aug 24, 2007

The term Quality Assurance, when applied to the Testing team, is a misnomer. Its far too easy for a tester especially someone relatively new to testing, to think that the testing team is responsible for "assuring" product quality.

If the testing team is seen as the ones assuring quality, it tends to show the testers as the final line of defense, the ones responsible for "protecting" the customers from the "other group" that produces "poor quality" software. I can already envision warriors wearing flowing capes, masked faces and outrageous outfits with their swords drawn, all set to slay the dark forces of "bad quality" !

Reality tends to portray a slightly different picture ... while it is easy for us testers to assume that we "break the product", the fact is that the product is delivered to the testing team in a broken state ... oops, there goes our chance to claim credit for breaking something thats broken already ... In essence, what is being driven at via this entry, is the fact that Quality is the responsibility of everyone involved with the product and that everyone includes the Testers, the Developers, the folks creating the Documentation, PM, etc. etc.

To borrow a phrase from the Three Musketeers ... "All for One and One for All" ... un pour tous, tous pour un, if you will.

Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us
  • Is operating a System or Application under controlled conditions, evaluating the results and checking if performance meets expectations 
  • Is "Organized Skepticism"; an inherent belief that things may not be as they seem
  • Is the process of executing a program with the intent of finding an error
  • Is comparing the ambiguous to the invisible, so as to avoid the unthinkable happening to the unknown
  • Is about reducing uncertainty about the perceived state of the product
  • Is a vital support function that helps developers look good by finding their mistakes before anyone else does
  • Is a key element in determining whether a product release receives brickbats or bouquets

Commenting on Testers & Testing, a bright bulb once remarked ... "To err is human; to find the errors requires a tester". One of the jobs of a tester is finding errors a.k.a. bugs and as most Testers would probably vouch about themselves ... "Software Testers: Improving the world, one Bug at a time"

In subsequent posts, i hope to also comment some bit on the symbiotic & vital relationship between the Testing and Product Development teams, two functions which together help deliver "Quality" products. This, in addition to other topics around the very exciting and challenging subject of Software Testing.

Add to Technorati Favorites | Slashdot   Slashdot It! | Submit to del.icio.us