Friday, December 12, 2008

Mozilla add-ons for Bugzilla

Some Mozilla add-ons which are worth to install to improve your performance.

BetterBugzilla 0.3.4 - gives new look for your bugzilla.

Sage - allows to create feed on search query of your bugzilla.

Newsfox - allows to read rss feeds in web-browser email layout; if feed items update -- this will pops up and mark as unread for that item in feed; you can use this extension to point your bugzilla feed so you can get notice for all activities happening in bugzilla.

~Enjoy,NV

Saturday, November 29, 2008

How to automate test-scenarios which have Java Objects built on JMesa , JQuery, JSON and AJAX technology.

I had a challenging project to automate Java Objects on the fly – sharing some part of it.

Challenges I faced
1. Objects which are built on top of JMesa , JQuery, JSON and AJAX technology -- are not recognized by professional automation tools (such as QTP and SilkTest).

2. How to automate Dynamic Graphs which are implemented with technologies like Flotr and 3D Canvas.

3. Web application needs to automate with cross-browsers ( IE 6.0+ , FF 2.0+ or Safari 2.0+ ) It focus objects screen rendering issues which are different from one browser to other.

How can we overcame
• Challenge #1 and #2 can be resolved with below automation approach.
Verify HTTP Responses when user does some actions like objects fire specific AJAX calls; We simulate these AJAX calls ( HTTP requests ), capture valid\expected response, set them as baseline and in QA loop we simulate user actions again with automation, capture actual response and compare with baseline.

• Challenge #3 can be resolved with below automation approach.
Simulate request for each browser to server, Capture valid\expected HTTP response for each browser such as IE 6.0+, FF 2.0+ or Safari 2.0+ from server then set them as baseline and in QA loop we send request again per browser, capture actual HTTP response for each browser (such as IE 6.0+, FF 2.0+) and compare with expected baseline response – This will uncover objects which have screen rendering issues.

I recommend Canoo WebTest automation tool as It works well with AJAX application and understand HTTP request and response.

Monday, November 24, 2008

How to claim web product certified by QA

Below V&V activities' document with their approved status need to produce by QA.

















Thanks,
Nimesh Vadgama.

Tuesday, July 29, 2008

QA Project Checklist

Here is I want to share qa project management checklist I used in real scenarious.

Project Initiation
Prepare System Test Estimates
Define System Test Approach
Define Testing Scope
Prepare DRAFT System Test Plan
Review System Test Plan
Prepare Test Schedule
Request Test Resources
Request Business Expert
Request Management Support
Request Environment / Technical Support
Request Facilities (Desk, Chair etc.)
Setup Test Project Folder
Revise Test Estimates
Define Entrance / Acceptance Criteria
Agree Communication Channels
Agree Reporting Procedures, Methods and Frequency
Define Exit Criteria
Design Release Notes Template


Test Preparation
Agree Builds / Drops Schedule and Contents
Agree Release Notes Contents and Format
Agree Error Management Procedures
Define System Test Roles and Responsibilities
Assign Test Roles and Responsibilities
Assign Test Case Preparation Primary Responsibilities
Assign Test Case Preparation Secondary Responsibilities
Prepare High Level Test Cases
Prepare Low Level Test Cases
Define Test Environment Setup (Network / Server)
Define Test PC Setups and Configurations - clients
Review Test Plan
Review Test Schedule
Setup Test Execution Progress Tracking Database

Build System Test Environment
Setup Test Environment (Server)
Setup Test PC's
Setup Bug Database
Verify Test Environment (Shakedown)
Verify Bug Database External Access
Setup Test Data
Setup and Install Test Peripherals (card readers, receipt printers)


Prepare System Test
Review System Test Cases
Revisit System Test Cases
System Test Readiness Review
Verify Entrance Criteria reached
Receive B36 Build 1
Install B36 Build 1
Execute Acceptance Tests
Review Acceptance Test Results ( accept - yes / no )

Execute System Test
Execute System Test
Execute Cycle 1 - GUI Tests
Execute Cycle 2 - Functional Tests
Execute Cycle 3 - Scenario Tests
Log and Track Defects
Maintain and Administer Error Management System
Progress Measure and Reporting
Measure Progress - Actual vs Planned
Manage and Track new Builds
Perform Build Regression Tests
Close Regress Bugs / Re-open "Not Fixed" bugs
Measure Error Statistics and Metrics
Report Error Statistics and Metrics
Track and Record Error Turnaround Time
Escalate Issues as appropriate
Perform Final Regress Test


