Welcome Everyone Who:

Wants:

· To do right things right first time.

Does not want:

· To do things without value.

Knows that:

· Software Testing never ends, it just stops.

· Software Quality does not happen by accident; it has to be planned.

Believes that:

· There's always one more bug during Software Testing.

· Software Testing is the art of thinking.

Powered By Blogger

Tuesday, May 22, 2012

All Menu items disappear in QTP v11 after running a test which crashed the QTP Q

I came across this issue while running some of mine tests in QTP. While running the test, QTP crashed (surprise , surprise!) and after re-launching the QTP all my menu items were gone! After some research I found a solution, hopefully this will save you time:

If above occurs, perform the following in QTP:
1) Launch QTP
2) Navigate to Tools>Customize
3) Select Toolbars
4) Click on "Restore All"


This should bring all your menu items back. Apparently it is an issue with QTP and HP is promising to fix it in the future release.

Tuesday, May 1, 2012

Intelligence Is Overrated: What You Really Need To Succeed

I rarely post articles, not directly related to SQA, but I think below is a good exception, agree with Keld Jensen on many points, to read more follow the link below:

http://www.forbes.com/sites/keldjensen/2012/04/12/intelligence-is-overrated-what-you-really-need-to-succeed/?goback=%2Egde_3771878_member_111137349

Thursday, April 19, 2012

When Picture does NOT worth 1000 words?

The answer is - when you are an SQA Engineer and I will explain my side of the story.
One of my colleagues, recently opened a bug and just attached a screenshot without any description or explanation, simply thinking that picture will explain everything. Here is why it didn't work:

1) There is no "steps to reproduce", developer might not understand how you got to that point.
2) Also, it doesn't tell the developer what is the expected result.

We currently use "Youtrack" to track all of our bugs/enhancements and it provides an end user with the great ways to attache a screen shot and I believe that it is IMPORTANT to add a screenshot, but picture by itself is not enough, at the same time you should not be writing a bug which has 1000 words :)

Thursday, February 16, 2012

QTP v11 and Silverlight

While in the process of creating several automation suites that deal with SL plug in, faced a problem where QTP would not recognize anything.

After some "googling" tried to uninstall Silverlight v4 and installed v3, that did not work. Realized that there is a patch from HP, but had difficult time finding the download site. Came across this resource, just sharing this with you. If you are running QTP v11 and having difficulties with SL plug in, you will need to install QTPNET 00051 and QTPWEB 00090 patches, but you can find other patches there as well.

http://www.joecolantonio.com/downloads/

Thank you Joe Colantonio!!!

Friday, July 15, 2011

Selenium Reference

All in one place resource center for Selenium.

http://release.seleniumhq.org/selenium-core/0.8.0/reference.html

Enjoy! BTW, if you are not using Selenium and have a web application, you should DEFINITELY download it and give it a try. You won't have to justify the cost!
Download from here: http://seleniumhq.org/

Thursday, April 14, 2011

WCAT (IIS performance tool)

Don't have a budget for LoadRunner (I can definitely relate to that). LoadRunner is a great tool, but sometimes it is difficult to justify the COST. Consider WCAT (Web Capacity Ananlisys Tool). Lightweight tool which will help you to achieve some performance testing against IIS.
You can download it here: http://www.iis.net/community/default.aspx?tabid=34&i=1466&g=6

Friday, March 25, 2011

VMWare introduces "Project Horizon"

http://communities.vmware.com/blogs/cto-scott/2010/09/28/project-horizon-the-secure-journey-to-the-cloud-softwareasaservice-and-the-compliant-enterprise

Monday, February 7, 2011

Ten Tips for Agile testing- Whitepaper from UTest

Just sharing this article I received from Utest. Some good points about Agile and how to implement the process. Enjoy!

Agile Software Testing Ten Tips for Launching and Testing High-Quality Apps in an Agile Environment WHITEPAPER: August, 2010
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
1
Table of Contents
Agile Overview………………………………………………………………………………………………..……………….2
The Agile Manifesto ................................................................................................................. 2
The Problem With Waterfall (it’s not agile!) ........................................................................... 2
The Emergence of Agile .......................................................................................................... 3
It’s Okay To Use Waterfall – It Isn’t One vs. The Other ........................................................... 3
Ten Tips For Agile Testing……………………………………………………………………………………….…….…..4
1. Understand the True Role of Testing ................................................................................ 4
2. Unify SRS and Test Plans ................................................................................................... 4
3. Carefully Define Your Testing Coverage Matrix ................................................................ 5
4. Tell a Story – Not a Use Case ............................................................................................. 6
5. Capture Meaningful Data .................................................................................................. 7
6. Fix Broken Windows .......................................................................................................... 8
7. Make Testing Your Feedback Loop ................................................................................... 8
8. Timing Is Everything .......................................................................................................... 8
9. Run Frequent Load Tests ................................................................................................... 9
10. Stick To Your Scrums ......................................................................................................... 9
About uTest……………………………………………………………………………………………………..………..…… 10
“Simplicity is the ultimate sophistication.”
- Leonardo da Vinci

WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing

