Tuesday, February 28, 2012

Understanding CMMI with bird-eye view.


This is the fourth of a series of How to be Software Quality Professional, and we will look two major frameworks that are widely implemented by thousands of organization. As a Software Quality newbie you don’t need to be certified in CMMI or ISO, you only need to know the basics of these standards and process improvement framework. The subsequent posts will talk over in greater detail.

As the Software Industry is growing around the globe and companies are willing to remain intact with their clientele by providing quality software solutions to them. By this willingness there comes an idea of Standards and Best Practices to win the customers or at least sustain them. In order to lower the threats of organization losing their customers some international organization produces some standards and best practices which are widely accepted and practiced around the world in every software development organization to a minimum to maximum extent. This post will describe high level overview of some common quality standards which help in implementing robust Quality Management Systems – QMS

CMMI

CMMI –Capability Maturity Model Integration, one of the robust and widely implemented process improvement standards developed by Software Engineering Institute, Carnegie Mellon University. This process improvement framework provides a five step ladder to achieve the unmatched maturity in software development industry and most of the time CMMI becomes the competitive advantage for the organizations in question. CMMI Levels and their definitions are as follows.

            Level 5:            Continuous Improvement OR Optimized
            Level 4:            Quantitatively Manage
            Level 3:            Defined
            Level 2:            Managed
            Level 1:            Initial OR Performed

In order to achieve any of the above level any organization must implement the corresponding process areas also known as Key Process Areas (KPAs). For instance, If an organization willing to achieve Level 2 maturity it should implement all the applicable process areas correspond to Level 2 (i.e. Managed). All of the levels have some specific goals and generic goals. Specific Goals are related to each process area while Generic Goals are related to individual Maturity Level.

For example, Project Planning is one of the process area belongs to Level 2; it has 3 Specific Goals namely:

  1. Establish estimates
  2. Develop a Project Plan
  3. Obtain commitment to the plan
The generic goals of each maturity levels are as follows:

  1. Achieve Specific Goals
  2. Institutionalize a managed process
  3. Institutionalize a defined process
  4. Institutionalize a quantitatively managed process
  5. Institutionalize an optimizing process