Signoff
Signoff System Test
Produce Post-Testing Report
Wash up & Lessons Learnt Meeting
Review Exit Report
Cleanup Test Environment
Return Peripherals
Post Execution Test Case Review
Handover Test Documentation

Let me know if anybody needs more details.

Monday, June 2, 2008

How developers fix their bug -- funny forwarded email.

Forwarding one funny email from yahoo group ~ enjoy testing - Nimesh

##########################################################

#include <stdio.h>


#define LAST 10

int main()
{
int i, sum = 0;





for ( i = 1; i < = LAST; i++ )
{
sum += i;
}

/*-for-*/
printf("sum = %d\n", sum);
return 0;
}


##########################################################

And the developer fixes it this way

##########################################################


#include stdio.h;
#define LAST 10

int main()
{
int i, sum = 0;


/*




*/


for ( i = 1; i < = LAST; i++ )
{
sum += i;
}

/*-for-*/
printf("sum = %d\n", sum);
return 0;
}



##########################################################


Communication and right attitude continuously adding precious drops in the sea of success.

Someone has well said "Communication matters" -- I would like to go further ahead.

Yesterday, I went to PathMark to get some stuff. There were some schemes going on Tide (laundry detergent) with light bulbs on discount. One Customer came to customer service and started demanding he needs two bulbs free with Tide but the fact was that there was some discount if you purchase Tide with that light bulbs. The customer support guy explained the person that he could not give free two light bulbs as that was not scheme currently. Still the guy asking for free – he did not listen to customer support person and continuously telling him "I want free light bulbs". Customer Support Person explained him three or four times with his best knowledge that he could not give him but still that guy demanding. At last customer support person call to his Manager for help; Manager came and explained to the person that you got your discount and that is the scheme running currently but person started arguing like "what kind of scheme you guys have,…what is the logic behind you did not give me free light bulbs and lot more thing…" At last conversation with Manager, he asked PathMark's Customer Service Call center number and told that he would complain about this and that and left the Mall.

I was standing by that customer and seeing everything. I saw customer support guy – the gentle man has tried lot to make that person understood but that person was not open for it, he did not want to listen anything from him or from Manager – he just wanted free light bulbs along with Tide that was not actually scheme running. Customer Support Person and Manager got frustrated first as customer continuously demanding unfairly and wasting their and other customers' time who were in queue and at end that customer got frustrated when he left the Mall.

The same thing may happen with any entities in project cycle and It may damage project progress and lead to deadline delayed.

There are so many ways to make front person understand but of course both the parties would have will to listen each other point of views and analyze each other to get the right crux of the matter so that at end both can be benefited. As you see -- The patience to listen each other has major part in communication. There is one saying "for clapping you need both hands , one hand can't do".

Communication and right attitude continuously adding their precious drops in the sea of success ~ Nimesh :)



Tuesday, May 27, 2008

Tip to create workflow in JIRA quickly

To my colleagues who want to create quickly new workflow and don't want to touch xml \ property files.

On Administrator \ Workflows

  1. If you don't have default workflow then create default Workflow with default JIRA "workflow" - it will show status as "active" so we cannot update its scheme \ workflow steps.
  2. Copy this workflow -- it has status as "Inactive" so we can update workflow scheme.
  3. Go to link "steps" and add new status \ transitions for new steps as required in your workflow.


On Administrator \ Workflow Schemes

  1. Create new "Workflow Scheme" then click on "Workflows" link operation of new workflow just created.
  2. Assign workflow to scheme,... Issue type "Bug" and select our workflow from the list.
  3. Assign other workflows for issue types : Task, New Feature or Improvement with default workflow ( named JIRA ) or your workflow.


Now our workflow scheme is ready to associate with our project.
Go to your project admin panel and set workflow scheme there.

Let me know if you need more detail :)

Takecare,
Nimesh.



Typical Project flow with QA Loop in Jira (Atlassian)

Last week, one of my friend needs some help to establish Project\QA workflows on Jira (Atlassian)
So here I am happy to share some of my odd solution.