2
Agile Overview
A Google search for “agile development” returned 2.7 million results at the time this was written. It’s safe to say the word is getting out. But although the basics concepts have been actively discussed in books, blogs and everything in between, we’re going to first review them anyway. We promise to be quick. If you’ve heard this story before, feel free to skip ahead to the next section: Tips for Agile Testing.
The Agile Manifesto
Though ‘Agile’ is a relatively new term, the shift towards more iterative development methodologies began years ago. Eventually, in 2001, a small group of CTOs, academics and thought leaders published the well-known Agile Manifesto. Here is a summary of the document’s fundamental principles:
Figure 1: The Agile Manifesto
There have been multiple “spin-offs” of Agile since this document was first published, including Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, and Pragmatic Programming, among others. Though they differ in subtle ways, they hold the same foundational values described above.
The Problem with Waterfall (it’s not agile!)
Waterfall development is characterized by well-defined phases, each having a thorough review and authorization process that should be completed before proceeding. On the surface, this process is not inherently bad. In fact, it’s quite logical: First, figure out everything you need. Then design it. Then code it. Then test it. And repeat.
Problems arise when the project requires adjustments and modifications that were not anticipated in the early stages. Reality ruins the plan. So for projects that can be spec’d out with precision ahead of time, waterfall may be the proper choice. Unfortunately, experience has shown that a calm, unchanging set of requirements is a rarity.
Whose fault it that? The answer varies depending on who you ask. Upper management often blames the product team for not being thorough enough. Product blames sloppy coding by development. Testing blames management for not enforcing tighter deadlines and cutoffs. “You signed off on the spec two months ago; we can’t add this feature now!”
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
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.

WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
3
Looking back, it’s no wonder why these projects became the source of such frustration; basically, we delivered software that lacked the most important features! At the same time, we were up to our necks in fancy-looking documents – MRD, SRS, Architecture diagrams, APIs and Test Plans – that didn’t provide any real value to customers.
The Emergence of Agile
Out of necessity, development teams began shifting to frequent releases. At first, these iterative methods went with small cycles, but remained with a fixed schedule ahead of time (i.e. fixed budget, strict plan, and predetermined feature sets). So instead of the one major release, several minor releases would be scheduled.
This concept would be taken a step further: Iterative releases, with no fixed plan! Here, each release adds a bit of value, allowing for better decisions as to what features would be included next. Development now works in small cycles – planning and designing only far enough ahead to keep the flow working. With this increased flexibility, the burden of excessive formal documentation was greatly alleviated. Now testing is incorporated into each step of the process, not just at the end of each release.
It’s Okay to Use Waterfall – It Isn’t One vs. the Other
Although Agile is gaining in popularity, this piece is not an endorsement of one over the other. Many of the tips we’ll discuss in this whitepaper are based on Agile concepts, but are relevant to both types of development processes. So, if your organization uses traditional waterfall methodologies, you can still benefit from Agile concepts to improve quality. This condition has been coined as “Agile-fall.”
“There’s no shame in that if that’s what works,” said testing expert John Bach. “When you’re going through a transition from Waterfall to Agile, that may be the best thing as opposed to a sudden lever-pull one day where you show up and your desk is next to someone else with no walls and there’s a stack of sticky notes and markers on your chair with an email to report to your first standup in 30-minutes.”
If your company is developing quality software; if the development is sustainable and the business is being adequately served by that software, there’s really no need to press the issue. Agile is no panacea for problems related to development, process, and management. However, if you’re willing to make some of the necessary changes, it can be extremely beneficial in the long run.
“Agile methods derive much of their agility by relying on the tacit knowledge embodied in the team, rather than writing the knowledge down in plans.”
- Barry Boehm
Software Engineering Guru

WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
4
Agile Testing Tips
If you’re operating in an Agile development environment, or just want to adopt more real-time, real-world testing processes, here are some tips that should enable you to improve efficiency and quality:

1. Understand the True Role of Testing
People often think the goal of testing should be to simply find all the bugs. Well, that’s not entirely realistic. Actually, it’s impossible! Despite the title of “quality assurance” testers can never truly assure quality, nor can they be expected to find every bug. The real goal of testing should be to improve the software. This is a widely held view of testing in the Agile world.
Despite this, upper management still tends to believes that testing can uncover all the bugs or prove whether or not the software will function as intended. They wrongly equate testing with validation. To understand the true role of testing, one needs to understand that it is a scientific method – a continuous search for information. So instead of thinking of tests in terms of ‘pass’ or ‘fail’, try to think of whether or not they provide valuable information. In an Agile environment, testers should be called upon to provide this valuable information through the development cycle, as opposed to issuing a ‘pass’ or ‘fail grade at the end.
If Agile is to succeed, testing must become a central pillar of the development process. It can seem chaotic at first, but when executed properly, Agile is not chaotic at all. Any methodology that has programmers build unit tests before writing code is orderly by definition! It’s just a different kind of order – one that focuses on code rather than paper, and on value as opposed to blame.

2. Unify SRS and Test Plans
This tip requires that you define your testing strategy early on. This does not have to be a burden. Understand that an SRS (software requirement specification) is quite similar to a test plan. From an optimization perspective, it eliminates the wasted process sometimes referred to as “Test Plan Alchemy”, in which separate test plans are created by merely copy-pasting from the SRS, and then search-and-replacing “The software should do …” with “Make sure that the software does…”
"Testing is the infinite process of comparing the invisible to the ambiguous in order to avoid the unthinkable happening to the anonymous.”
- James Bach
Testing Expert and Author

WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
5
It’s important to note that optimization improves quality. Testers know how to find errors. They also know that errors don’t just appear at the end, they appear throughout the process. Finding errors in logic or in usability is a must for Product Managers during the spec phases, yet their skill sets are often geared towards other areas. Looking at the unified SRS/Test Plan with a tester’s eye, therefore, adds tremendous value in the early stages.

3. Carefully Define Your Testing Coverage Matrix
The multi-dimensional matrix of what needs to be tested should be defined early. The importance of this has grown exponentially the past few years, as the matrix has become increasingly complex:
Figure 3 – Growth in Complexity of the Compliance Matrix
Defining the coverage requirements is an essential part of the specifications process, and thus can be dealt with at an early stage. The size of the coverage matrix has a significant impact on staffing needs and QA costs. Because of this fact, defining it clearly and early helps management allocate resources and determine what can be done in-house versus what should be outsourced for greater coverage. This applies to:
 Operating systems
 Browsers
 Plug-ins, anti-virus programs and firewalls
 Geographic locations
 Languages
 And in the case of mobile applications, handset makers and wireless carriers
Unless your software is designed for a simple and homogenous audience that’s identical to your in-house QA team, it’s likely that you have gaps in your testing coverage. Yet to fill these voids - whether they be browser, OS, location, language or device – would be impractical, expensive and a huge waste of time.
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
6
With the emergence of crowdsourcing, this is no longer the case. Having already assembled a global testing community, agile teams of all sizes are now able to target very specific users for specific assignments.

4. Tell a Story – Not a Use Case
Forget the words “use case” and instead say “storytelling.” In theory, it’s the same thing, but in reality it’s much different. To illustrate this difference, try searching for each of these terms on Google image. “Use case” brings images of dry and intimidating flowcharts and diagrams, while “story” brings friendly and colorful pictures.
Testers will have a similar subconscious reaction: Ask a tester to build a use case and they will think in dry and uninspired terms. But ask them for a story, and you will see the creative juices start to flow. This way, you encourage them to be more aggressive and not settle for simple screen touching. It empowers the testers, without actually using the cliché word “empowering.”
In an Agile environment – where testing is being done continuously – it is especially important that you keep things fresh. Testing expert James Whittaker has been an advocate of “test tours.” Here’s an example from his latest book, Exploratory Testing:
The Supermodel Tour:
For this tour, I want you to think superficially. Whatever you do, don’t go beyond skin deep. This tour is not about function or substance; it’s about looks and first impressions. Think of this as the cool tour that all the beautiful people take; not because the tour is meaningful or a great learning experience. On the contrary, you take this tour just to be seen.
Get the idea? During the Supermodel tour, the focus is not on functionality or real interaction. It’s only on the interface. Take the tour and watch the interface elements. Do they look good? Do they render properly, and is the performance good? As you make changes, does the GUI refresh properly?
Although he is essentially discussing test cases, the same idea applies to use cases: encourage creativity whenever possible.
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
7

