Testing express

Testing express

Sunday, January 6, 2013

First post this year - Automation Buzz

Don't get desperate to build castle in one day.

The context is, testers doing manual testing suddenly realize that they need to learn automation, because one of his friends told that automation is mandatory in resume these days.

So, my dear friend, goes to a automation tools forum and asks a question.

"I am new to automation, please guide me how I can learn it quickly, send me code, sample examples, tutorials...blah...blah..blah".

On one hand it's good that my friend is quick to act, as the saying does "Better late than never". But still, he needs to calm down and think, think and think.

He has got a good start and now he needs to plan how he will achieve this goal, what are the methods to achieve this goal.

-Ask yourself why you need to learn automation tool
-Research on what automation tools are available.
-What technologies they support
-Does it support the application you test in your company
-Do you need any programming knowledge
-Ask friends who have experience in automation
-Install tool, follow tutorials, get hands dirty, read, do and reflect

I can keep writing more...

Automation is good if applied sanely, but it cannot be a quick fix for each and every testing problem.

I just realized, this is my first post of this year.

Happy New Year :)


Thursday, December 20, 2012

Rip the Pessimism


I was interacting with a Junior team member and he was saying that, "There is no importance for QA". He was referring to the speech of head of the company. 

Suddenly I did flashback about the year end speech. I remembered one of the statement that stuck me hard "we have delivered lot of products this year, this was possible due to quick iterations".

I was wondering what does he mean by quick iterations? Now I relate this with the juniors complain that QA is not valued. Then I tried to explain him. How are quick iterations possible? you cannot just develop+fix+deliver. This is not an iteration. develop+test+fix, This is called an iteration. test part is completely Ignored, people think that products are delivered in quick iterations without any testing efforts?
Ignorance at its best.

Quality of build delivered depends on many factors

1.Experience of a developer
2.Expertise on the technology and platform for which the app is built
3.Knowledge about the domain
4.Attitude for delivering quality code that has minimal defects if they are expected to be delivered quickly

These factors are never considered or not spoken at all. They are all assumed that they are part of a quick delivery process.

The role of QA in delivering a product in quick iterations is significant

QA gives developers 
-Freedom to make mistakes
-Experiment with design
-Helps test their solutions quickly
-Provides valuble information
-Give continous feedback

but there is no acknowledgement, because there is a lack of awareness from management. The only thing business/management is interested is to roll out the product as quickly as possible. credit being given to creator but not even a small part to the person who supported to make the product better for release. This is the sad part but we as testers have to live with it. Infact, we can proudly appreciate ourselves because we contribute without any expectations. I draw a parallel with the nature, it gives us so much still we don't appreciate and take it for granted :)

This is what I had to tell my junior team member to motivate him. I could see a broad smile on his face with pessimism turning to optimism.



Sunday, November 4, 2012

Performance Testing - An Experience

The best part our minds is that it always wants something new to do. I had an opportunity to do some performance testing which was something different from my daily routine.

Performance testing is considered to be part of non-functional testing group. The term itself suggests that in this type of technique, testers measure the performance application, server or the database. This process is similar to any other testing process, only difference is the requirements and goals. 

My approach was to keep it simple. Start with a plan. Since I did not have any specific requirements, I had  to define a baseline requirements based on conversation with server architect & database architect.

My first step was to define a baseline requirement which was my performance goal. Now few questions arise in my mind

Are these goals for the whole application? or for specific components? I made it clear again by discussion with all stakeholders that this was for the whole application. This helps in moving forward because you need to clear with what you are doing.

Next step was to choose a tool for performance testing. what tools must I use open-source or commercial? so, I started analyzing performance test tools that will fulfill my goals. since the project did not have a budget to afford a commercial tool at this stage of project, I had a very easy decision, I had to choose a open-source tool. After some analysis, I chose Jmeter for several reasons.

-open source & free
-easy to use
-has lot of features 
-most important it fulfills my goal

Do we have an environment for performance test? because if you do a performance test anywhere, then it will have consequences like results may not be correct, others may get affected who are using the same environment..etc.

I choose a environment that was under control so that it neither affects the results or any other persons.

We are entering the execution phase now. we have set up the environment and we need to do several runs to determine the results and information during runs.

All runs may not be successful but each run will give important information even if it fails.

After every run there were some steps needed in the environment setup to get the application back to what we call the initial or clean state.

For ever run a report was generated that captured all the details and it was presented to all stakeholders. The architect's did some tuning to see that we achieve the performance goals.

Finally, Performance goals for the sprint were achieved. During this experience I learned a lot of things that I like to share.

1.Baseline requirements are very important, they act as a goal for the performance test
2.Environment must be set up correctly. 
3.Identify factors that can affect the test results
4.Load test tool can simulate a limited no of users from a client machine. we need to know that number.
5.The tests run within an intranet will give different results. This may not be the case in real world scenario
6.Discuss with architect's based on information in test reports, what tuning they are doing for removing the bottlenecks, so that you can focus more in those areas
7.Jmeter has both GUI and NON-GUI interfaces. It makes a huge difference
8.While running tests you need to be observing the activity in server and db.Logs is one of the sources.

I am writing this article as my thoughts flow. It may not be as per best writing guidelines or rules, apologies for that. I will try to improve with each of my write ups.



Wednesday, August 29, 2012

Escape special characters - RubySelenium