Mark C. Paulk, Ph.D (http://www.cs.cmu.edu/~mcp/) has rightly defined the need of process improvement and common misunderstanding about process framework implementation he say, “Much of the software crisis is self-inflicted, as when a CIO says, “I would rather have it wrong than have it late, we can always fix it later”.

Implementing processes standards doesn’t make you late on the project; it takes you well on the project with estimated cost, effort and quality.


Monday, February 20, 2012

Working With Passion






With Valentine’s Day just passed, love and passion were and are still in the air. Unfortunately, many people spend more than half their waking hours doing work for which they feel no passion, living a work life gloom and misery.

The passion has to be spontaneous and cannot be forced is an unfortunate myth in our culture; people think you can either love your job or not. However, in reality, passion can be created by tweaking the activities and pursuits you engage in. All it takes is a bit of patience and an open mind.

The process of seeking what you love and turning it into a successful career is possible.

Here are some ways to fire your enthusiasm and passion:

  • Be curious
Curiosity is the basis of passion; keep things interesting by taking fresh perspective and a novel approach to your work.

  • Break the frustration barrier
You can do this by tweaking the challenge. For example, if an activity is too difficult for you to become enthusiastic about it, worry less about results and concentrate on experimenting and building up skills.

  • Remove the chains
Feeling forced into an activity is a sure way to kill passion. Resisting the flow of work and the given tasks will only make you more miserable. Keep In mind that there are consequences for not taking action and remember, you always have a choice.

  • Focus on the present
When you find a task overwhelming, don not stress about what needs to be done next month or next year, focus on the immediate action needed. Focus on each step of the marathon, not on how many miles you have left.

No one can be in ‘a state of passion’ all the time. Inevitably, there will be boring and uninteresting routine administrative tasks that you dread. The key is to recognize when you are in one of these bored phases and figure out how to improve the situation and get those passion juices flowing again.

Saturday, February 11, 2012

How to get most out of the feedback session?


Empowering Feedback

One of the hardest challenges you may face as a manager is giving constructive feedback to your employees. However, if you follow some simple guidelines, you can make feedback sessions useful rather than stressful.

Effective feedback comprises five key elements:

1. Deliver feedback immediately

Instant feedback will allow the employee to modify his/her behavior immediately. If there was an incident that prompted the feedback, it will fresh in everyone’s mind.

2. Praise and then provide suggestions for improvement

It is critical to begin each feedback session by praising the employee’s accomplishments. Then, make a conscious effort to give constructive feedback and suggestions that will help your employee(s) improve their quality of work, rather than just criticizing their work.

3. Be specific and make positive statements

Specific feedback is more likely to resonate with employees instead of vague allusions or accusations. Instead of saying, “You make too many mistakes” or “Costs are too high” rephrase your statements to say, “I would like you to reduce your error rate,” or “Let’s aim to reduce costs by 25%”.

4. Focus on Improvement

Remember to focus on Improvement instead of just criticizing. Talk about how you would like to see things done instead of focusing on the things you don’t like. Let your employees know that you have confidence in their ability to improve.

5. Invite employee response

After you deliver feedback, invite the employee to respond. Listen to what he/she has to say. There may be circumstances you were unaware of. You may need to investigate resource problems or process issues. You can learn a lot if you give the employee a chance to talk openly.
  
Remember, effective feedback can build employee confidence and help improve quality of output. When appropriate feedback is delivered at the right time, employees have timely and specific information about how to change the way they work. If done in the right manner, feedback can be empowering rather than demoralizing.


Tuesday, January 31, 2012

Exhaustive Testing


Exhaustive Testing as the name suggests ‘Performed comprehensively and completely’ and remember that 100 % Testing is not possible, you may have a greater confidence on your application but 100 % Tested Application can only be found in Pluto; just take it for the understanding don’t get into it.

Let’s come to the actual point. Assume you are testing an application that has a Textbox (accepts min 1 and max of 26 chars length) that accepts characters from a-z, if the user is a novice tester then it will first enters a, b … z individually then will group them as aa, ab, … az, then will increase the order and combinations and then finally come up at the point where he has to enter all characters as abcde…z in that Textbox. This kind of testing is exhaustive testing which is extremely undesirable.

The solution for the Exhaustive testing appears to be resolved by boundary values as follows:

If I am going to test that Textbox in my application I will create following test cases to get the same degree confidence that required by Exhaustive Testing.

1. Enter nothing (leave the textbox blank) application remains intact error/warning is displayed depending on requirement.
2. Enter a or any other SINGLE character only
3. Enter ab or any other TWO character only
4. Enter abc..y or any combination of 25 characters only
5. Enter abc…z or any combination of 26 characters only
6. Enter abc…za or any combination of 27 characters only, error/warning is displayed depending on requirement.

I anticipate, the idea is a bit clear about Exhaustive Testing by considering above two examples and it is very obvious which way is more effective and efficient.

Let’s look at the scientific part of the Exhaustive Testing. You know that English alphabets composed of 26 letters and the Textbox above is also a maximum of 26 length, therefore there are “6.1561195802071573107966742884002 e+36” that many combination that you have to test for that single Textbox which is impossible. If you are thinking to automate this textbox then you are fooling yourself, the amount of logic required to test this textbox will also be cumbersome. Once you try to find the solution for this then you will say test case 1 to test case 6 is the better solution.




Monday, January 30, 2012

Test Strategy versus Test Plans


Test Strategy is part of the Test Plans. Test Plans describes who will do what? Describes roles and responsibilities of test team, resources required any risks associated, major functions to be tested. Test Strategy is a very important part of the test plan. When requirements analysis phase is finished and requirements are somewhat mature then testing team starts preparing test plans, how to carry on testing and what strategy to be followed.

In very simple precise terms there are two basic testing strategies:

 To test the software in its entirety, once the completed package is available; otherwise know as “big bang testing”
 To test the software piecemeal, in modules, as they are completed (unit test); then to test groups of tested modules integrated with newly completed modules (integration tests). This process continues until all the package modules have been tested. Once this phase is completed, the entire package is tested as a whole (system test). This testing strategy is usually termed “Incremental Testing”

Incremental Testing is further divided into two classes Bottom-up Testing Strategy and Top-Down Testing Strategy.


What is Test Scenario?


Test Scenario

Test Scenarios, as it little obvious with its phrase. Scenario is something which is meaningful. Let’s take an example of routine life – as in submitting a utility bill in queuing in front of the local bank or via your cell phones. Doing that scenario you have to meet some conditions (i.e. by date available for the bill) and some valid documents (utility bill). Available Date and Utility bill itself meaningless in someway until it is submitted/cleared. Therefore, all the steps you will take to submit your utility bill will become a SCENARIO. Thinking all these steps in computer software context is a Test Scenario if an automated systems is put into place in the bank and you are testing the utility bill scenario in that software application.

Technically, test scenario is group of test cases to achieve/complete desired goal (objective) with the software application.

Let’s take the other example step-wise.

How do you check your emails? Checking emails is Test Scenario… How?

1. Launch browser or tab
2. Enter mail.google.com
3. Provide user-id password
4. Press Login

Step 1 to 4 as a whole represent a Test Scenario, if you successfully managed to see your emails the Test Scenario is passed otherwise it will be considered as failed

Formally, “steps required to complete a meaningful activity is a test scenario”

In the above example steps 1 to 4 are individual test cases in order to test individual steps.

Test Scenarios are the cornerstone of Scenario Based testing.



Saturday, January 28, 2012

Are You/We Confucius At Work?


Confucius at work

Confucius, the Chinese philosopher (551-479 BC), is widely quoted for his succinct counsel. On the occasion of Chinese New Year which has began a few days back, and coincides with the post-appraisal period for most companies, lets take heed of his words to shape the coming year at work.

Confucius advice, “Real knowledge is to know the extent of one’s ignorance,” is particularly relevant in this context. It suggests that we ought to be aware of how much we know. And, more importantly, how much we don’t know, which is to say that we ought to be aware of the limitations of our knowledge.

In the terms of what Confucius advises, the acquisition of knowledge is to widen one’s own perspective in order to see a broader truth. As they say, the more you know, the more you realize how much you don’t know. In the word of Albert Einstein, “As the circle of light increases so does its circumference of darkness.

To have knowledge enables one to be acutely aware of oneself and the world around us, to the extent of recognizing how far you can go (for instance) to the edge of a cliff without being ignorant to the possibility of falling over. Another quote by Confucius that shed more light to be one above is, “He that would perfect his work must first sharpen his tools”

Steven Covey calls it ‘Sharpening the Saw’, the habit of self-renewal. It suggests examining the extent of your knowledge; a blunt saw is far less efficient. It calls for planning and preparation and constantly revisiting what you know in order to add to it, because the minute we decide that we are an expert in any field, we stop being innovative and seeking new ways of doing things.

Questioning what we know and what we don’t know is the principle and the process that empowers us to move in an upward spiral of growth, change and continuous improvement.