5. Capture Meaningful Data
Testing managers often focus on information that is of little use to anyone but themselves - keep this in mind when collecting data. We’re all used to compiling detailed reports that show the number of test cases written (i.e. how many have been run, failure rate, severity levels, etc.) and this is certainly valid data to the testing manager, but who else in your organization will care? Would the business development team, for instance, have any practical use for this?
One type of data that would be of value is direct business impact statistics: Sales missed due to bugs, customer renewal rate and relative cost of defect (see chart below). This type of information is like gold to decision-makers. If you can collect this data, then do so immediately.
Figure 4 – Relative cost of defect, by time of discovery
When collecting data, however, be sure not to go overboard. As testing expert Michael Bolton said in a recent interview:
“When you enslave numbers, they eventually rise up, revolt, and enslave you. These organizations spend so much time collecting the data and talking about it and justifying it and trying to duck blame that they don’t seem to have time to do anything about the actual problems, which generally fall into two categories. One: the organizations are trying to do more work than they can handle with the approaches they’re using. Two: they’re not listening to people that matter—neither to their customers, nor to their own front-line staff, many of whom are closest to the customers.
When your car is about to go off a cliff, it’s a weird time to be thinking about gas mileage and drag coefficients; better to take the right control action—look out the window and steer or use the brake until you’re back on course.”
Some statistics, specifically the containment rate, require a certain degree of self-measurement. Using a technique such as Evidence-Based Scheduling, therefore, can save you a great deal of time, effort and money. You can find an excellent overview of this approach here.
0
20
40
60
80
100
Specification
Design
Coding
Unit Test
Integration Test
Release Test
Post-Release
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
8
6. Fix Broken Windows
“Fixing broken windows’ is a perfect metaphor for this issue. In the 1980’s, an experiment was run to measure the impact that broken windows have on crime in urban neighborhoods. Now, we wouldn’t normally think of broken windows as a cause of crime. But indeed, it was shown that just fixing broken windows in a neighborhood helped decrease the crime rate. The reason for this is that if you give the appearance that you don’t care, then others won’t care either.
It’s the same with your testing efforts. If you continually say “Ignore this bug, it’s a known issue” or “Ignore that test, it’s not yet relevant”, your testing team will begin to listen to you: They’ll be more willing to ignore bugs, and they’ll miss the ones that you don’t want ignored.
7. Make Testing Your Feedback Loop
The testing process not only eliminates bugs, it can also serve as source of customer feedback. If you build a community of testers surrounding your product that truly represent your user base (in terms of demographics, geography, level of knowledge, etc.), you can add feedback into the system before you even launch your products. This is especially important for public web and mobile applications, as opposed to turnkey custom projects.
Feedback generated by a community of testers - whether through beta testing or crowdsourcing - can affirm (or refute) any preconceptions you might have regarding your software. You will get to see your product used under real-world conditions, something that often does not occur in many QA labs. Better yet, this information can be shared with other key decision makers in your organization, notably the sales and marketing departments, who’ll often spend great amounts of money on surveys and research.
“My job as a tester includes understanding and advocating for a great customer experience,” said noted testing blogger Lanette Creamer. “This means feedback beyond ‘does this meet requirements’ and evaluating ‘does this meet the customer needs overall based on all that I know and continue to learn about the customer?’”
8. Timing is Everything
The short release cycles of Agile development can often place QA teams under tight time constraints. Naturally, there are gaps in your staff’s schedules. The two day weekend is almost always a period of low development and testing activity, and this is a good thing – people need their rest to maintain productivity. However, this two day gap need not go to waste.
By adding a crowdsourced community to your testing process, you can deliver software releases for testing each Friday and receive the results by Monday morning, thus compressing the development cycle without adding pressure to in-house staff. It’s one thing to be able to get a release out on schedule, but if you and your staff are working 70 hours a week to get it done, what’s the point? With crowdsourcing, there’s finally an easy, cost-efficient way to augment your in-house QA team.
"Testing is NOT a phase on Agile teams, testing is a way of life. Agile teams test continuously. It’s the only way to ensure that the features implemented during a given iteration or sprint are actually done. ”
- Elisabeth Hendrickson
Quality Tree Software, Inc.
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
9
9. Run Frequent Load Tests
As testing becomes integrated with development – and as testing activities become more and more compressed – it’s easy to forget about the routine responsibilities. Namely, load testing.
At what point will your application’s performance begin to degrade? How many concurrent users can it support? How do the JavaScript-based components of your application behave with 50, 100 or 1000 active users? Where are the bottlenecks between your code base, database, CDN and load balancers? Without answers to these questions, your testing data (and efforts) could be all for naught. If your software can’t hold up under stress, it doesn’t matter how agile your methods are.
With recent innovations in crowdsourced testing and open-source tools – innovations that have greatly reduced cost and time commitment – Agile companies no longer have an excuse for failing to run frequent load tests. Load tests can now be run on extremely short notice, while targeting specific functionality as opposed to the entire application. They can be run with real users or the latest in automated technology. For more on affordable load testing, read Load Testing For Less.
10. Stick To Your Scrums
Far from an Agile testing prerequisite, daily Scrum meetings have proven to be extremely beneficial for teams in the long run, as they help departments to remain focused, energized and coordinated. Writes the Scrum Alliance:
In most companies, development is slowed down by issues identified as impediments during the daily meetings or planning and review meetings. With Scrum, these impediments are prioritized and systematically removed, further increasing productivity and quality. Well-run Scrums achieve the Toyota effect: four times industry average productivity and twelve times better quality.
Scrum removes management pressure from teams. Teams are allowed to select their own work, and then self-organize through close communication and mutual agreement within the team on how best to accomplish the work. In a successful Scrum, this autonomy can significantly improve the quality of life for developers and enhance employee retention for managers.
Too often, however, daily Scrum meetings become weekly meetings, which in turn become monthly meetings. Pretty soon, you no longer recognize Bill from development. So set a time that works for everyone, re-introduce yourself to Bill, and do your best to stick to the schedule. Good luck!
For more on testing in an Agile environment, check out this uTest webinar.
WHITEPAPER: Testing For Agile - Ten Tips for Agile Testing
10
About uTest
Headquartered near Boston, uTest is the world's largest marketplace for software testing services. The company provides real-world testing services through its community of 30,000+ professional testers from over 165 countries. Hundreds of companies - from web start-ups to enterprise software firms - have signed up to get their web, desktop and mobile apps tested by the uTest community.
uTest enables companies to launch higher quality products; get their desktop, web and mobile applications to market faster; and control the cost of testing. Customers specify their QA requirements for tester experience, location, language, OS and browser, and uTest selects the right testers for each project. And because uTest is on-demand, companies pay only for the testing they need.
A brief video introduction is available at www.utest.com/intro. uTest can be contacted at:
uTest, Inc.
153 Cordaville Road
Southborough, MA 01772
p: 1.800.445.3914
e: info@utest.com
w: www.utest.com

Wednesday, June 30, 2010

Test API library

Sharing a URL to a library that will help you write automated tests (API tests, application tests, and everything in between). I'm currently playing around with it and will share my thoughts on this later.

http://testapi.codeplex.com/

MS WPF Testing-API Testing

The link below is a guide on how to test WPF applications and
controls but has a lot of valuable content on API testing in
general


http://windowsclient.net/wpf/white-papers/wpf-app-quality-guide.aspx

