Quote:

I love deadlines. I like the whooshing sound they make as they fly by.” – Douglas Adam

Wednesday 31 December 2014

DEC 31st and a Tester's thoughts



Hai! Hello!

Today is December 31st and its time for us to bid farewell to the current year and start the party to welcome new year.

Since my childhood, this day has been an exciting day for me, as it comes with many emotions and feelings. This day speaks about both the past and the future. While this day is to recall the memories of the past, this day is also to hope and dream about the future.

This day takes me back into the journey of one long year and recalls the memories, challenges and all the great moments. It also keeps me excited about new days of a new year to come.

On this day, I see a businessman thanking his clients for this year, and also wishing to add many more in the new year. I see a student thanking his teachers and friends for this year and wishing to be more successful in this new year. I see many more professionals with a similar kind of emotions.

As a tester, I too have many people to thank for this wonderful year of testing journey and wish for a happy new year.

Thank you Testers

Dear testers, I am nobody without you. I always believe that great work comes from team work and its you who make a good team player. Just like every year, while the testers at my office are helping me to do things better and deliver better, the testing community around has been caring and affectionate to exchange the knowledge and make me a better tester everyday.

Thank you for a fun'test'ic year. I carry the joy of working with you in all the challenging times and cherish the moments of success.

I wish to continue this awesome journey and test better and better in this new year.

Thank you Devs

It was my pleasure to test the greatest of the applications developed by you in this year. I really had an awesome experience working on tough jobs and cherishing the success stories of our releases. The fun time and the learning journey with you was really great this year.

Thank you for all the assistance and a team work for making the big things happen.

I wish to continue to work together with you, to build many more awesome things in this new year.

Thank you Managers

All that we achieve is your planning and execution. This year, I am glad that I got a chance to work under different versatile and dynamic leaderships which has played a great role in shaping my attitude and skills. The kind of projects I had worked under you demanded the best of the skill set and I am glad you could extract it out of me.

Thank you for trusting me and believing in my skills. Thanks for mentoring me at tough time and encouraging me to test better.

I wish this new year gives us many more opportunities to work together to deliver the best of the products.

Thank you Business

Business has been the key factor which puts across new challenges and opportunities. This year, it was really great to see the kind of business importance tasks I had been through and absolutely they have shaped me into a better player.

Thank you business team for bringing in such a challenging work across. Thank you for the amaing opportunities you have provided us. While the roots were challenging, the fruits were always sweet and cherishing.

I wish you a great luck in bringing in more business and wish to be a part many more success stories along with you.

Thank you Blogging world

Blogging world has been my greatest source of knowledge. I cherish every thing I receive and share through this media. This year, I could take out time to write few articles which showcased a better writer in me.

Thank you readers for all the care and support you shower on me. Be it a smallest of the contributions, I am always welcomed here and supported.

I wish to write many more good posts and learn from your feedback in this new year. Wish you all a great reading and wish to see many more interactions with everyone of you through this media in this new year.


Thank you one and all, and wish to hear many successful stories of your new journey in this new year.

Let the party begin \m/_0_\m/


HAVE A HAPPY AND AN AWESOME NEW YEAR 2015 



Tuesday 16 September 2014

Two years old Tester and the Story of Change


This day, September 17th 2014, I complete two long years of my professional life and became a two years old Software Tester. On this occasion, I have something to recall for myself and share with you all.

Why do I want to write today?

Though I have been growing old every year, though there might have been some or other changes in my life, I was never surprised with what was happening to me. May be I neither noticed nor was I conscious about them happening. I am surprised and equally happy about the change I have brought to myself in this past two years and I have been consciously observing it.

My last two years of professional life and this stay in Moolya have made me a better person day by day. The influence of Moolya and the people at Moolya have been great on me, and the echo of quotes from 'Steve Jobs' and the movie 'KungFu Panda' at Moolya, have played a wide role in making me a person what I am right now

I wanted to write, not a experience report, but a story of change and the process of learning and unlearning, that I have been through. 

I wanted to write, because I was recalling this story of change in me. I wanted to write, because I wanted to share, if this story of change might trigger something worthy in you too.

The Story of Accepting Life

There are no accidents

Living the life of a student with too much of dreams and wishes, and less efforts, I somehow had been expecting a lot from my life. I had days of disappointments, repents, confessions, depression and hatred. I had a habit of cursing myself and worrying about the reasons.

I first learnt to accept my past. Unless you accept what has happened to you and let it go off, you can't make a move forward, because your mind shall always stay in past and you are not allowing it to live the present. I have understood this truth. Yes with great difficulty and I am still practising it. This is bringing me more peace and allowing me to live the day better instead of weeping about yesterday.

