Monday

Plagiarism at its best!

This is a snapshot of what I recently came across and was shocked how people could just copy others work and claim that it is theirs  (The famous QTP Unplugged - By Tarun Lalwani was copied by Mr Kandasamy without even changing the name of the book!)

Mr. Kanakarajan Kandasamy is currently on the employee of Novita Soft Solutions, Bangalore. He have around 3 years experience in manual & automation testing areas such as .net, java, web application, etc..., he obtained his bachelors degree in Information Technology from: Anna University, Chennai. His areas of interest are Multimedia and CRM. He can be reached @ msgs2kanak@gmail.com

Tarun:  Please welcome Mr Kandasamy in successfully copy pasting some original work from my book and claiming it as his own. Recently the below content was reported to me
http://www.lulu.com/product/hardcover/quicktest-professional-92/5552565

Kandasamy:  hi Mr.Tarun...
have u read that book..i will took result data tables and resultes from your book remaing thing are my own..
those thing are nice thats y?...for that i will say sorry to u..and i will remove those thing from my book..
actualy im not able to reach u..tarun pls allow me to present those topics in my book..
thnks & regards,
kanakarajan

Kandasamy's reply again:

hello,
again im going to publish my book..
all the contents are my own..u just mind it..
this time if this ur create any problem i will not keep quite..
there are lot of difference between ur thoughts and my thoughts..
i dont give details about my book..if u have any doubt mail me..
i saw your SQA forum..u didnt know my book details how come u say that im copy paste special..mind ur words..dont try to spoil my name..wat do u thinking about me..
again im telling suppose if your do any thing wrong i will not keep quite..

regardes,
kanakarajan

 

Read on it's hilarious :-)
Source: SQA FORUMS

Thursday

All time good software testing books!


Here is a list of all time favorite software testing books in no particular order:

General Testing Books
Marnie Hutcheson, 'Software Testing Fundamentals' Wiley, April 2003
Erik van Veenendaal, 'The Testing Practitioner' UTN Publishers, Sept 2002
Paul Gerrard and Neil Thompson, 'Risk-based e-business Testing' Artech House, 2002
Louise Tamres, 'Introducing Software Testing' Pearson Education, 2002
Cem Kaner, James Bach and Bret Pettichord, 'Lessons Learned in Software Testing' Wiley, 2002
Martin Pol, Ruud Teunissen and Erik Van Veenendaal, 'Software Testing: a guide to the TMap Approch' Addison Wesley, 2002
Rick D. Craig and Stefan P. Jaskiel, 'Systematic Software Testing' Artech House, 2002
Ron Patton, 'Software Testing' Sams Publishing, 2001
John Watkins, Testing IT: an off-the-shelf testing process' Cambridge University Press, 2001
William E. Perry, 'Effective Methods for Software Testing' Wiley, 2000
Robert V. Binder, 'Testing Object-Oriented Systems' Addison Wesley, 1999
William E. Perry and Randall W. Rice, 'Surviving the Top Ten Challenges of Software Testing' Dorset House, 1997
Ed Kit, 'Software Testing in the Real World' Addison Wesley, 1995
Brian Marick, 'The Craft of Software Testing' Prentice-Hall, 1995
Boris Beizer, 'Black Box Testing' Wiley, 1995
Paul Jorgensen, 'Software Testing: a craftsman's approach' CRC Press, 1995
Mark Roper 'Software Testing' McGraw-Hill Book Company, 1994
Cem Kaner, Jack Falk and Hung Quoc Nguyen, 'Testing Computer Software' Van Nostrand Reinhold, 1993
Boris Beizer, 'Software Testing Techniques' Wiley, 1990
M A Ould and C Unwin (eds) Testing in Software Development British Computer Society Monographs in Informatics series by Cambridge University, 1986
Bill Hetzel, 'The Complete Guide to Software Testing' Collins, 1985
Glenford Myers, The Art of Software Testing Wiley Interscience, 1979