Topics that are covered include the following:

  • Information about the WPF programming stack.
  • Information about different levels of testing, from API testing to integration to system testing.
  • A list of available tools and related references.

Sample code is provided wherever applicable

API Testing

What is an API testing? Testing types and purpose.

http://www.testinggeek.com/index.php/testing-types/testing-purpose/108-api-testing

Thursday, June 24, 2010

10 Principles for Agile Testers

I'm reading the book written by Lisa Grispin and Janet Gregory: "Agile Testing: A Practical Guide for Testers and Agile Teams", I suggest reading it.

1) Provide Continuous Feedback
2) Deliver Value to the Customer
3) Enable Face-to-Face Communication
4) Have Courage
5) Keep it Simple
6) Continuously improve
7) Respond to change
8) Self-Organize
9) Focus on People
10) ENJOY what you do!



The ten principles that the authors published should sound familiar. Four of these principles directly cover XP's four values of feedback, communication, courage, and simplicity; these and the remainder are also largely echoed in the agile manifesto and its supporting principles. So what's relevant about how these ten principles apply to agile testing?

Provide continuous feedback - The agile tester is central to providing the team with feedback: Acceptance criteria is the most concrete way to measure positive progress on an agile project. Tests also help identify issues and capture decisions on appropriate future direction.
Deliver value to the customer - The insistence on acceptance tests is a "reality check" on scope creep. Acceptance tests help us all understand what it means to realize a customer's needs.
Enable face-to-face communication - Testers can often be the ones on a team responsible for bridging the communication gap between customers (BAs, product owners, etc.) and programmers. A tester can be the one who physically brings these people together, as well as the one who drives derivation of a common language between the two parties.
Have courage - One of the larger challenges of agile is in sustaining a fast-paced iterative environment, where every two weeks we need to ship quality software. This challenge demands significant courage. Yet the irony is that we also need to understand that iterations afford us opportunities to learn how to fail and adapt--something that can require an even heavier dose of courage!
Keep it simple - Agile testers can help push back against an insistence on overly-elaborate features. Testers can also help the customer understand how to incrementally deliver value. They must learn an appropriate balance of iterative testing-- just enough to provide the right confidence in delivering software.
Practice continuous improvement - A key element of using iterations is to allow for learning to take place. Testers should be part of retrospectives (and if you're not consistently adapting based on the results of retrospectives, you're not agile enough.) Testers should also treat their career as a profession by continually learning more about testing practices, tools, and the system itself.
Respond to change - Agile testing is dramatically different in that there are few true "cutoff points"--things keep changing and thus must be continually re-tested. This requires automation! The agile tester learns to cope with the customer changing his or her mind from iteration to iteration, and correspondingly learns how to incrementally flesh out necessary testing specifications.
Self-organize - In a true agile team, everyone has the capability to act as a tester. Agile teams know how to shift focus as needed; from time to time, for example, it may be prudent for programmers to turn their attention toward helping verify a "done" but not "done done" feature.
Focus on people - Testers are often at the bottom of the totem pole in a non-agile software development team. Work is thrown at them, their available slice of time is continually squished, and programmers often look upon them as lessers. In an agile team, every shares the responsibility for ensuring that we are building quality product. Agile testers are key in bringing their testing expertise to the team.
Enjoy - The ability to help drive the process and be a true, equal contributor to a team can be extremely gratifying for an agile tester.

Thursday, June 17, 2010

Dates in MySQL

Throughout history many different calendar systems have been developed around the world. Although the way of counting years still varies, most countries and regions have adopted the Roman-Nordic system of months and weekdays - except, ironically enough, a small corner of Scandinavia with a high dolphin population ;-).

