Sunday, August 30, 2009

Skills for Automation

Last few months I was in interviewing candidates for Silktest and QTP. Many of them are good at tool related technical terms and concepts. But they are not comfortable to write few string handling functions. Main issue is many of the testers are not interested in hard-core programming. I strongly feel that programming skills is required apart from framework implementation. I used to give following tasks to any new comer for automation side.

Assignments for Automation

  1. Write a script to create a file,Read a file,Append a file and Delete it.
  2. To invoke browser and navigate through links,URL&button.
  3. To get Current Time like "24May2005-10hh-20mm-45ss"
  4. Find - Which window is active now in the taskbar.
  5. Prepare a script and the results should be stored into Excel sheet and Text file.
    Excel sheet should contain one line for each testcase and Text file should contain the information for all events.
  6. Automate simple Testcase without using GUI file. You should pass physical description directly.
  7. Retriving data from Database,Excel.
  8. Update data in Database,Excel.
  9. Access DLL functions.
  10. Implement function for following string problems
    Find and Replace in a given string.
    Get position of substring for given times.
    Get file name only from file's full path.
  11. Print list of files available in a directory.
  12. Create functions to create the log
    First log should contain all the details of the Script Actions.
    Second log file should contain only pass/fail detail of Testcases/Scenarios.
  13. Using any XML Parser, try to parse the XML contents based on given tag.

Sunday, August 16, 2009

Silktest 2009

Recently MicroFocus released Silktest 2009. In this release, Silktest has many enhancements for Open Agent and Eclipse Plugin.

Silktest 2009 Page on MicroFocus
Silktest 2009 - Release Notes
Silktest - Supporting documents

New in Silktest 2009

  • AJAX Testing with xBrowser
  • Support for Recording Testcases that Use Dynamic Object Recognition
  • Silk4J Eclipse Plugin
  • New Basic Workflow for Applications that Use the Open Agent
  • Dynamic Object Recognition Supports Locator Keywords
  • The Open Agent Supports Windows Forms Applications
  • Enhancements in the XPath Syntax
  • AnyWin Class Includes Several New Functions and Methods
  • SWTTree Class Includes Several New Functions
  • Several SYS Functions are Supported on the Open Agent
  • SilkTest Recorder

MicroFocus Acquisitions

Last month Borland was acquired by MicroFocus. Microfocus has acquired Compuware too. Borland and Compuware have similar kind of testing products. By these aquisitions, MicroFocus is the second largest market leading vendor in Testing tools.

Borland Testing tools:

  1. SilkTest - Functional Testing
  2. SilkPerformer -Performance Testing
  3. SilkCentral Test Manager - Test management

Compuware Testing tools:
  1. TestPartner - Functional Testing
  2. QALoad -Performance Testing
  3. QADirector - Test management

Apart from above products, Borland and compuware had other products. See the MicroFocus - Testing ASQ Products for more information.

Saturday, August 8, 2009

Programmers and Testers

I used to hear the rivalry between developers and testers from my friends. It is common in IT community. The depth of rivalry depends upon the maturity of both testers and developers. Every tester would have experienced this.

Many programmers are experts and specialized in particular technologies. Their duty involves mostly with complicated things. It might be new technology, new tool or new domain. They are not ready to do routine tasks as testing their code fully for each change. Many developers assumes that testing is an easy job and low end work. Sometime it might go as testing team is the wastage of resources, time and money.

Even if any rivalry occurs, it should be bust quickly. Either developer or tester should not take it personal. At the end, both are working for same goal. I hope, now these assumptions would have come down. Now a days, testers are involving automation framework design, unit testing etc.

Following tophics are listed under Interacting with Programmers in Book: Lessons Learned in Software Testing by Cem Kaner, James back and Bret Pettichord

  1. Understanding how programmers think
  2. Develop programmer's trust
  3. Provide Service
  4. Your integrity and competence will demand respect
  5. Focus on the work, not the person
  6. Programmers like to talk about their work. Ask them questions
  7. Programmers like to help with testability

Two weeks back, I was reading Debasis Pradham (Software Testing Zone) blog. Couple of his posts also talking about this feud and how to deal with them.

In Stickyminds.com, I found an article related to this tophic - Across the Great Divide: The Language of Common Ground between Testers and Developers By Susan Joslyn

Sunday, August 2, 2009

Selenium Overview

Selenium is a suite of tools to automate web app testing across many platforms. It is a GUI based automation tool. Initially it is built by ThoughtWorks. It supports various browsers on various platforms.

Selenium Home Page
Selenium Projects
Tool History
Platform Support

Selenium Projects
Selenium has many projects. Following projects are mostly used by testers.


  1. Selenium IDE (IDE)
    Selenium IDE can be used only in FireFox. It is an add-on for FireFox. User can record the actions and can edit and debug the tests. It can be used to identify IDs, name and XPath of objects. Only one test at a time.

  2. Selenium Core (CORE)
    Selenium Core is the original Javascript-based testing system. This technique should work with any JavaScript enabled browser. It is the engine of both, Selenium IDE and Selenium RC (driven mode), but it also can be deployed on the desired application server. It is used specifically for the acceptance testing.
    User can record the tests using Selenium IDE and can use the same tests to run in other browsers with minimal modifications. It provides support to run the tests in HTA (HTML Applications) Mode. This mode works only in IE.

  3. Selenium Remote Control (RC)
    Selenium Remote Control is a test tool that allows user to write automated web application UI tests in few programming languages against any HTTP website using any mainstream JavaScript-enabled browser. User can write the tests (More expressive programming language than the Selenese HTML table format) in Java, DotNet, Perl, Ruby and PHP. Also it supports few testing frameworks.

  4. Selenium Grid
    Selenium Grid allows easily to run multiple tests in parallel, on multiple machines, in an
    heterogeneous environment by cutting down the time required for test execution. Using this, user can run multiple instances of Selenium Remote Control in parallel.

Supported browsers
Selenium tools can run in following browsers.
  • Internet Explorer
  • FireFox
  • Opera
  • Safari
  • Seamonkey

Supported Operating Systems
Users can execute the selenium tests in following OS.
  • Windows
  • Linux
  • Solaris
  • OS X

Supported Programming languages
Below languages are supported by Selenium RC.
  • C# (DotNet)
  • Java
  • Perl
  • Ruby
  • Python
  • PHP

Lot of presentations and documents about Selenium are shared in SlideShare. You can do simple search and get many docs.

Recorded Selenese code through IDE
 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="" />
<title>GoogleSearch2</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">GoogleSearch2</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>/</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>q</td>
<td>silk4j tutorial</td>
</tr>
<tr>
<td>click</td>
<td>btnG</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>30000</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>q</td>
<td>Silktest extension kit</td>
</tr>
<tr>
<td>click</td>
<td>btnG</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>30000</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>btnG</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>30000</td>
<td></td>
</tr>

</tbody></table>
</body>
</html>

Java code - Selenium RC
 

package com.example.tests;

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class NewTest extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://www.google.com/", "*chrome");
}
public void testNew() throws Exception {
selenium.open("/");
selenium.type("q", "silk4j tutorial");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
selenium.type("q", "Silktest extension kit");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
System.out.println("New Test is completed.");
}
public void tearDown() {
browser.stop();
}
}