Some new books on Software testing (Emphasizing Agile and Automation) :
How We Test Software at Microsoft : Alan Page, Ken Johnston, Bj Rollison
Fit for Developing Software: Framework for Integrated Tests by Rick Mugridge
Everyday Scripting with Ruby: For Teams, Testers, and You by Brian Marick
Testing Extreme Programming by Lisa Crispin
Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall
Test Driven Development: By Example by Kent Beck
A Practitioner's Guide to Software Test Design by Lee Copeland
How to break software - a practical guide to testing Whittaker
Just Enough Software Test Automation Mosley and Posey
Software Test Automation: Effective use of Test Execution Tools, Fewster Graham
Implementing Automated Software Testing: How to Save Time and Lower Costs While Raising Quality by Elfriede Dustin, Thom Garrett, and Bernie Gauf

Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design by James A. Whittaker

Test Management Books
Rex Black, 'Critical Testing Processes' August 2003
Rex Black, 'Managing the Testing Process' Microsoft Press, 1999
Tim Koomen and Martin Pol, 'Test Process Improvement (TPI)' Addison Wesley, 1999
Martin Pol and Erik van Veenendaal, 'Structured Testing of Information Systems: an introduction to TMap' Kluwer, 1998
T C Royer, 'Software Testing Management' Prentice Hall, 1993

Test Automation
Hans Buwalda, Dennis Janssen and Iris Pinkster, 'Integrated Test Design and Automation' Addison Wesley, 2001
Mark Fewster and Dorothy Graham 'Software Test Automation' Addison Wesley, 1999
Elfriede Dustin, Jeff Rashaka and John Paul Automated Software Testing Addison Wesley, 1999

Technology Specific Guide for QTP http://bluemagic-automation.blogspot.in/

Others
Lisa Crispin and Tip House, 'Testing Extreme Programming' Addison Wesley, 2002
Kent Beck, 'Test Driven Development' Addison Wesley, 2002
Peter Zadrozny, 'J2EE Performance Testing' Expert Press, 2002
Alan Cooper, 'The Inmates are Running the Asylum' SAMS, 1999

SendKeys - Cheat Sheet


A quick cheatsheet for all the characters that can be sent using the sendkeys method:
e.g:
set WshShell = CreateObject("WScript.Shell") 
'Control+Shift+End
WshShell.SendKeys "^+{END}"


'Control+O
WshShell.SendKeys "^o"

Some common egs:
1. a and b are pressed, send the string argument : “(ab)”
2. To Send same letter multiple times : “{a 10}”
3. To Send ALT Tab :  wshell.sendkeys ” %{TAB}”
4. To Send ALT and space : wshell.sendkeys “%{ }”
5. TO Send char : wshell.Sendkeys “(a)”
6. Right Click of Mouse : Wshell.SendKeys “+{F10}”
7. Mouse Down : wshell.sendkeys “{DOWN}”
8. Mouse UP : wshell.sendkeys “{UP}”

KeyArgument
BACKSPACE{BACKSPACE}, {BS}, or {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL or DELETE{DELETE} or {DEL}
DOWN ARROW{DOWN}
END{END}
ENTER{ENTER} or ~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS or INSERT{INSERT} or {INS}
LEFT ARROW{LEFT}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}
F11{F11}
F12{F12}
F13{F13}
F14{F14}
F15{F15}
F16{F16}
KeySpecial Character
SHIFT+
CTRL^
ALT%
 

Tuesday

Test Suite Batch Converter (Selenium IDE) 1.5


For all the selenium lovers here is an amazing add-on that can convert one or more test suites (and included test cases) from the html format to any another format that is supported by the Selenium-IDE

Highlights:
  • The resulting test suites and test cases will have the appropriate file extensions for the selected language for supported formats. 
  • The names will also be sanitized to make them legal identifiers for most languages.
To know more and download follow this link Test Suite Batch Converter

Shortcuts - MMC and Internet Explorer Navigation


Some really nice shortcuts that might help in automation.
Adding more to the previous post on Shortcuts that help in automation!

Microsoft Management Console (MMC) Main Window Keyboard Shortcuts