'Oogway' in KungFu Panda movie says, 'There are no accidents'. Yes, I have started believing that everything in life has a reason behind it, and has got a purpose to serve. So, I just started accepting my life, instead of denying it. Accept it, learn from it, let it go off and Live a better day. 

The Story of Passion

The only way to do great work is to love what you do

Somehow I was never serious about this word 'Passion', before. May be I never knew this word in dictionary has such a great influence. I never knew this will drive a man to heights of sacrifices. I never knew this is a never exhausting fuel that keeps the journey on, in spite of food, water and air.

Two years back when I stepped into Moolya, I happened to see people uttering this word again and again. I heard stories behind the passion they had, I saw the way they enjoyed their passion, and how their passion towards testing have been driving them. 

I learnt the story of passion. Passion is something that rests within you. You got to identify it. You got to speak to yourself. You just need to analyse what you love to do, what brings more happiness to you and what is that you enjoy doing. 

I started speaking to myself. I started studying my habits, wishes, interests, views, opinions and thoughts. I recognised my likes and dislikes. I worked on what I could do better and where I would like to put my efforts. I started knowing what I love to do, and the art of enjoying while on work. I am able to define what my passion is and align my work to it.  Now I know that my urge of doing great work is possible only when I follow my passion. Day by day, I am strengthening my passion and defining it more clearly for myself, and living it to the fullest.

The Story of Vision

I want to put a dent in the universe

Right from my childhood, I somehow had this - A wish to be a leader. A desire to be a creator. A dream to stand on the top of the world and say 'Hey! Look here I am!'. So what do I do? Where do I start from? Is there any route map? What do I need? How? When? etc., etc., Too much of questions and too much of choices.  

There came a day I stepped into this awesome start up Moolya. I noticed people speaking about Vision. A vision to change the world. Oh! This was something what I was thinking about. But what is this vision? How do you decide it? What is it all about? How do I have mine?

Then I learnt the story of vision. A vision is something you want to strive for. A vision is a purpose behind your work. A vision is a clarity about what you want to achieve. A vision is a journey that you are destined for. So a Vision is that drives you towards what you really care for.

If you are working on something exciting that you really care about, you don't have to be pushed. The vision pulls you

I have identified that my passion towards my work would set a vision for me, and it shall pull me to achieve it. Though I haven't actually defined what is my vision or what is the dent that I am going to create in the universe, but I have been telling to me that following my passion and strengthening it, would help me understand what my vision is, and what dent I am gonna create.

The Secret Ingredient 

There is no secret ingredient, for something to be special, you just have to believe its special

Here are the awesome words from the movie KungFu Panda. This says you are special, if you believe in it. There is no secret ingredient other than yourself, who could make you special. You don't need any magic or miracles to happen to make you special or a hero. You got to do it for yourself. First you got to believe that you are gonna be something and you are almost there. There is no secret ingredient, its just YOU.

The one's who are crazy enough to think that they can change the world, are the one's who do

If you want to change the world, you got to think that you will do it. If you want to create something, you got to believe that you are a creator. If you want to rock your life, you got to believe that you are rocking it already and shall continue to do it. It is you who is going to strengthen yourself. It is you who is going to lead yourself. Believe in you and you shall be the magician who does all the magic to yourself.

I started believing that I am special. I started telling to myself that I am gonna rock. I somehow started loving myself and my decisions a lot. This brought more happiness to me, this brought more confidence in me, because here I am my hero and I am gonna decide what I want to be. This started mirroring my life to me and set my standards for myself, break my own and raise the bars.

Thank You Moolya!

Thank you Moolya. Thanks for telling me what does working with passion mean and what does striving towards the vision mean. 

Above all thanks for the Dragon Scroll and the Secret Ingredient in it.



Thursday 17 July 2014

Heuristics in testing


Understanding Heuristics

I have discussed about heuristics and how they help us in solving a problem in my previous post. You can go through it.

We understood that heuristics helps us in studying the problem well and aids us in figuring out a solution for it.

Why heuristics in testing?

Testing aims at figuring out many problems of the system. This includes a very exhaustive list of problems like - problems the system might face while functioning, while the user is using it, while competing with similar systems in the market etc.,

Tester while aiming to figure out these problems, has got many problems to solve for himself. This again is a very exhaustive list like - understanding the system, studying its behavior, planning the testing strategy, coming up with test ideas, finding the bugs, having a good test coverage etc.,

So here comes the role of heuristics to figure out solutions for these problems. I shall discuss here, how heuristics help tester to solve the following the following problems.
  • Solving the problem of understanding the context of testing
  • Solving the problem of building the test strategy
  • Solving the problem of generating test ideas
  • Solving the problem of buildling test coverage
  • Solving the problem of confirming some behavior as a bug
  • Solving the problem of finding bugs