We use JIRA as a defect tracking system. For a project we were not able to log defects in JIRA due to lack of time and frequent builds. we instead used google doc to log defects and track them. As the project moved on defects kept piling up. One fine day new manager took charge of this project and suggested to move all defects from googledoc to JIRA. 

The first thought that came to my mind was to use automation tool to log defects. without giving a second thought and not bothering about any other solutions, I started working on it, because It had been a long time since I used automation tool, This was the only reason for not thinking about any other alternatives.

I decided to use selenium with ruby for this task. First I recorded the script with Selenium IDE and then exported it as a Ruby test. when I ran the test I found something strange. I was getting an error "Incorrect password", whereas I was able to login manually into JIRA login page. I was hitting my head to figure out this strange behavior.

I tried to enter a passoword that didn't have special charcters, and the tool was doing it perfectly but when I gave it my original password with special characters, It was not even typing it.At one instance I thought of changing my password to something that doesn't have any special characters, But it was not possible.So I choose to put my query in selenium groups. I got a reply the next day. I want to share that with you.

In RUBY you need to escape the special characters, since my test was in ruby it was not working, when I escaped them with '\' it worked like a breeze :)

Any problem is not a small problem until it is solved 

I hope this post helps if you bump into a similar problem

Sunday, August 26, 2012

HTML5+CSS+JS - Bringing power to browsers



I am amazed at the way browsers use is changing. The buzz word most heard with web developers is HTML5, because it comes with a lot of promise for web developers.

The new elements in HTML5 have helped companies to build games, make the user experience more interactive with audio support. one of the most common terms with game developers is the <canvas> tag. There are quite few libraries that have been built to showcase the power of working with canvas and the results are astonishing. HTML5+Javascript+CSS are becoming one of the powerful technologies to rollout smart apps that attract the users.

But, there are challenges as well like

IE doesn't support the canvas tag
Developed apps must be compatible with browsers and devices
Javascript is not considered to be as robust as programming languages like Java....
Performance issues

Its also a challenge for testers to test the apps built using these platforms, Though some apps are small but still they need to work well on all platforms. Time pressure to rollout apps ASAP still worsens the problems.

I have tried my hands to do some experiment using html5 and see what it is all about, my experience is that it is fun to play with these technologies, It doesn't need a heavy setup as with programming languages, You just need a text editor, and a browsers. The browser have very good debugging tools that makes it more easy. I found a lot of problems both from a developer's perspective and a tester's perspective.

I built a bouncing balls POC using HTML5, CSS and Javascript. It was fun.

I promised myself to jump to next level and build a nice game next time  :)


Monday, July 2, 2012

Version control - Part1


As a tester,

How may times have you encountered this

1)You recieved a wrong build?
2)A closed defect is reproducible?
3)Fixes are missing from build?
4)QA environment has different version from dev environment?

Software versioning and revision control is one of the most important activity of  a software project. There are many freeware and commercial version control tools available in market, The main aim is to help developers manage code.

Why should a tester know about version control? what is the use? A tester gets a deployed build to test from a deployment team or a development team. why does he need to worry?

Because, This is one of the potential areas of bugs being created.

For Example, Imagine a software project team divided into different groups: server team, client team, graphics team, database team etc. Eventhough they all work on different groups of a project, they all use a common source control tool to manage and maintain their code. This is infact a place where many things can go wrong. That is why project managers or leads define a common structure and best practices for all the groups to follow so that they do not make mistakes.

In theory this looks easy but in practical, it is very hard to avoid mistakes. Sofware development is considered a complex activity, As the project scope increase, so does the team size and with the changing dynamics, it is very important to keep every thing in sync.

Today I got an opportunity to attend a session on SVN. It was very interesting. I heard a lot of terms used in the session which I will list out here

Trunk
Branch
Tag
Merge
Conflict
Commit
Update
Repository
Version

In another post we will discuss more about  each of these terms.

Sunday, July 1, 2012

What Testing IS and NOT



A tester is the only person in a software project who has priviledge of knowing the product end-to-end. This is unlike their developer counterparts, who are restricted to certain feature or module.

Testing is considered a natural trait in any person. I feel this is a misconception. Though, testing is a natural activity, but It needs more skills, passion and attitude. Tester's only get better by practice. The more complex the software the more challenging it is for any tester.

There may be few simple applications, which gives the tendency that testing is simple. For me, testing is an interesting & challenging activity, where I can use and apply my skills. Testing is not bounded to one specific area, unlike developers who are labeled by the technology. EG; Java developers, C++ developers. Even there are many agencies or companies who try to label testers as database testers, windows testers. This is irrelavant.

Testing is similar to solving puzzles where you have different categories of puzzles, similarly different applications in testing terms. The skills needed are same but strategies may differ.

A tester who is testing a banking application cannot use the same technique/methodologies when he is testing a massive multiplayer game. There is nothing as a "Banking applications" tester or a "Gaming" tester. A tester who can test banking application can test gaming application as well and vice versa. The only thing that changes is domain.

Because testing is considered a natural trait, we can draw inspiration from different fields of professions for ideas & skills. Tester's can wear different kinds of hats based on situations

Testers are like
Detectives - Investigation skills
Journalists - Question asking abilities
Scientists - Analysis, problem solving
Politicians - Diplomatic
Military - Team management & leadership skills

Testing is NOT
-a simple activity
-last option
-something everyone can do
-the only activity of finding bugs
-about finding mistakes