CTRL+O (Open a saved console)
CTRL+N (Open a new console)
CTRL+S (Save the open console)
CTRL+M (Add or remove a console item)
CTRL+W (Open a new window)
F5 key (Update the content of all console windows)
ALT+SPACEBAR (Display the MMC window menu)
ALT+F4 (Close the console)
ALT+A (Display the Action menu)
ALT+V (Display the View menu)
ALT+F (Display the File menu)
ALT+O (Display the Favorites menu)
MMC Console Window Keyboard Shortcuts
CTRL+P (Print the current page or active pane)
ALT+Minus sign (-) (Display the window menu for the active console window)
SHIFT+F10 (Display the Action shortcut menu for the selected item)
F1 key (Open the Help topic, if any, for the selected item)
F5 key (Update the content of all console windows)
CTRL+F10 (Maximize the active console window)
CTRL+F5 (Restore the active console window)
ALT+ENTER (Display the Properties dialog box, if any, for the selected item)
F2 key (Rename the selected item)
CTRL+F4 (Close the active console window. When a console has only one console window, this shortcut closes the console)

Microsoft Internet Explorer Navigation

CTRL+B (Open the Organize Favorites dialog box)
CTRL+E (Open the Search bar)
CTRL+F (Start the Find utility)
CTRL+H (Open the History bar)
CTRL+I (Open the Favorites bar)
CTRL+L (Open the Open dialog box)
CTRL+N (Start another instance of the browser with the same Web address)
CTRL+O (Open the Open dialog box, the same as CTRL+L)
CTRL+P (Open the Print dialog box)
CTRL+R (Update the current Web page)
CTRL+W (Close the current window)


 Will add more shortcuts that might help in automation as and when possible ....

Thursday

Skillset - Sr QA Engineer for Agile

Here is what a company is looking for in a Senior QA engineer for an Agile Project:

Key Responsibilities
  • Responsible for management and coordination of all testing activities on assigned projects including definition of testing approach, test effort estimation, progress and status reporting, training and education on D&B QA processes and tools. Educates technology teams on their responsibilities/accountabilities for the purpose of achieving on-time and quality deliverables.
  • Through definition of the project test strategy, the Senior QA Engineer will identify the customer and business risks associated with project development and identify how the test approach will mitigate the identified risks. The Senior QA Engineer will also define a test approach in support of various software development methodologies including Agile.
  • Accountability for management and tracking of project level testing risks ensuring timely communication of impacts to Project Managers. Defines reporting metrics and documents non-compliance to policies, process and standards and assists in their resolution
  • Works with QA Center of Excellence to establish internal IT service quality control standards, policies and procedures.
Skills and Experience Required
  • Degree educated or equivalent in Computer Science or related field with Quality Assurance certifications such as ISEB or ISTQB is desirable
  • Experience working in an Agile environment in particular Scrum
  • Web services testing experience
  • Web UI Automation experience
  • Understanding and exposure to TDD practices
  • Some exposure to Load Testing, Performance Testing, Security Testing
  • Understanding of Continuous Integration
  • Understanding of the Agile manifesto
  • At least five years experience in Software Quality Assurance.
  • A proven track record in cross group management with demonstrated abilities to get results using defect containment practices, test automation and continuous improvement initiatives.
  • Ability to negotiate with business and technology partners to leverage synergies and raise the level of quality in D&B projects and products.

Tools
  • SOATest, SoapUI, Other Web Services testing tools
  • Selenium, QTP, RIATest, Other Web based UI automation tools
  • Fitnesse - Cucumber, Other BDD test tools
  • Rally

Wednesday

