Thursday, June 25, 2009

Benefits of Inbound marketing

I used to spend some time on my weekend at my buddy’s place Waqas Younas, we used to discuss a lot about “Business of software” and “”innovations in software testing”. Last week, we discussed the benefits of inbound marketing in order to grow any business. I would like to share our discussion with you guys, Waqas presented some great explanation and ideas regarding inbound marketing . It is bit different topic because I used to write more about software testing topics, but I am sure this post will open new ideas in your mind.
Mostly companies rely on outbound marketing. Outbound marketing is a phenomenon in which companies reach out to customers by cold calling them, spamming them and etc. While inbound marketing is a phenomenon in which a company creates good content and people reach out to them. A total opposite of outbound marketing. There are other benefits to Inbound marketing is well. By creating good content you improve your organic/natural rankings in Google. Also, by applying basic SEO principles you can become a good Internet citizen.
However, there is more to inbound marketing. When people are searching for something on a search engine then normally they are directly looking for some information & there is even a good chance that they are a potential customer. So when they find your quality content odds of converting people (looking for information on search engines) into customer increases by an order of magnitude. Not only that, you get a lot of incoming links to your website & that helps immensely in terms of your search engine rank. More importantly, when you write good content you're considered as an authority and this surpasses every thing.
Just for the sake of example: as per Google almost 72,000 people are searching monthly on the keyword "Offshore QA". Now let's just suppose that out of those 72,000 only 2000 land to your website. Those 2000 see good content on your website and there is a good chance that they will refer it to their friends. Even if nothing happens we can assume that out of those 2000 probably 100 people will send us queries about our product. And if we can make 1 customer out of those 100 then in my humble opinion it's a big win. Because this customer was taken on board without any third party marketing services.
Putting good contents on your website improves your traffic a lot.

Hitler as a Project Manager

This is great video, you will must enjoy it :) Enjoy

Thursday, June 18, 2009

what is Rapid software Testing

Few days back, I read an article about Rapid software testing written by James Bach. I am summarizing this article into few points here in this blog. You can read the full article from link given above.
Definition:
Rapid Software Testing, the skill of testing any software, any time, under any conditions, such that your work stands up to scrutiny. Based on the ideas of James Bach, Michael Bolton, and Cem Kaner, with substantial contributions by other members of the Context-Driven School of software testing, this is the closest thing in the business to a martial art of software testing.

Why rapid testing?
Rapid testing is a way to scale thorough testing methods to fit compressed schedule.
Rapid testing doesn't mean "not thorough", it means "as thorough as is reasonable and required, given the constraints on your time."
A good rapid tester is a skilled practitioner who can test productively under a wider variety of conditions than conventionally trained (or untrained) testers.
Most of the value of testing comes from how testers think, but even excellent testers struggle to articulate or justify their ideas about how to test. Rapid testing is a personal discipline, teachable and learnable, that allows you to think and talk about testing with confidence. By contrast, a conventionally trained tester generally is limited to complaining about how the requirements aren't fully documented.
Rapid testing is vital when you are asked to test something on short notice, off the top of your head, early in the development process, or when you're in the process of developing test cases and procedures for future use.
This approach is also useful even when you're called upon to test more thoroughly, and given the time and resources to do so.

How does rapid testing work?
A core skill in rapid testing is the ability to think critically and a good tester thinks like a scientist or a detective.
Rapid test design is an organized process, driven by a set of concise heuristics (think of them as guidelines) designed to assure that you don't forget to test anything important.
For new testers, the heuristics provide basic guidance. For experienced testers, the heuristics help you organize and access your experience, so that even under pressure, you perform like an expert and feel like one, too. With practice, you get better and better at testing rapidly while still being fully accountable for your work.

Where did the rapid testing ideas come from?
From 1987 to 1995, James Bach worked mostly alone to develop a systematic heuristic-based test methodology that applied to commercial mass-market software projects. Traditional test methodology didn't work well for market-driven test project. Starting in 1995,
He began to collaborate with other thinkers and writers in the field, who helped find and fix errors in his work, and helped extend it beyond the scope of market-driven projects.
Some of his colleagues eventually came together to identify themselves as the Context-Driven School of software test methodology.
Others helped create the Agile Alliance, which published the Agile Manifesto.
Cem Kaner, James Bach, and Brett Pettichord published the first context-driven testing textbook Lessons Learned in Software Testing. James and his colleagues speak and write regularly about testing, doing their best to advance the state of the art.

How to Validate Requirements

It is quite true that requirement engineering is quite integral part of Software development, even we do Verification and validation against our RS (Requirement specification),change request etc, there is enough possibility that we can miss understand some requirements of the client.

Studies have shown that almost 60% of errors/bugs are due to un-cleared requirements because extracting requirement is quite difficult job to do, requires great deal of experience and focus.

In agile, we work along with clients, and client is quite important stakeholder as we all know Specially in agile, so testers should be part of each communication with the client. so that can perform gap analysis along with the software activities.