mysql> CREATE TABLE datetest (id INT, a_date DATE);Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO datetest VALUES(1, '2003-02-31');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM datetest;
+------+------------+
| id | a_date |
+------+------------+
| 1 | 2003-02-31 |
+------+------------+
1 row in set (0.00 sec

So, what's the day before February 31st?

mysql> SELECT DATE_SUB('2003-02-31', INTERVAL 1 DAY);
+----------------------------------------+
| DATE_SUB('2003-02-31', INTERVAL 1 DAY) |
+----------------------------------------+
| 2003-03-02 |
+----------------------------------------+
1 row in set (0.00 sec)

Which is of course two days before the day after February 31st:

mysql> SELECT DATE_ADD('2003-02-31', INTERVAL 1 DAY);
+----------------------------------------+
| DATE_ADD('2003-02-31', INTERVAL 1 DAY) |
+----------------------------------------+
| 2003-03-04 |
+----------------------------------------+
1 row in set (0.00 sec)

So what kind of checking does MySQL do on date values? A hint:
If you use really malformed dates, the result is NULL.


Obviously, the 31st of February is not malformed enough. Let's try again:
mysql> SELECT DATE_ADD('2003-02-!!!!!!31!!!!!', INTERVAL 1 DAY);
+---------------------------------------------------+
| DATE_ADD('2003-02-!!!!!!31!!!!!', INTERVAL 1 DAY) |
+---------------------------------------------------+
| 2003-03-04 |
+---------------------------------------------------+
1 row in set (0.00 sec)

Not exaclty.
mysql> SELECT DATE_ADD('2003-02-99', INTERVAL 1 DAY);
+----------------------------------------+
| DATE_ADD('2003-02-99', INTERVAL 1 DAY) |
+----------------------------------------+
| NULL |
+----------------------------------------+
1 row in set (0.00 sec


The MySQL server only performs basic checking on the validity of a date: days 00-31, months 00-12, years 1000-9999. Any date not within this range will revert to 0000-00-00. Please note that this still allows you to store invalid dates such as 2002-04-31. It allows web applications to store data from a form without further checking. To ensure a date is valid, perform a check in your application.

Wednesday, May 26, 2010

Count the number of links & Objects in a web page by ChildObjects Method



Dim objDesc, objAllLinks, intNumberOfLinks
Set objDesc = Description.Create()
objDesc("micclass").Value = "Link"
Set objAllLinks = Browser("creationtime:=0").
Page("micclass:=Page").ChildObjects(objDesc)
intNumberOfLinks = objAllLinks.Count
msgbox intNumberOfLinks





QTP script for Message Boxes That Close Automatically

The function below shows a message box that disappears after the specified timeout (in seconds). The script execution then continues.

Public Sub MsgBoxTimeout (Text, Title, TimeOut)

Set WshShell = CreateObject("WScript.Shell")

WshShell.Popup Text, TimeOut, Title

If TimeOut is 0, it behaves just like a normal message box. If TimeOut is greater than 0, the dialog box disappears after the specified number of seconds.

Thursday, May 20, 2010

What Motivates QA Engineer

Clear goals and vision for testing. It is important to know where we are heading in testing and that this is agreed with senior management. Discussing the terms or reference for testing with your team, producing a one page document and publicising it. This shows commitment towards testing.

Support for your engineers. It is important for QA Managers, to listen to the team. Discuss various courses and staff development with your team. Think about sending them on testing courses, conferences or testing seminars to improve their skill.

It is also important that we are seen to strike the right balance between hands-off and hands-on QA management. Small things like sitting with the testers rather than in a large office and actually helping with testing will motivate the team. It shows them that you are involved rather than removed.

Promoting the value of testing. Another way to motivate the team is to promote the value of testing at every opportunity. This is such an important aspect because so often QA engineers are not valued for the work they do. The primary reason, is that we do not produce anything that is tangible. The QA Manager must constantly reflect and report on how individuals, as well as the whole team, have added value to the project and company.

Career path & Salary acknowledged. Salaries for testers should reflect their skill and the value that they add to the company. There should be no differentiation between QA, developer and designer's salary structures.

One of Maslow's motivational needs is self realization an opportunity to improve in the job we find ourselves in. Therefore a career path for SQA is essential if we are going to meet this need. Unfortunately many organisations do not have a clearly defined career path for the QA Engineers.

Wednesday, May 5, 2010

Test Automation ROI Calculator

I was reading an article about Automation and as we all know it all drills down to ROI and found this calculator. Haven't played with it enough to share my thoughts on it, but will do it as soon as I look into it in more details.

You can find it here:
http://www.aspiresys.com/testautomationroi/

Tuesday, May 4, 2010


It doesn't matter how clever you are at automating a test, or how well you do it. If the test itself achieves nothing then all you end up with is a test that achieves nothing faster." - Mark Fewster

Wednesday, April 14, 2010

How do I report a "helpful" bug?

Imagine a customer telling you that your product is not working. You would probably have many questions, just to name a few:

  • How serious is the situation?
  • Is there a defect in your product, or is it in another part of the customer system?
  • Is the issue already known?
  • Is a solution already available?

Now imagine hundreds and thousands of such incidents. How would you analyze these incidents as quickly, efficiently, and accurately as possible?

As QA Engineers our goal is to assist developers in creating a report that is complete and compact.

Complete report allows developers to reproduce the problem quickly.

Compact report helps focus the investigation so that we can quickly determine the cause of the behavior.

There are many bug tracking systems available, but the effectiveness of the system is in your hand, after all, you are the one who is reporting a bug (in most cases).

There are several basic parts of a report. Below are common field for most of the bug tracking systems. All of them are important in one way or another, but in this article we are focusing on

1) Overview

2) Description

Overview

The overview provides us with a background for understanding the issue.This becomes the report's name. A good overview is a unique identifier that offers a rough idea of the issue.

Description

This is a framework for understanding the problem. If you wish, you may include the cause of the problem and a proposed solution. Write as short a description as possible. Use a professional tone and avoid the impulse to vent your frustration.

As long as a report is complete, less is more. Developers tend to review shorter reports first, because their time is limited. By QA spending a little time to a report more concise often results in a faster response time.


Examples

><><><><><<><><><><><><><><><><><><><><><><><><><><><>


LONG REPORT- Vague and Complicated.

SYNOPSIS:

My calculator is not working.

FULL PRODUCT VERSION:

v1, v2, v3

FULL OS VERSION:

Cross platform

A DESCRIPTION OF THE PROBLEM:

My calculator is not producing the right answer. Multiplying two doubles resulted in an imprecise product that is missing the last significant digit.

<><><><><><><><><><><><><><><><><><><><><><

SYNOPSIS:

Floating point multiplication is imprecise when the product has many significant digits.

FULL PRODUCT VERSION:
Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)

FULL OS VERSION:

Microsoft Windows XP [Version 5.1.2600]