Repeating again - Heuristic is an approach that could help us in solving a problem, which is fallible

Solving the problem of understanding the context of testing

Understanding the context of 'what to test?' is the first and foremost challenge a tester would face. The better understanding of the context will help the tester to test the application better and strengthen him to add the required value.

A tester could understand the context better when he is able to ask good number of questions to the stake holders. Now the problem here is 'What questions to ask?', 'How to cover all the possible questions?' etc., etc.,

Heuristics would solve the problem here. The tester could come up with various heuristics based on which he could list down the possible questions to ask. The better the coverage of heuristics, better the quality of questions, hence better is the understanding of context.

For example, 'Targeted audience', is an heuristic, around which a tester could frame quetsions. He could ask the stake holder about the type of targeted audience, their expectations, the previous feedback from them if any etc., to understand the user based context of the product.

Also, he can come up with more heuristics like 'Competitors of product', 'Business importance of the release' etc., to frame questions around them and understand the business context of the product. Similarly, he can apply this heuristic approach to get to know different other things about the product.

Solving the problem of building a test strategy

Test strategy contains various aspects of the testing activity which tester might want to consider while testing the system. It may include many things ranging from the mission of the project to the deliverables from the testing team.

The more relevant aspects you bring into your test strategy, the well equipped your testing activity would be. Here we can think of various heuristics to come up with different components of the strategy. Bringing in more and more heuristics will enrich the strategy with more possible things for consideration.

For example, we can think of heuristic 'What Quality criteria to focus on?'. This approach will help us to include all the possible quality criteria like functionality, security, performance, usability etc., that a tester might be interested to consider while testing.

Also we can think of other heuristic 'Project schedule', which would help the tester to consider things like - What is the duration of project? What are the scheduled release dates? When would the build be available for testing? What are the timelines of deliverables etc.,

You can also refer to the 'Heuristic test strategy model' designed by James Bach, for more insight on the heuristic approach in building a test strategy.

Solving the problem of generating test ideas

Test idea tells us how to perform a test on the application. Coming up with a test idea and testing the system is the major task of a tester. We try to have a good list of test ideas to test the system better. How we generate the test idea depends upon the approach or the way we are choosing to create these ideas. So, here comes again the role of heuristic methods or heuristics to help us in figuring this out.

Tester could think of heuristic ways to generate test ideas. Depending upon the context, we can come up with list of possible heuristics, considering which we could test the system. Each heuristic will help us build a bunch of test ideas around it and thus helping us to create more and more ideas from every new heuristic.

For example you can look refer this link Heuristics - User Experience Testing, which lists down few heuristics that I had come up with, to test for 'User Experience' of an application. Using these heuristics, you can generate test ideas and start testing the system.

You can also refer to the Test heuristics cheat sheet by Elisabeth Hendrickson for exhaustive list of heuristics.

Solving the problem of building test coverage

Test coverage is a track of various aspects against which we have tested our application. Having a good test coverage means that we have tested our application to a larger extent. So our next challenge as a tester lies in building a good test coverage.

The essence of test coverage lies in variety of test ideas we have. We can have varied test ideas by coming up with different approaches to build test ideas. So here again we see the need of heuristics. We discussed before that heuristics help us in building test ideas, so having diverse heuristics would help us in building varied test ideas, which in turn helps in building a good test coverage.

For example, there is a mnemonic of heuristics - 'SFDIPOT' quoted by James Bach in Rapid software testing slides, which lists down the heuristics like - Structure, Function, Data, Interface, Platform, Operations and Time to achieve the test coverage respectively.

Solving the problem of confirming some behavior as a bug

While we apply test ideas to test the application, we figure out some behavior of the system as a bug. We confirm something as a bug only when we acknowledge that the behavior is not as expected. Here the challenge is how do we confirm if some behavior is expected or not expected.

We have heuristic methods to decide the expected behavior and confirm something as a bug. These heuristics those help in confirming something as bug are called as Oracles.

For example, 'comparing the output with the requirement' is an Oracle. We can confirm something as a bug using this approach. Also our 'common sense' is an Oracle, we tend to declare some behavior as a bug using our common sense.

So better list of oracles you have got, there are more chances of solving your problem of confirming some behavior as a bug.

Of course, solving the problem of finding bugs

Keeping it short, if the heuristics you have applied so far has helped you to understand the context of testing better, build a efficient test strategy, generate good number of test ideas, have a wide test coverage, and have good set of oracles, then you are well armed and are sure to find good quality and good quantity of bugs too.

