Tuesday 13 August 2013

Software Testing

Good QA team needs a proper software staging environment for testing, If you agree please share your thoughts.

Yes, I completely agree with this statement because the test environment & conditions which we get during the testing phase can never actually matches up with the production environment. Especially the test data which we input in the application for testing is kind of constrained. So for End to End testing it is must for QA to get a environment we need a environment which is real imitation of production and hence here is why concept of staging environment came in to limelight.

There are numerous issues with the content in QA environment due to limited set of data which gets resolved by its own in the production environment after the deployment. But what if doesn’t gets resolved? What if it was the functional issue of application and not due to limited data? Being a tester one can’t rely on assumption. So it is must do task for a QA to test the application in proper staging environment before it gets deployed to the production.

As a Good QA team, we always tries to provide the best experience to customer by performing quality testing with what we have and it is rarely possible that what we have matches with production. While 'Staging Environment' is the exact replica of 'Production Environment'. Staging environment is separated from development server. It means, 'Staging Environment' allows the user to test the application in 'Production Environment' without providing access of application for customers. So QA can find bugs, performance issues, platform related issues and many other critical issues on 'Staging Environment' before the final product is pushed for the customers. QA team would be more confident that any critical issues or differences between dev server and final product, does not exists.

Staging environment is a replica of production environment i.e. the configuration of staging is same as that of production. Once the build pass testing on QA tier it needs to be tested on a configuration that is similar to production. Once QA team perform testing on staging environment and think that build is a production candidate they ask users (or business analysts) to perform UAT on the build to verify that everything is working fine. If staging environment does not exist then many issues can go into production without anyone's knowledge and hence can cost more in the later stages.

QA or software staging environment allows testing the software without closing down development work.  If development is in progress on the same environment it would be difficult for both the teams (dev and QA) to keep up with the current situation.  One person may break the software that has been tested while another person could be trying to test   .  Without the two being separate there is no way to do proper testing.  So, good QA team needs a proper software staging environment for testing to follow the organized approach.

"Testing on a staging environment provides a more precise measure of performance capacity and functional accuracy. As Web applications become more mission-critical for end-users, it becomes more and more important to test on environments that exactly imitate production because it's production where customers use your application. Any defect found in production is a fail to notice or an escape and it is not acceptable also from business point of view. Any defects experienced by customers in production negatively impact your application's and company's reputation.
Customers prefer not to be amazed. No one wants their system to go down or to go really slow or crash abruptly. As workers, we don't want to be negatively impacted at all by any kind of software up gradations. As a professionals, we want software upgrades to be flawless, barely discernible and a non-event. The only way to make sure that your software doesn't stop or obstruct with your professional users is to test on a staging environment.
As a company, it's attractive to go around creating a staging environment for per testing of production. However, when producing mission-critical software of any kind, the staging environment is essential to ongoing success.
"

Tuesday 18 June 2013

Software Testing


What do you think are the 3 most important Software Testing skills and why do you think so.

In today’s world Software Testing industry is growing at a very rapid pace. The number of people pursuing software testing as a career has grown immensely over the years. The need to deliver quality products has become the foremost goal of the software testing companies. So in order to achieve this, need of good software testers is tremendous.
Hence the 3 most important skills which a good software tester must possess would be:

1. Out of the Box thinkers: A good software tester should be able to create multiple what if scenarios. S/He should be able to put him/herself in customer’s shoes and apply all the scenarios in the workflow of the application.

2. Excellent Communication Skills: To be able to communicate the issue to the development team is the most important job of the tester. Hence every tester must possess excellent communication skill (Oral and Written both) in order to communicate the issues faced by him/her in the most effective and efficient manner.

3. Quick Learner: This is last and most important quality that a tester must have is the ability to adapt and learn quickly. The 2 applications for testing given to the tester may of completely different domains. For eg. One A Banking Website and another A Learning Management System. So tester needs to adapt himself quickly and should be able to switch quickly from banking website to a LMS.

4. Analytical Skills - An important goal of testing is to identify the hidden errors. To be an effective tester, the person must be able to analyze the given business situation and judge all the possible scenarios. He should have the capability to identify and test unfamiliar scenarios. Creating logical scenarios and validating the application under test before releasing it to production. This can be done effectively only by a person who has strong analytical skills.

5. Creativity – A person should have the out-of-the-box thinking so that s/he should exercise the system which requires one to try non-intuitive ways of accomplishing tasks. Those who are Task-oriented and receive a set of instructions and follow the given instruction every time cannot become good testers.

6. Communication Skills - Excellent communication skills are very important for reporting bugs. A tester must be able to effectively communicate his thoughts and issues encountered in the application. Arguments should be supported by facts; the language should be pragmatic rather than philosophical.

7. Ability to think out of the box, if a tester has the ability to think and apply such scenarios which are covering a vast logical area then the chances of finding defects increases.

8. Passion and Enthusiasm, as testing is a repetitive activity so sometimes it becomes very boring and tester losses its interest in finding bugs.

9. The most important skill is communication, as it is very important to communicate your findings to the developer so that it can easily understood to the developer and can fix it quickly