Testing express

Testing express

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

Monday, June 25, 2012

Recursion - A simple example in ruby

class Recursion 
   def sum_positive(n)
 
     if  n==1
        $t = 1
    else
        $t1= n.to_i + sum_positive(n-1)
    end


   end

end

s = Recursion.new
puts s.sum_positive(9)


Problem: Write a recursive Ruby function sum_positive(n) that has one parameter n that represents a positive integer. The function should return the sum of the first n positive integers. Your solution must use recursion and should not have a loop in it.
Eg;
sum_positive(5) must give

5+4+3+2+1 = 15 as output

Do you have a better solution?

Why every release is a "ThRilleR"


I bet you too might have experienced this. Thrillers have
  • Tension
  • Suspense
  • Excitement 
"A thriller is villain-driven plot, whereby he or she presents obstacles that the hero must overcome" - wikepedia

I agree with the above statement from wiki. Now you need to fit in the characters in the above statement.
Don't take it seriously ;)

I always keep thinking, why this happens?

Improper planning
Lack of motivation in team
Lot of changes
Unexpected deadlines
Unreasonable expectations
Lacking a good leader
Too much commitment
Casualness

Add on, if you can share from your experiences

"Paani da rang vekh ke, akhiyaan cho hanju rul de" = "Seeing the color of water, tears roll down my eyes" -AK

Saturday, May 19, 2012

Adding power to browsers - node.js

As a tester I need to keep myself updated with the latest technologies and tools, So I thought of putting down my learning experiences here

There is a new technology in the javascript land called "node.js", it is being used in one of our projects. This gave me some motivation to explore it.

I was thinking, where does node.js fit in the knowledge/information I have? I started with browser as a starting point. The main basic elements of a browser are HTML, JavaScript & CSS. I will be referring JavaScipt as js, because I may need to use it often. 
what problem does js solve?
Html can serve only static webpages, js can serve dynamic webpages.
I tried to find out more information about js:

1) js is an interpreted language with object-oriented capabilities 
2) js runs in a single threaded environment, meaning multiple scripts cannot run at the same time 
3) Each of the popular browsers use different js engines
IE – Chakra
FF – SpiderMonkey(built in C++), Rhino(built in Java)
Safari – Nitro
Chrome – V8

What is node.js?
"node is a bunch of sugar on top of virtual machine v8" --Quote from Ryan Dhal, creator of node.js

It means node is a tool built on top of google's js engine v8, this is the same engine which chrome browser uses.

What problem does node.js solve?
js has concurrency issues, it is not possible to do several things at same time, node addresses this concurrency problem. you can run multiple scripts at same time. It means response times are fast.

Eventhough node solves this problem, it has some limitations
its still young and immature, you can listen to this video to know more about node from the creator ryan dhal http://www.youtube.com/watch?v=jo_B4LTHi3I

Important points
  • generally js is executed in browsers, with node you can execute js from outside a browser
  • node has a command line tool/console, similar to irb in ruby
  • you can execute javascript file from the command line tool/console using node command
For testers this can be a important tool in the toolkit for learning & exploring js, which is an important element of a browser.

Friday, May 4, 2012

Automation - The buzz word

There is a flood of automation tools in market in the past few years. "Automation" has become a buzz word. Every manager wants his team to find automated solutions to speed up the testing efforts.

From a tester's perspective, what does it mean?

1. Opportunity to explore and learn new tools
2. Learn a new scripting language that can give  new insight to a tester
3. Break routine patterns as a tester. Eg; thinking beyond black box
4. Chance to think from a development perspective

From a management perspective, what does it mean?

1. How much do we save with automation
2. Can we automate everything?
3. Can we move testers to other projects, because automation will free up their time
4. There is a new automation tool in market, can we do a quick POC and implement?

There are lot of expectations that cannot be fulfilled because the perception is "Automation can solve all problems on click of a button"

This cannot be true, because automation is similar to development effort and can be complex if you plan to automate big projects.

Few questions to ask before thinking of automation:

1. What are the testing requirements?
2. What tools are available that suit the testing requirements?
3. Is the product stable enough to start automation?
4. How much do we want to automate?
5. Does the tool support automation for the application under test(AUT) or do we need testability in the AUT ?
6. Are the testers skilled enough to do automation?
7. If testers don't have automation skills, is company ready to groom them or hire people with skills?
8. What value does automation add? 
9. What are the expectations/timelines for automation efforts?
10. How mature is the automation tool?
11. What community support does it have?
12. Is the tool open-source or commercial?

Automation is not bad, It can be a powerful tool in a testers toolkit, if used effectively. Over use and hype of "Automation" will not solve problems. Thinking and Implementing smart automation solutions is the need.