A DESCRIPTION OF THE PROBLEM:

Multiplying two doubles resulted in an imprecise product. The virtual machine dropped the last significant digit when the product had many significant digits.

Wednesday, March 31, 2010

How to select QA Tools

Selecting QA tools

I have read an article written by Margaret Fross, sharing it with you.

This paper examines the methods for identifying and choosing a QA collaboration tool, which can serve to support and reinforce process for an organization.

  • The following points will be addressed:
  • Introduction—increasing importance of quality and what tools can facilitate quality
  • Definition of the term QA collaboration tool—what is it and what can it do for you
  • How to select a QA collaboration tool—key components of a good QA collaboration tool

Introduction

Because of customer expectations and some recent high-profile debacles, the software industry has begun to shift its focus toward improving software quality. For example, companies such as Bank of America, Microsoft, and Cisco were recently featured in an InformationWeek.com article touting "Quality First"

Of course time to market is still critical, but there is somewhat less willingness to sacrifice quality just to push software out the door.

  • When organizations turn their focus to quality, they can begin by asking themselves a few questions:
  • What parts of the organization have a stake in quality?
  • What key quality assurance components are missing from our current development methods?
  • What tools can be adopted and used by all members within the organization to improve quality?

The answers are fairly simple. All members of an organization have a stake in quality. This includes people selling, answering phones, developing applications, testing applications, marketing, and managing at an upper executive level. Anyone who may have contact at any time with the product or the customer has a stake in quality.

Next, organizations need to evaluate what goes on—from soup to nuts—when a new product concept or release comes up, or is planned. This is the organization’s process to get from the drawing board to the marketplace.

Ultimately, when talking about tools to unite all components of an organization to support its quality objectives, a good place to start is collaboration tools.

What is a QA Collaboration Tool?

A QA collaboration tool encompasses key aspects of the software quality process, providing many functions such as requirements, defect, and test case management in one easy-to-use tool. The purpose of a QA collaboration tool is to bring team members together, providing a central location for the functions above as well as provide a communication forum, document storage, and shared appointment creation. It can serve to alleviate many challenges faced by organizations, including:

Process: Lack of a defined process leads to chaotic unpredictable development. A defined process understood and used by all team members leads to repeatability and predictability. Project estimators can look at past projects to provide time estimate for future projects, predict defect rates, and make better decisions about resource needs.

Communication: Lack of communication leads to misunderstood requirements, missed deadlines, false status updates and general ignorance in the organization. This results in extra work for all team members. Cross-functional collaboration provides a forum for all team members, regardless of location or department, to communicate effectively, keeping everyone on the same page. This shared knowledge leads to a more coordinated effort resulting in on-time and on-budget delivery of high-quality software.

Traceability: Lack of a robust report tool leads to confusion among team members and upper management. Status reports are a critical component of any project. They serve to alert managers to staffing needs, development issues, and whether the project is on track or not. The ability to pull up accurate, real-time status reports at any given time allows decision makers to take action on items. Managers are better able to make informed decisions and mitigate risks. The team members in charge of delivering work items are empowered to take more ownership of their specific piece of the pie, giving them defined goals to shoot for and providing a better sense of accomplishment.

The benefits described above are just a few of the many organizations will experience should they choose to adopt a QA tool promoting collaboration.

What Constitutes a Good QA Collaboration Tool?

When selecting a QA Collaboration Tool, as with any tool, you must first assess the needs of the organization versus the budget and time that is allotted to bring in a new tool. Factors to consider are:

Cost: Examine the cost of each tool by looking at various licensing schemes (e.g., named users or concurrent users). Take into consideration any additional fees (e.g., yearly or other support fees). Identify any costs associated with implementation, conversion of existing data, staff training, and hardware.

Ease of use: Too many companies have "shelf-ware" (software collecting dust on shelves) because the tools purchased proved to be too difficult to implement or were too time-consuming to maintain. This is a tremendous waste of money and resources, remembering the time that originally went into selecting and attempting to implement the tool. Look for a tool that will fit well with what you may already be using. Pay particular attention to any import/export features that may prove useful when moving data from old systems to new systems. Good tools are ones in which an administrator can make changes on the fly, that don’t require specialized training or development skills, and are intuitive to your target user. It cannot be stressed enough: the easier you can implement a tool, the more likely you are to effectively use the tool.

Reliability: Will the tool support the user activity you predict? Can all potential users adequately perform their job functions free from frustration? Is there an uptime or availability guarantee with the tool? Does the vendor discuss the frequency with which updates are sent and will those updates necessitate down time for installation? These are important points to consider when selecting a tool.

Support: Verify that the vendor provides support. If you are paying support fees or maintenance fees, what are you getting for those fees? Look at what type of support the vendor provides. Questions to ask are: what is the average call back time for phone support and how fast are e-mail inquiries resolved? What is the charge or availability for on-site support and training?

Now let’s look at the components that make up a QA collaboration tool. Remember that the more functions you can get from one tool the easier the tool will be for your users, because they will not have to go into multiple applications to perform different functions and to get information. Desired components are:

Scheduling: A place where meetings and reminders can be created and added to team member’s calendars; project deadlines can also be displayed here.

