Now it is up to the users to decide what should system do if I am happily typing away even though the password field allows max 12 characters?
Friday, April 24, 2015
Testing the system behavior which is not there
Now it is up to the users to decide what should system do if I am happily typing away even though the password field allows max 12 characters?
Wednesday, April 22, 2015
ATDD Mobile Test Automation - Integration of FitNesse with Appium - Part 1
Appium is the premier open-source tool for mobile testing. Here is my video on integrating FitNesse with Appium.
FitNesse can be downloaded from this link --> http://www.fitnesse.org/FitNesseDownload
The prerequisite for Appium project are as below:
- Install Android SDK
- Install Node.js
- Install Appium
- Install Appium Java Client
- Configure Appium in Eclipse (preferably maven project)
FitNesse server can be started using following command:
Configure the project in eclipse with FitNesse and Appium dependencies and run the mobile test. More details on Eclipse setup in part 2.
Tuesday, April 21, 2015
BDD Mobile Test Automation - Integration of Cucumber with Appium
Lately the application development has been inclined towards mobile apps and we need to extend our exiting BDD frameworks to handle app, be it Android, iOS or Win Mobile.
Appium is a neat tool for anyone who has exposure to WebDriver, irrespective of that also it is an excellent tool for mobile testing.
Here is my video of running Appium tests for android app using Cucumber.
You can create the Maven project using the following POM.xml:
1: <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
2: <project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
3: xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
4: xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;>
5: <modelVersion>4.0.0</modelVersion>
6: <dependencies>
7: <dependency>
8: <groupId>junit</groupId>
9: <artifactId>junit</artifactId>
10: <version>4.11</version>
11: <scope>test</scope>
12: </dependency>
13: <dependency>
14: <groupId>org.seleniumhq.selenium</groupId>
15: <artifactId>selenium-java</artifactId>
16: <version>LATEST</version>
17: <scope>test</scope>
18: </dependency>
19: <dependency>
20: <groupId>info.cukes</groupId>
21: <artifactId>cucumber-java</artifactId>
22: <version>1.0.14</version>
23: <scope>test</scope>
24: </dependency>
25: <dependency>
26: <groupId>info.cukes</groupId>
27: <artifactId>cucumber-junit</artifactId>
28: <version>1.0.14</version>
29: <scope>test</scope>
30: </dependency>
31: </dependencies>
32: </project>
The code for JUnit test runner is as below:
1: package com.qaagility.atacalc;
2: import cucumber.api.CucumberOptions;
3: import cucumber.api.junit.Cucumber;
4: import org.junit.runner.RunWith;
5: @RunWith(Cucumber.class)
6: @CucumberOptions(format ="pretty", tags={"@only"}, features = "test/resources/ATA_Calc.feature", monochrome=true)
7: public class TestRunner {
8: }
Wednesday, January 16, 2013
So what does 2013 holds for us in the testing area, I find this year full of lot of prospects and exciting developments for the testing world.
As Agile is changing from the "buzz-word" to "must-have" for most of the clients, I expect to see lot of traction in this area. Historically the Agile has been more of the developers' baby, they seem to have been driving it. However lately the shift can be seen where the distinction between the developers and testers seem to have reduced significantly and we are looking at Agile teams where the team members are "all-rounders" with cross-skills. Earlier it was nice to have teams like that and we aspired for such Agile teams and for lucky ones eventually the teams transformed into this using pairing and extensive training and coaching.
The testers now have been evolving and getting more development-centric, and developers getting hang of testing beyond Unit level. Due to this leveling of the skills, now testers seem to placed in a better position to drive the development activity, some may term it is TDD but what I foresee is a "less intense" TDD. What do I mean by that?
TDD in pure sense would mean that we strictly write the tests first and that gives the scope of development to the developers and they write code that passes the test and stop at that. A less intense TDD would be that you write the test first however it does not take the onus of describing the scope for the developers. So developers would still refer to the SRS (reqt doc) in order to code, the difference being that they will have high priority tests ready for them to conformance to requirements. Subsequently more testing would be done at integration and acceptance level to get the appropriate coverage as required. So if you are not comfortable calling this variation of TDD then we can name is around the concept of early testing (mind you, these are not static tests from V model).
This variation of testing gives ample powers to testers in an Agile (or traditional) methodology and also brings in concept of quality early in the SDLC.
Sunday, January 23, 2011
Sunday, November 14, 2010
Wednesday, September 22, 2010
Monday, July 12, 2010
Tuesday, July 6, 2010
Saturday, June 5, 2010
Gartner Publishes BPM Cool Vendor List, Agility and Dynamism Are Key
By David Roe | Published Apr 15, 2010 Comments 1 comment
Featured Webcast: Leveraging Enterprise 2.0 on Your Intranet
Gartner has just published its list of ‘cool’ business process management (BPM) vendors for 2010. The list consists of five small companies that have made key advances in BPM over the course of the last year.
Taking as a caveat the disclaimer contained in the report that it does not guarantee any warranties or abilities of any software to perform any particular task — Gartner (news, site) reports tend to contain this as a matter of course — the report does throw up some interesting material, apart from the list of companies that it considers ‘cool’ in respect of BPM.
What Is BPM Anyway?
So what is BPM? As a term it is thrown around the web like cheap confetti, but it is as often as not applied to systems that are not truly BPM systems. According to Gartner, BPM implements processes that will directly improve enterprise performance and operational performance.
BPM software or suites is software that applies those processes and achieves the dual goals of best performance and enhanced efficiency.
Again by Gartner's definition, a BPM suite must include 10 areas of functionality:
1. Process execution and state management engine
2. Model-driven composition environment
3. Document and content interaction
4. User and group interaction
5. Basic connectivity
6. Business activity monitoring (BAM) and business event support
7. Simulation and optimization
8. Business rule management
9. System management and administration
10. Process component/registry repository
Taking this list of functionality and by analyzing the different abilities of the five, Gartner has managed to draw some conclusions about current BPM software that are probably worth noting.
Simply put:
* BPO providers are increasingly using BPM suites to implement process changes.
* BPM suites are increasingly being used as platforms to build solutions for process-specific tasks.
* BPM suites are increasingly being characterized by ease of use for workers not directly involved in IT.
‘Cool’ or ‘Uncool’?
Before plunging into the list it is worth noting what it means by a ‘cool’ vendor in the first place. Gartner defines a ‘cool vendor’ as one that is innovative, interesting, and has or will have a business impact on the future of IT.
The result is a list of companies that are not particularly well known, but which have developed software that has drawn the attention of Gartner at least.
Cool BPM - So who made it onto the list?
BizAgi
BizAgi, based in Bogota, Colombia, focuses on handing more responsibility to business users to improve processes. Its principal products include a free BPMN 1.2-based modeler, an Express Edition and its "model once, execute anywhere” edition which have all contributed to building a wide customer base that includes 150 academic institutions.
ICCM Solutions
ICCM Solutions provides an IT service management (ITSM) and service desk solution built on Metastorm BPM. Its principal product, e-Service Desk , which comes on-premises and as a hosted service, supports Information Technology Infrastructure Library (ITIL) processes across all phases of the business process life cycle using a BPMS that gives scope for continuous improvement in processes.
PNMsoft
PNMSoft is a member of the Microsoft Business Alliance, has developed processes that help business process outsourcing companies respond more efficiently and quickly to the changing process needs of their clients. It also focuses on improving end-to-end demand management processes between the business process outsourcing provider and its client organizations.
Questetra
Questetra provides a cloud-based solution to manage human workflow and improve worker productivity. It offers business people, who have no programming or systems knowledge, a simple to use workable platform for process improvement running on a shared Amazon EC2 infrastructure. It charges a US$ 10 per end user per month fee for this cloud service.
Whitestein Technologies
WhitesteinTechnologies applies processes that have the ability to self-adapt to changing business conditions. Focusing on an agile and dynamic world, the architecture, using a multiagent approach, ensures self-adaptive behaviour in processes whether those behaviours are proactive or reactive.
BPM in 2010 and Beyond
In January this year, Gartner published its 5 BPM predictions for 2010 and beyond. Combined they outlined BPM moving forward as agile and dynamic with technologies like discovery software, social software and mobile applications coming together and making them easier to use and more relevant for the end user.
In the five ‘cool’ vendors listed it is possible to find some, if not all, of these characteristics with emphasis on dynamic and agile deployment.
Thursday, May 27, 2010
Monday, April 13, 2009
Project team structure - The Vedic way
In our vedas, it has been documented that people are of three basic types - Gyanyoga, Rajayoga and Bhaktiyoga. The Gyanyogis are the ones inspired by intellect, Rajayogis are inspired by Leadership and strategy and the Bhaktiyoga people have complete faith in their masters and are inspired by their devotion.
The start of any new project stems out from an idea that is mulled over and over to give a proper shape and plan. This is done by the people who belong to Gyanyoga category, these are the innovators and intellectuals. In a modern project these will be people in the board of directors or the advisers.
The idea is then converted to execution plan and the team of people are entrusted with the execution within the overall vision and strategy of the project. These are the Rajyogis, we call them the managers in our modern projects.
The team of people that will do the actual execution of the project should have full faith in their managers and should be devoted to the work that is assigned to them. The managers manage their day to day work to evaluate to ensure that the overall objective of the project is met. These people are Bhaktiyogis, also called team members in modern project teams.
So you see our vedas can educate us in all aspects of our lives including the professional...
Thursday, March 12, 2009
Recession Blues - Companies, think twice and retain your employees...
Numbers attached to this model:
1. Retain the employees with salary cut.
2. Find the differential between the amount saved if employees fired (A = All salary) vs. retaining employees with salary cut (C = Salary Cut). D = A-C.
3. Create of pool of such people and assign tasks with quantifiable results. (R = Worth of results).
4. We need to keep R >= D to make this work.
Variables affecting the model:
1. Resource pool count fluctuation
2. Unplanned entry and exit to the resource pool (temporary project assignment, resignations)
3. Other costs associated with the resources (seating cost etc.)
4. Top management support and commitment.
5. Measuring the results and converting it to quantifiable numbers
Wednesday, February 25, 2009
Gaps in Quality Processes in our daily lives
Let's take a typical day of our life and see how following the quality processes or lack of it impacts on the overall quality of our lives. Starting early in the day our car-wash boys, there are about 350 cars in the compound and this group of 25 boys wash them everyday. They do not have any planned leaves and they just take off whenever there is a need or just like that. They can coordinate amongst themselves and take planned holidays and also the cleaning of cars will not get affected. Other part of it is that they all do washing individually to carry out every task, while this could be devided amongs them e.g. group1 can do the dusting, then group2 would do the wet-washing and then group3 will wipe and dry. This can happen, with a plan with parallel tasks and save on time and effort and also improve the quality of car washing.
The next task is at home, where set of 40 'Bais' (Housemaids) do the cleaning of around 300 flats. There work is highly unstructured and always tend to have some or other scheduling problem. Both, the employers and the 'bais' need to have better communication and structure to their tasks so that the work could be done more efficiently, at the right time and within allotted time.
After this we are ready to leave house for work, if we use our own transport (self-driven or driver), there are umpteen instance on our way where we get impatient (putting it mildly) and try to steal our right of way. This behavior is common across all section of drivers, literacy or financial standing not withstanding, nobody gives a second thought while blatantly not followingh the rules or processes set by the traffic authority. If we give way to others and follow the traffic rules, it may seem like that we are taking longer but it's overall effect would be saving us lot of time. I am sure this can be mathematically, scientifically and socially proven.
If we take autorickshaw, we will struggle to find the generous auto driver who would do ud the favor to take us in the direction where we want to go. If we are not lucky, we could be hunting for the ellusive auto for long time. I know there is an RTO rule that the autorickshaws need to ferry the pasengers whereever they demand to go but I also understand that it is not possible all the time. The simple solution to this could be that every auto carry a small sign of the route they are interested in goin towards. This will avoid the unnecessary haggling with the auto drivers and make our lived easier and less stressed.
Friday, December 19, 2008
Ego of testers - fuel to exploratory testing?
I think there is a need to identify the inherent nature of any individual tester, if some feel that they would do better doing exploratory testing then we need to respect that. At the same time, effort must be made to validate their claim to assess their aptitude. Those testers who wish to be 'free-birds' should be not be forced to stick to pre-decided test script, it will certainly suppress their creativity. While we go about doing this, we got to ensure that we are not producing 'rogue-testers' (apologies if anyone is offended by this term). As saying goes from Spider-man movie, 'With great power comes great responsibility', so we need to be careful that we are not giving power into reckless hands. I would not like to use the term 'adhoc testing' as synonymous to Exploratory Testing, 'adhoc' for me signifies careless, sloppy and chaotic, things we do not relate to testing.
Now who would be ideal candidate for exploratory testing: someone who is well-verse with the application functionality and design, someone who has strong intuition, someone with strong analytical skills, someone who can design and modify the test design on the fly.
Exploratory Testing need not be against the ides of test scripting, rather it should be used in combination with test script based testing. And each of these teams would require testers with specific temperament and ability for successful execution.
Friday, December 5, 2008
Agile Manifesto
The Agile Manifesto reads as follows:
"We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value [the following]:
- individuals and interactions over processes and tools
- working software over comprehensive documentation
- customer collaboration over contract negotiation
- responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more."
The Agile Manifesto has a list of general principles attached to it.
"We follow these principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- We welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- We deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- We build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity—the art of maximizing the amount of work not done—is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly."
What's your interpretation of this?...
Tuesday, December 2, 2008
Agile Testing - Only for Agile Development methodology?
Simply put, it is the testing practice that follows the agile manifesto, treating development as the customer of testing. In this light the context-driven manifesto provides a set of principles for agile testing.
First let me list the Agile Development Methodologies that I a aware of:
- Extreme Programming (XP)
- Crystal
- Adaptive Software Development (ASD)
- Scrum
- Feature Driven Development (FDD)
- Dynamic Systems Development Method (DSDM)
- XBreed
- Testing is the headlights of the project- Where are you now? Where do you headed?
- Testing provides information to the team- This allows the team to make informed decisions
- A “bug” is anything that could bug a user- Testers don’t make the final call
- Testing does not assure quality- The team does (or doesn’t)
- Testing is not a game of “gotcha”- Find ways to set goals, rather than focus on mistakes
- Test-First Programming
- Pair Programming
- Short Iterations & ReleasesRefactoring
- “User Stories" Acceptance Testing
Developers write unit tests before coding. This
- Motivates coding
- Improves design (reducing coupling and improving cohesion)
- Supports refactoring (Refactorting --> “Changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure”.) - Make the simplest design that will work. Add complexity only when needed. Refactor as necessary. Refactoring requires unit tests to ensure that design changes (refactorings) don’t break existing code.
Many open-source test tools have been developed to support this. for e.g. xUnit
Pair Programming
All production software in XP is built by two programmers, sitting side by side, at the same machine. This practice ensures that all production code is reviewed by at least one other programmer, and results in better design, better testing, and better code.
Iterative Test-Driven Development
Extreme Programming is obsessed with feedback, and in software development, good feedback requires good testing. Top XP teams practice "test-driven development", working in very short cycles of adding a test, then making it work. Almost effortlessly, teams produce code with nearly 100 percent test coverage, which is a great step forward in most shops.It isn't enough to write tests: you have to run them. Here, too, Extreme Programming is extreme. These "programmer tests", or "unit tests" are all collected together, and every time any programmer releases any code to the repository (and pairs typically release twice a day or more), every single one of the programmer tests must run correctly. One hundred percent, all the time! This means that programmers get immediate feedback on how they're doing. Additionally, these tests provide invaluable support as the software design is improved.
Now lets look at Acceptance Testing
User stories (same purpose as that of use cases but are not the same) are short descriptions of features that need to be coded. One or more automated acceptance tests must be created to verify the user story has been correctly implemented. Acceptance tests verify the completion of user stories. Ideally they are written before coding.
Should users go along with this?
Some say that XP is an invitation to poor quality and an excuse for hacking. I think that XP is exciting and will improve the practice of testing in the industry.
Even better if we can have an independent Agile Testing process (that is 'independently agile') irrespective of the underlying Development Methodology... please watch this space for more on this.
Saturday, November 29, 2008
Are you a tester?
All of the above involve verifying and validating our certain expectations or fears (positive and negative testing) associated with the target that we are dealing with. These actions help us reaffirm our belief in the outcome that we expect, makes us tad little more comfortable. Comfortable in the realm of the related risk and cost associated in case of finding a "bug" later after the ownership is transferred to us. Thus the intensity and complexity of the testing varies based on the risk and cost. For example we should be comfortable if told that the sofa-set that we buying is tested to the effect of 99%, we may not feel the same if our airline says same thing for the aircraft that we are going to board (are we going to ask whether this is the 100th flight??!!)
Out need to test arise from the fact that we are humans and we can make mistakes, even machines can go wrong at times. We need to ascertain that the product or the process is as per the defined guidelines and standard, this leads to quality associated with the product. Higher the percentage at which the tests pass, higher is the quality. So essentially we are assuring the quality that we expect from the object under test. Also, to ensure the element of manual defect does not creep in, we tend to automate the tests, especially in case of the multiple repetitions of the test cases under various data sets and scenarios. This leads to test automation and agility in the quality assurance process.
I shall write some more associating the technology of testing and automation concepts with our daily lives. But aren't we all testers here?