Project Flow problems or hard to implement in Jira were

* One stage splits with multiple stages in flow.
* More than one stages merges to one stage.

Here We have Brainstorming splits to UT - ST stage and Dev Review - QA Review merges with Review stage executed by System Group Members in project flow.

One issue splits with more than one issues, can also be implemented with sub-tasks feature but it may not push next stage in the project flow as the project progresses; all sub-tasks are linked to the parent task only, may not execute inline flow; may not give more control to administrator\lead and may be more complicated to maintain. Sub-tasks may not be merged to one task on transitions after Dev. Review / QA Review merges to Review stage.

Core objective is to implement flow that anyone can see each stage of the flow and can go back and forth from any stage, Dev and QA stage should work parallel and merge to "Review" and then System Verification should be executed as build in QA loop.
Administrator \ Lead of each stage would have full control to execute project development and would have transparency; Jira could help to push next stage after each stage done.

We first implement above flow as manually after we will find which actions need to automate.
Manually Implementation :
# Created issue types for all Project Concept, Brainstorming, ST Identification, UT Identification...until System Verification as Standard Issue type like task.
# Create work-flow schemes for each issue type we have created i.e. ProjectConcept work-flow will have step Created, Go for Brainstorming , Reopen.
# Enable Issue Linking from Administrator and create two link type as we have two flow one is task flow other is defect flow.
* Project Flow :
- Outward Description : created after , Inward Description : progressed to
* Defect QA Loop :
- Outward Description : Linked to , Inward Description : Linked by
# Associate each work-flow with its issue type.
# When flow step done -- create new issue type of the next flow step and link it with its previous parent issue type on Project Flow.
# On SV step make it open and add reference to each defect in its sv step.

Here is snapshot after implemented above actions :

We can automate manual actions
# Create next flow issue type when specific issue committed or completed,
# Assign to the lead,
# Add reference(link) to previous parent issue type.
Automation :
Here I will show one implementation from stage Project Concept to Brainstorming; Others can be implemented as same way.
For this we will create Jelly script and add them in Jelly Service of Jira.Script executes filter and get issues with issue-type : Project Concept , status : "Go for brain storming" and which does not have comment "Brainstorm added" and does manual actions and then add comment "Brainstorm added" to project concept(previous step of the flow) so next time when service executes same project concept will not create brainstorm step.
Created filter : GetProjectConceptsWithNonBrainstormingAdded at desk for this project.

Copy script code
To execute above script, update your FilterId with 10020 to yours filterId, to find filterId go to Find Issues / Manage and put cursor on your filter and see the filterId on status bar.

Please, feel free to ask any question regardings.

Thanks,
Nimesh Vadgama.

Sunday, May 11, 2008

Combinations n Permutations in QA

Combinations n Permutations are very useful in software testing.
It help to find possible test-data / testcases. This session will provide details about

1. Some basics about Combinations
2. Logic to find possible combinations for taking k numbers of items from n number items at a time.

1. Some basics about Combinations.
You might be come across with below example in old school days.
We have set { "ant", "bug", "cat", "dog", "pig" } and If we want to take 3 elements at a time then we would have possible combinations as
{ "ant", "bug", "cat" }
{ "ant", "bug", "dog" }
{ "ant", "bug", "pig" }
{ "ant", "cat", "dog" }
{ "ant", "cat", "pig" }
{ "ant", "dog", "pig" }
{ "bug", "cat", "dog" }
{ "bug", "cat", "pig" }
{ "bug", "dog", "pig" }
{ "cat", "dog", "pig" }

So for n=5 and k=3 in above we would have 10 possible combinations.
How we can count ?
We have formula :

Total number of combinations = n * (n-1) * (n-2) * ....* (n - k +1) \ 1 * 2 * ...* k

So, n= 5 and k= 3
Total number of combinations = 5 * 4 * 3 \ 1 * 2 * 3 = 10
We will use this formula to implement C# function Choose(n,k) to find total number of possible combinations in coming session.


2. Logic to find possible combinations for taking k numbers of items from n number items at a time.
The basic logic is to get all possible combinations item index.
So, If we have data[5] = { "ant", "bug", "cat", "dog", "pig" }
{ "ant", "bug", "cat" } = { data[0] , data[1] , data[2] }
and so we need to get { 0 , 1 , 2 }
{ "ant", "bug", "dog" } = { data[0] , data[1] , data[3] }
and so we need to get { 0 , 1 , 3 }