So finally solving the problem of 'solving the problem' while testing

So be it whatever problem we face while testing the system, we have got heuristic approach or heuristics to solve our problem of 'solving the encountered problem'.

More you think, more heuristics you have, and more are the chances to solve the problem.

Not to forget, heuristics are fallible

Yeah! You got to keep in mind, heuristics are fallible. Every heuristic you apply might not help you to solve the problem. Your heuristics may fail to figure out a solution.

So, every time you fail, try figuring out more relevant heuristics to solve the problem. At the end its context of problem you are going to solve matters. So, make sure your heuristics are always aligned with the context.

Thanks for reading, hope this helped you :)

Happy problem solving! Happy testing!

Thursday 10 July 2014

Understanding Heuristics

Hello!

I have been listening to the word 'heuristic' and the role of heuristics in solving the problems,  in many conversations with my testing friends, and in many blogs that I read. I have been giving lot of thought about it and exercising it in my work.

I have also noticed that many of my friends had difficulty in understanding what heuristics are exactly and how are they helpful in solving problems.

So here I come up with a small article that might help to understand heuristics and know if they help in solving problems.

Let us first look at the google meaning of this word Heuristic











From the above definition we get that, Heuristic process - enables us to discover or learn something - by ourselves. So, by making use of heuristics we will be able to discover a problem or learn about a problem ourselves.

Let us look at another definition and understand this better



So heuristic is a - rule of thumb - educated guess (a guess with some sense behind it) - that helps us in searching a solution to a problem - which is difficult or poorly understood

Now lets look at this wiki definition

Heuristic (/hjʉˈrɪstɨk/Greek: "Εὑρίσκω", "find" or "discover") refers to experience-based techniques for problem solving, learning, and discovery that give a solution which is not guaranteed to be optimal

So heuristic is a - experience based technique - to solve a problem - to learn a problem - to discover a problem - to give a solution - which is not guaranteed to be optimal


Combining all these, let us say

Heuristic is a - technique, approach, guess - to solve, learn, discover - a difficult or poorly understood problem - which might not be guaranteed to be optimal

Putting it in the simple language, we can understand heuristic as - any thought, idea or approach that helps us to find out or figure out something.

Let us take some daily life examples and understand heuristics better.

'Trial and error' - Heuristic

We all must be familiar with the 'Trial and error' method.  While applying this method to solve a problem, we assume a possible solution and check if it is feasible. If it fails, we come up with another trial and check again. We keep making trials every time we fail, and we may or may not find a solution.

So here 'trial and error' is an heuristic method, though every attempt of it din't promise us a solution, it has helped us in figuring out some or other method to try for a solution.

Turn on the tap - exercise

Let us take an exercise where you are asked to turn on the tap to wash your hands. Also let us say this tap is of new design which you haven't seen so far. By looking at it you could analyze that it has a valve that is stopping the water flow and all you need to do is move the valve in some direction so that water flows out.

Now the possible actions you might do is - turn it to right (may be most common practice), turn it to left (immediate alternate guess), lift it up, push it down etc., While you are doing these, the tap might turn on at a particular action or it might not.

So you have been trying to open it with some possible guess you could make out of whatever logic or whatever knowledge you had on it. Every trial of yours was again a heuristic to open the tap, which failed sometimes and which might have passed another time.

So, heuristics help us to solve a problem. How?

Looking at these definitions and examples, we can say that heuristics help us to solve a problem. Let us analyze how are they helping us to solve a problem.

By looking at the behavior of the system each time a heuristic is applied - we get a chance to study the system, we get a chance to gather more information about the system and get to think about more possible ways of solving the problem. So every time a new heuristic is applied, we get to dive more deeper to solve the problem.

So as we progress, every heuristic might help us in building new heuristics, and might help us in solving or studying the problem much better.

So, heuristics are fallible. How?

After reading all this, we understand that heuristic is not a formula that would guarantee us a solution. Heuristic is an approach that we build to try solving a problem. Heuristic is an idea that we have, that we think, that we assume that, that could solve a problem.

As - assumptions, ideas, approaches - have a probability of failing, so are the heuristics. They might fail at times and they might pass at times.

So heuristics are fallible.

So, my article is an heuristic. How?

I have tried my approach to explain you about heuristics and make you understand. I am not sure if this has helped you or not, but surely it might have helped you to solve your problem of understanding heuristics.

I am sure if you can find out more heuristic ways to learn heuristics yourselves, you will surely understand what heuristics are.

I would be happy if my heuristic article passed to help you, else please come up with some heuristics to help me understand heuristics better.

Thanks for reading :)