According to Model based testing we developed the model of the system by analyzing requirements. Its model is just like flow chart or state diagram, then for each branch testers derive the test cases, this model grows with the passage of time because it is difficult to develop model at once. I think testers can "reverse think" by following this technique.

Testers can get an idea while executing flows that some application flow can be differ from client expectations.

I will write more materials regarding Model based testing in my coming posts.


Looking for your comment

Wednesday, June 10, 2009

How to measure Tester/QE Performance?

I read an article from Cem Kaner, in this article he talked about measuring performance of Testers. I am sharing my thoughts about this topic.

“We can not measure performance of Quality engineer/Test engineer”. We often used to encounter such statements from project managers or QA managers. So the question arises that how we can measure performance of QE.

We can consider “Bug Count” as a measure of QE performance but consider a situation where we assign two different modules, Module A and Module B ,to testers, consider following points regarding assigned modules.

· Module A is quite mature that it is gone through stable release; certainly it is thoroughly tested already.
· Developer who worked on this module is quite competent, and he covered all major scenarios, and spent a good time to unit test his module.

On the other hand, Module B has following points to consider.
· This module is pushed first time into to QA department.
· Module is developed with lots of assumptions and requirements are not cleared to the developers.
· Due to strict deadline, development team could not run unit tests.

There can be different aspects of these modules as well, but we can see obviously Module A will show lesser bug count as compared to Module B, so can we make any judgment regarding performance of testers working on these modules?, I think certainly not.
I think we can measure tester’s performance, efficiency and ability by considering following points.


1. Ability to find bug as early as possible in SDLC.

2. Ability to write effective, clear bug report.

3. Ability to convince developers and management about particular bug.

4. Working with developer without any ego (find bugs in program, not in programmer).

5. Ability to write good test plan and test strategies.

6. Ability to lead a QA team.

7. Good knowledge of different concepts like Database optimization, application security, Web application concepts and most importantly the framework on which product is based on.

8. Ability to find out of the box test scenarios.

9. Innovative and willing to improve quality of a product.

10. Good code breaking attitude.

11. Ability to write automation scripts.

We can judge QE performance by analyzing these points, this thing is quite sure that it is not possible to measure QE performance by bug count.

Looking for your comments :)

Tuesday, June 9, 2009

12 Common bugs of web application

We all know that development is quite creative and innovative work; there is always opportunity for improvement and performance optimization in web/Desktop application. Developers used to follow sometimes strict deadlines for completing their tasks, so I observed common bugs while working on different applications, which can be avoided easily by executing units tests on the behalf of development team

1.When screen is opened focus should be set on required field.

2.After displaying error message or information message, focus should be set on specific field.

3.Focus should be set on controls like Date control and Dropdown

4.Shortcut keys should be verified it should be working.

5.Field length should be fixed according to DB columns.

6.Validation should be applied on fields like Date, Password, Email etc.

7.Mandatory fields should be validated and make sure that mandatory fields are according to DB columns.

8.Error summary should be displayed properly; sometimes error summary triggers more than once in page life cycle.

9.Execute all page links; make sure that each link works fine, sometime we found that page path is not valid behind link so displays “alarming Crashing messages”.

10.Make sure that there should be no dead links on the pages.

11.If the screen is resizable, the page design (CSS+html) should be there to handle this feature. Sometimes if we resize the window, all page contents overlap each other and showing quite nasty look

12.If the window is resizable, horizontal and vertical scroll bar should be properly used.

By adding these points in your unit test check list, Development lead can reduce the bug count effectively.

Monday, June 8, 2009

Why companies need CMM

Developing reliable and usable software that is delivered on time and within budget is a difficult endeavor for many organizations. Products that are late, over budget, or that don't work as expected also cause problems for the organization's customers. As software projects continue to increase in size and importance, these problems become magnified. These problems can be overcome through a focused and sustained effort at building a process infrastructure of effective software engineering and management practices.

The Capability Maturity Model for Software (CMM) is a framework that describes the key elements of an effective software process. The CMM describes an evolutionary improvement path from an ad hoc, immature process to a mature, disciplined process.
The CMM covers practices for planning, engineering, and managing software development and maintenance. When followed, these key practices improve the ability of organizations to meet goals for cost,schedule, functionality, and product quality.
The CMM is composed of five maturity levels.

With the exception of Level 1, each maturity level is composed of several key process areas. Each key process area is organized into five sections called common features. The common features specify the key practices that, when collectively addressed,accomplish the goals of the key process area.

Saturday, June 6, 2009

My First Blog

I used to write blog in my school time, but i couldnt continue this activity due to some reason :). but i still have that diary in my book shelf, that reminds me my old days , when i used to play a a lot sports like hockey, cricket ,table tennis for my school, certainly "those were the best days of my life".

Now i am IT profeessional, and have been in this field for 3 years after completing my bachelors in computer science. now a days i am thinking to establisg a offshore testing company. so brainstorming is contine and at its peak now a days :)