And for others as respectively we need to get
{ 0 , 1 , 4 }
{ 0 , 2 , 3 }
{ 0 , 2 , 4 }
{ 0 , 3 , 4 }
{ 1 , 2 , 3 }
{ 1 , 2 , 4 }
{ 1 , 3 , 4 }
{ 2 , 3 , 4 }

To find combinations we will use lexicographical algorithm.
In this algorithm, we find successor. Successor is the next possible combination.
Say for { 0 , 1 , 2 } we have successor { 0 , 1 , 3 }
The core logic to get successor is first to find right most element that must be incremented then we increment all right most elements for that we will create Combination Class and implement two constructor to set base data, n and k of the set as per requirement and then execute Successor Method and will store all possible combinations of object array and display as well.

Inspired by article of Dr. James McCaffrey on String Permutation.

Thursday, May 1, 2008

Automate QA Feeds task [continuous to last post]

Continuous post of CSV\XML\RSS Feeds are QAed

To validate Feed URL(s) are not broken ; we can use XML DOM. Below is script that validates broken link.

To validate ASCII Character , I have used below script.

You can create excel custom tool where you centralize all feeds , verifies broken resources before creating actual feed.




Sunday, April 20, 2008

CSV\XML\RSS Feeds are QAed

In Content centric organizations, feeds are one of the core part that needs to update every time when
  1. New Contents are Uploaded.
  2. New Categories \ Groups are introduced for Old Contents.
As we know first one is very repetitive task -- so need repetitive validation.
Second one is less repetitive but much costlier and involve high risk – so need more rigorous validation as well.

Both missions have some kind of common problems :

  • Feed Generator Software\Content System retrieve Content Data ( URL(s) \ Content Details ) which may have ASCII Characters and Memory Garbage and old inactive URL(s)– URL(s) where contents are not actually accessible by user.

  • Feed may contain non compatible XML data( like special characters > < & ) which may break XML \ RSS Feeds.
  • Feed may not have broken content URL(s) and Content Details but they may be mapped wrongly. It means Content Details for one Content may not present its own Content URL or in opposite.
So for QA, we expect to

1. Validate Broken Content URL(s)
Content URL(s) are usually redirects user to the subscription services.
They are paychecks for companies.

2. Validate Content Details are not broken.
Content Details are like Content Descriptions on which user read and subscribe service or purchase content from company like Content Name, Type, Usage , Marketing Phases.

3. Validate each correct Content has its own correct Content details.
Content details are mapped correctly with each other.

Validating above tasks MANUALLY is not a practical way as we all know in middle to big scale organization we would have more then 10,000+ contents in QA. There are some automation ways to validate above task more effectively and efficiently -- I will focus light on them in my next post .

Friday, April 18, 2008

NUnit basics for new bees

In smaller to bigger project, here are some basics about how to automate Unit testing with NUnit framework on .Net Platform.

Where NUnit spot on SDLC?
In other words, we can ask when to start unit automation on project? It depends on various parameters say for example Complexity of Method(s) / API(s) or Classes in production cycle - How Method(s) API(s) / Classes are called by other Method(s) / API(s) / Classes in production cycle.


We can start NUnit automation after completion of any independent Method / API / its Class created at production and making automation continued towards parallel of development cycle of more dependent Method(s) / API(s) / Classe(s).

Say for example we have small class library project in C#.









Now lets start NUnit Automation in 7 simple steps :

  1. Create New Test C# Project (Here Named TestProject) and add production class (.dll) reference.
  2. Add reference NUnit.Frameworkto the TestProject.
  3. Add attribute "TestFixture" to mark as Test Class and so NUnit GUI can recognize.
  4. To create Test Category / Test-Cases group, add attribute “Category” passing with CategoryName as a param say for here [Category(“TestCategory1”)].
  5. Add attribute “Test”to the test-cases which will teardown inside test-class.
  6. To implement test-case , create Object of the AUT Class and call Assert with its various methods as required.
  7. Save the project and Open this on NUnit GUI and last run the test.

Njoy, Nimesh - (Get more NUnit stuff on http://www.nunit.org )

Popular Posts