To Do List: All projects have items that do not fit into obvious categories like Requirements and Test Case management and do not require other team members. A To Do List is a place where individuals can add personal items (such as reminders to provide a status update).

Project Tasks: Every project has deliverables and milestones. Deliverables include deliverables from the project and deliverables that are necessary to complete the project. Milestones are important because they provide goals for the group as well as a sense of accomplishment when those goals are reached. Milestones provide a simple way to tell at a glance if a project is on schedule. Having a place where tasks like deliverables and milestones can be stored, edited, and viewed by all team members promotes the accountability and traceability aspects of a solid quality assurance process.

Requirements Management: Successful projects start with clearly defined and agreed-upon requirements. One way to ensure you get good requirements is to make sure everyone is providing the same information for every requirement. That’s where a function for requirements management comes in. Users have a format with specific fields in which to enter requirement data. Requirements are then assigned directly to team members. A central repository where users can add and edit requirements for specific projects provides a way to streamline and promote the requirements definition process. The history of that particular requirement is also tracked, which can help when inspecting requirements and comparing how a requirement evolved to its current state.


Test Case Management: Test cases should tie back to specific requirements. Using the same tool for both requirements and test case management instantly provides that traceability without impacting the user. Test cases should also be as detailed as possible. Use of a tool for test case development helps ensure the users are all adding critical details when writing their test case. Test cases can then be assigned to specific team members for maintenance and execution. With some tools, changing the status of a test case to "Failed" will automatically generate a Defect record. As with requirements, test cases will need frequent editing and the change history must be tracked.

Defect Management: Defects are typically filed when a test case fails. By selecting a tool with integrated components users will be able to trace their defects back to specific test cases that trace back to specific requirements. Managing defects in this way assists team members with risk mitigation and analysis of likely failure points in the application. Defect management tools also provide a place to track support issues and enhancement requests. Use of a standard form for reporting issues guarantees several thing: easy decision making when setting work priorities, faster resolution of items, and a faster turn around time once the item reaches the test team.

Reporting: Decision makers within any organization rely on accurate, real-time information upon which to base their decisions. This is where reporting is crucial. Look for a tool that allows users to create custom reports that they can then generate at will. A good reporting function facilitates easy distribution, resulting in information sharing. With robust reporting tools, organization members—particularly upper-management—will be able to obtain accurate status updates when they most need them. This reduces the amount of time a project or team lead spends providing status to different audiences. The reporting function also comes in handy when estimating future projects. Timelines and staffing needs are predicted more accurately when looking at specific data from past projects.

Document Storage: Over the course of a project many documents are created (design specifications, requirements matrices, test plans, test reports). Using a central repository for all documents created during the life of a project ensures that all team members can access the information they need to complete their tasks. Documents stored in a central location are easier to update and maintain than those stored on local hard drives or scattered around in different network locations.

Open Communication Forum: With the influx of telecommuting, companies have a difficult time getting team members together. Team members not working out of a central office often feel left out of the loop. Creating an open communication forum for both local and remote team members will open the lines of communication. Remote team members will feel more part of the team and less isolated. Team members will be able to easily communicate when customer needs change, when technical questions come up, and when project timelines shift. This promotes better decision-making and also provides an archive of what information was available when decisions were made. Remember that shared knowledge leads to more coordinated and successful efforts.

If you examine the functions detailed above and compare them to the process components of the Software Development Life Cycle you will see that the functions provide a vehicle to promote a stable, predictable quality process.

Additional Components and Considerations

Other than the core features described above, what else can you look for in a collaboration tool?

Look for a tool that supports some form of customization. You will want to be able to add your own fields as well as delete existing fields from the forms used to enter requirements, test cases, and defects. This helps you adapt the tool to your organizational needs.

Don’t forget security. Most companies try to avoid airing their dirty laundry to clients (i.e. defects). If you find yourself needing to allow clients to view, modify, or add requirements, you probably do not want them to view other things—especially the defect list. Being able to add, delete, and modify users (and their access permissions) and change security configurations is a basic function that should be present in any tool you consider.

Any tool you look at seriously should be robust, expandable, and have no limits regarding the number of projects you can create. Look for a tool that will allow you to easily create and manage multiple projects simultaneously.

A good Help system can make a big difference in adoption and usage of any QA collaboration tool. This includes online help, documentation (including training and installation documents), and vendor support. All team members should be thoroughly trained on the product prior to usage and understand the chain of events for resolution of a question or support item. This can save your team members a lot of stress and aggravation and they will be more willing to accept the changes the tool promotes.

What about related products? Does the vendor have any other products in its suite that work with the tool to further enhance the collaborative nature of the tool? For instance, what about a trouble-ticket function? Something that your clients can access to log defects directly without allowing them to see existing defects filed internally or by other clients? Defect management can end up being time-consuming and frustrating if you have to monitor two different systems depending on who filed the defect. Other peripheral components to consider are e-mail and database functions.

Select a tool that will work well with your e-mail system (since typically users are notified when items are assigned to them via e-mail). Verify whether or not existing data can be imported into the tool you are evaluating. Examine the relative ease of getting data into the system, and of unloading the data if necessary. Finally, do not purchase any tool without first receiving a product demonstration. Participate in a multi-week trial and try to start implementing the tool with your data. You would never purchase a car before driving it; purchasing a tool is no different.