Selenium wait for AJAX (the right way!!!) - Agile Software Testing

 
Ajax! Ajax! Ajax!!!!
You cannot go to a website without running into some form of Ajax. It’s great and all, but if you are trying to test a website with Selenium, this becomes an issue. Selenium will wait for the page to load, but is rather clueless when it comes to Ajax.
After spending several painful hours looking for a way to make a “wait_for_ajax” function, I found several solutions that do not work.
1 – Put sleep in your test.
Well obviously this is the simplest solution, but also the worst. We don’t know how long a request will take to load, what if the server is slow?
2- Use “waitForElement” command built into selenium
This is a better solution; we wait for a certain element, which is part of the Ajax response to appear before moving on. The problem with this solution is that we need to always know which element needs to load. This becomes a headache for us normal people with extra large web applications to support.
SOLUTION!
Here is the solution I stopped on. I won’t take credit for making it, but I’ll take some credit for compiling it all in one place. To be honest I have not seen it done yet, the only thing I’ve seen was for bits and pieces but not the whole problem.
To solve this problem, what we have to do is ask the browser to tell us how many active connections to the server are present. Then we sit and wait for that number to become 0. At this point we know that all Ajax requests went through and done, and we can move on in the test. (If you have a webapp that contains non-stop Ajax request to constantly update everything, you have my sympathy.)

Step 1: Figure out which Javascript library your application uses
This is important one, which had me stomped for a long time. Different libraries (Prototype, Dojo, jQuery) use different methods to retrieve the connection info.

Step2: Create the wait_for_ajax method
def wait_for_ajax(timeout=5000)
js_condition = “”
$selenium.wait_for_condition(js_condition, timeout)
end

Let’s break this one down.
  • We have a default value of 5000 milliseconds for this method, but user can up or down it as they need.
  • js_condition will be a string, which will contain a selenium call to the browser’s javascript. It will be a javascript conditional that will wait for active connections to be 0, and then return “true”
  • $selenium.wait_for_condition is the method that will sit and wait for the javascript query to return “true” before letting you move on.
Step 3: Getting the right JS query for your library.
This part was the one, which took me the longest to figure out. But I’ll give you all the answers here. Different libraries use different functions to check incoming connection, so pick the right one for you.
jQuery: “jQuery.active”
Prototype: “Ajax.activeRequestCount”
Dojo: “dojo.io.XMLHTTPTransport.inFlight.length”

Step 4: Put together the JS search string
“selenium.browserbot.getCurrentWindow().” + library specific string + “ == 0”
Final string for jQuery will look like this
js_condition = “selenium.browserbot.getCurrentWindow().jQuery.active == 0”

Step 5: Put the method all together and enjoy :)
def wait_for_ajax(timeout=5000)
js_condition = “selenium.browserbot.getCurrentWindow().jQuery.active == 0”
$selenium.wait_for_condition(js_condition, timeout)
end
UPDATE: Thanks TIM!!
If using Selenium IDE, here is a way to access the AJAX Libraries
selenium.browserbot.getUserWindow()
And to check the JQuery active records
selenium.browserbot.getUserWindow().$.active == 0

Source: Agile Software Testing - Dima Kovalenko

Tuesday

ClickOnText in QTP



There are times when QTP forces us to use alternative methods to try and access objects which are not recognized as standard objects, and do not fall under any Class in QTP.

One such method is the "GetTextLocation" used in conjunction with the "Click" method.

Example:

strFound =Window(“”).Dialog(“”).GetTextLocation (“OK” ,x1,y1,x2,y2)
If strFound = True Then
       Window(“”).Dialog(“”).Click (x1+x2)/2 ,(y1+y2)/2
Else
       'Report a Failure
End If

How about replacing the above code with just one line of code that does everything internally to get the x1,y1,x2,y2 co-ordinates and gives us options to choose left/right, single/double click.
Here you go:

Window(“”).Dialog(“”).Clickontext “OK”,x1,y1,x2,y2,true,micRightbtn,false


Syntax for ClickOnText :
ClickOnText(TextToFind, Left, Top, Right, Bottom, MatchWholeWordOnly,ButtonToClick,DoubleClick)

Friday

Flex Objects not recognized by QTP - QTP Advanced


This is a commonly seen issue that QTP is not recognizing a particular flex object even though you have installed the Adobe Flex Plug-in and the library files are deployed with the flex build. There could be many ways to resolve this. The object could be recognized as a win object, macromedia flash object or a basic flex object like the one shown below.



