Thursday, May 30, 2013

About Writing Test Cases



This time I'll share my experience about Test Cases. What are the motivation factors when creating TCs and how we need to write TC in long team projects.  As far as I can see our motivation is to create TCs depend on several aspects and those are as follows:

1. If we are working in a product based company we have to work with one product or related products within a long period of time. Then we are mastering that domain. Hence we try to create TCs with only the essentials and basically those are very similar to the check lists or light test cases. 

2. Process we are following in our companies is another point. If we are following waterfall method then we have lot of time to write lengthy TCs and execute. But in an Agile environment, the approach is bit differ since we have limited time space within a sprint. And also QA members are often tackle with POs, PPOs and Dev members and know all the details in and out so the motivation behind writing lengthy TCs is very low. I think we should follow linear way and do more exploratory testing.

3. Another vital thing would be the TC maintenance. Say if we have several related products and you have thousands of lengthy TCs. If there is a change in the feature etc, again all the related TCs should be updated. But it is not an easy task as you have lengthy and thorough TCs. So you need more main power and money (this is one of the main motivations behind writing linear type TCs in our customer).

4. And one of the most important factors is the project criticality. If the cost of failure in the particular project is very high (Mission critical project) you should have rigorous test cases with all the necessary details. And when there is a requirement change, there should be a very good mechanism to update those test cases though it is expensive. 

But whatever the motivation behind writing TCs I have following suggestions when writing TCs for long term projects. In this approach (filtering mechanism), we have divided our TCs to 3 categories and create separate TCs for each. So the details is as follows:

1. According to the new user story or spec, we can create TCs with all the adequate details. This is the initial TCs we are going to use. So we can say we should write a test case with 100% test coverage. Using these TCs, we can do a thorough feature test after complete the development. Furthermore, this is utmost important when testing critical applications as I said earlier.

2. Then we can write TCs for extended smoke test (So this is more filtered and light version than the first one). So in this case we can do an exploratory testing  as well while executing the TCs to fulfill the major requirement of agile. Furthermore, this category is more related to mind mapping technique (In our company, we have created a model called 'sModel' for this). 

3. And finally, we can create TCs for ready to release test (or light smoke test). So this should be a check list kind of test cases (Very simple). So final result will be test cases with major functionalities. As an example, 'Add / Edit / Delete Contact', 'Document download and read' etc. By using these, we can make sure that the application main functionalities are working as expected within a very short period of time.

Hope this will help you to create TCs for different testing stages.