I have a checklist that may help in resolving this:

1. Have you installed the flex plug in correctly? My blog below should help you verify that:
http://qtpadvanced.blogspot.com/2011/01/verify-install-of-flex-plug-in-for-qtp.html



2. Have you selected the required add ins for your application? Typically for a flex based web application requires flex, web and activex plug ins selected in the QTP's Add-in manager. Remember that QTP add-in manager loads at run time only and if you are not seeing this at start-up then it could be disabled within QTP Tools-> Options -> General.

3. If the object is only partially recognized by QTP and if it is an input field that can accept keyboard inputs they try the QTP SendKey method on that object. This uses the object.Type method to send keyboard inputs. If this works then this should knock off most of the text input objects.

4. The object could have been configured to work based on user action. For example a small window could open with options when user selects that object/ clicks on it. There could be two such possibilities:
   a> An input field coded by developers by combining more than one standard flex components. Example: A spark.components.TextInput can be combined with spark.components.Group, spark.components.PopUpAnchor and a spark.components.List making it kind of a search-able intelligent field that loads the list based on user input.
   b> The component is a custom component that has inherited the standard flex component. In such cases this may require "Instrumentation" of this component. This necessitates the developers to create a delegate class for this component which sends flex automation events that QTP can intercept while recording.
This adobe site link should give you insight into the instrumenting custom components:
http://livedocs.adobe.com/flex/3/html/functest_components2_11.html

Also check to make sure that the object in question has a class definition entry in the automation xml file. This link should give you more information on the class definition entry:
http://livedocs.adobe.com/flex/3/html/functest_components2_15.html#178953


5. There are a few cases available in the HP knowledge base which may be worth looking at but this may or may not help you resolve your problem. HP however states clearly that the plug-in is developed, maintained and supported by Adobe and that Adobe is the point of contact for any issues with respect to QTP and Flex automation.

6. Check in the Adobe Bug and Issue management system which is meant for public to log in and create or search issues. Searching this database could be very useful since there are a huge number of bugs logged and resolved by Adobe.
Here is the link: http://bugs.adobe.com/flex/
This requires registration to create or search bugs logged with Adobe. Just register and you can look into them.

To install flex plug-ins follow this link


Source: QTP Advanced - Kashyap

Wednesday

Testing News - Jan 4th 2011



  • IN Media Begins Software Testing Phase with Learning Partner Mount Knowledge   - It's a new e-learning software system, on it's popular Windows 7 Tablet PC with IN Media's new e-learning partner Mount Knowledge Holdings, Inc. Both companies are exploring the co-marketing opportunities in Asia with the integration of educational software on this new Tablet PC e-learning platform.Source: News 
  • Moolya Software Testing Private Limited Offering Brainual Software Testing Services Launched in India - Tired of seeing the industry get confused over Manual versus Automation for testing, this Bangalore based startup decided to use “Brainual” approach. Source: News
  • Software Testing club for Germany - Talk, discuss and promote all testing things going on in Germany. Source: News 
  • Revolution IT Announces Its Acquisition of Adelaide-based Independent Test Services Pty Ltd   - Revolution IT, Australia’s leading application quality management company, has acquired Adelaide based specialist software testing firm Independent Test Services Pty Ltd. Source: News

    Monday

    Simple way to estimate automation effort required


    Classify Test cases into:
    1. Simple
    2. Medium
    3. Complex
    Simple Test cases are which have:    
    • < 5 actions 
    • < 3 Components / Functions
    • < 5 Verifications
    Medium Test cases are which have:  
    • < 7 actions 
    • < 5 Components / Functions
    • < 10 Verifications
    • < 15 steps
    Complex Test cases are which have:  
    • > 7 actions 
    • > 5 Components / Functions
    • > 15 Verifications
    • > 20 steps
       
     Factors that affects test automation estimation in general:
    • Framework Used
    • Application Technology
    • Test Environment
    • Test Scope
    • Test Automation Skill-set
    • Custom Objects not recognized by the tool