Monday 21 October 2013

Will SCRUM help me improve productivity?


What is the SCRUM framework?

The SCRUM framework was designed to have more interaction with clients, among individuals working on a team, be more productive by delivering small pieces of a product and get the feedback from client. This framework has a good transparency and a more open interaction with client where one can reach to client for help. 

Normally the product development is done across Sprint. You might be wondering that what is a Sprint? 

Sprint is a period of usually 15 days. There is a product backlog where the client of BAs keep adding defects / new features / Change requests. The first day of the Sprint starts with Planning where the whole team does their capacity planning - work hours, leaves etc and then depending on capacity pull items to be done in the period i.e. Sprint. 

While pulling the items, they are estimated for how much time will be needed and then everyday as the team works, they log their hours 'spent'.
 
Everyday Standup is held where the team talks about they plan for the day, previous day's activities and look at the burn down chart. A burn down chart is the graphical representation of the estimation Vs the work (hours) logged. The last day is the Demo day where the developed feature is shown to the client and asked for their feedback. The Sprint ends and again next day new sprint starts.

Along with this there are usually calls everyday with the client to discuss road blocks, queries etc and the whole team the participant.

Happy and Satisfied Clients :)



So you see SCRUM is a framework designed to help you grow.

http://www.softwaysolutions.com/blog/tag/softway-solutions/


How is it different from the normal water fall model?

  • Flat team structure comprising of the SCRUM Master, devs, QAs, BAs and the Product owner.
  • Short delivery cycle.
  • Less product documentations.
  • Early feedback from client.
  • Better utilization of resources.
  • More focus on building good relations.





http://pm.stackexchange.com/questions/9918/scope-time-cost-triangle-balancing-to-motivate-team-and-satisfy-client


What benefits can I get from SCRUM?

  • Increased interaction across team(s) and client.
  • Capacity planned beforehand so good work life balance.
  • Less wait time for getting replies from client.
  • Increased co-operation between team members.
  • Reduces release time 'stress' which usually people get at the product release time.
  • More focused due to more clarity of the feature and easy access to client
Talking about my personal experience I am working in the QA field since last 7.5 years and Mommy of a toddler and  and I find it very easy to maintain a work life balance because of the SCRUM culture. 

Monday 15 July 2013

Google creates security patch for android


                                                   
     


Recently came across an article  Android security threat which states that 99% of the Android app are prone to take over, as a result of which the code can be altered without changing the cryptographic app signature. The vulnerability revolves around the way Android apps are verified and installed. Although as per Google they haven seen any such breach but Bluebox claims that this threat was present since Android 1.6 version. 

Nothing to fear because Google came up with a fix for this and has release it to some Original Equipment Manufacturers(OEMs) like Samsung and HTC. This will be provided by the vendors as an update to the device Fix to OEM .

But the patch that is or will be provided may not be made available to all devices. Like Samsung S which quite old and updates have stopped coming for it. In such case it would be good to keep the option of download from Unknown sources disabled.

Wednesday 23 January 2013

Being a QA how important it is to be Patient?

It is said  that 'Patience is the key to success' and success or happiness in life can be guaranteed in life if you learn to be patient. In today' fast running world it is very difficult to keep cool and we mostly tend to loose it become agitated, angry very soon. I am in the QA field for the past 6.5 to 7 years and kept thinking about the role that 'patience' plays being a QA.

We all know that QA is a field which completely relies on your thinking power, your ability to judge, analysis, think out of the box and hence if the mind is agitated it becomes difficult to think which directly affects our work. So what could be the reasons which make agitated ? They can be:

  1. Disturbance at home - had a heated argument while leaving to office with parents or spouse or someone else.
  2. Trying to put up your point - you are trying to put up your point in the team which you think is very important and either no one is ready to listen to you or they feel it is irrelevant.
  3. Work Pressure - release is coming round the corner and development is pending / testing is pending.
  4. Boss - got a bad report from boss about you
  5. Client reported bug - even after you put al your efforts, still client found a bug.
The reasons could by any, hundreds, thousands and everyday a new reason but loosing cool, getting into argument will never help. Rather we should try to keep our cool, when you feel agitated tell yourself in your mind 'Stay Cool, this will pass'. Things that we can try to avoid are like never take personal life to office; keep both separate; if you are not heard wait till other finish and then put up your point; try to keep a soft tone. When you feel angry it is always better to stay quite and not talk to anyone, try to calm down and think, you will get the answer. I know this is very hard to do but if we try this can be achieved.

At home try to activities that relax you, give you relief like: cooking , listening to soft music, exercising, going for a walk. Talking about my personal experience to relax myself I take out my sketch book and that gives me a lot of peace and I am still working on this. No one is perfect but we need to work upon and improve our self for our betterment.

Sunday 9 December 2012

Advantages of soapUI Pro

Most of the times while testing we come across the term 'Web Service' and we wonder what exactly is it? Web Service is a system designed to communicate between two machines, electronic of-course over the network. these are designed using different languages, methods etc of which the most common are REST, WSDL.

We as QAs are many times given a requirement to test the web services.Now the question comes up to our mind at first is that why do I need to test a web service? By testing a web service we validate the response coming and the time it takes to fetch the response.

The second question that comes up is how can we test a web service? The testing of web service can be done by various ways like Test pages / HTML Harness created by the developers, tools like Fiddler, soapUI, soapUI Pro, Test Maker etc.

What is soapUI Pro?

1.     Tool for functional testing of Web Services
2.     Easy to use Graphical Interface
3.     Easy Test Case creation and execution
4.     Provides complete test coverage
5.     Supports all standard protocols
6.     Load testing via LoadUI
7.     Automate Websites
8.     Licensed

    Why soapUI Pro?

1.     Provides Dynamic Data Generation 
2.     Data Source driven testing
3.     Coding Free Test Assertions
4.     Data collection 
5.     Assertion Test Step 
6.     Test Debugging 
7.     Advanced Reporting
8.     Support: Forum, email 






Wednesday 8 August 2012

• Challenges and Experience in Mobile Testing domain

The mobile market has grown very rapidly in the past few years and the credit can be given to Apple for launching iPhone and then the app store successfully. People are now bending more towards the smart phones because it is making life simpler, now you can access your emails, bank accounts etc easily on phone and no more need to switch on your PC or laptop. However, with the increasing demand, the competition and the involved complexities are also increasing. With the increasing success of Android, many companies were forced to make Android based phone like Motorola, HTC etc which earlier had their own different operating systems. The Android sales for Q@ 2012 went over 50% (https://dottech.org/android/74191/android-tops-smartphone-sales-in-q2-2012-with-over-50-of-sales/). Over 300,000 mobile apps have been devel­oped in last three years and apps have been down­loaded 10.9 bil­lion times.
Mobilization is creating pressure on companies which are into this. With the wide range available in devices, operating systems, carrier providers; it is very difficult to maintain a quality which can sustain across the platforms. The mobile companies are now dwelling deep, analyzing their products, bringing new ventures to compete and most importantly meet the growing demand.
With this comes the need of assuring the good quality of the app, giving rise to the questions like ‘What is mobile Application testing?’, ‘Is the application tested well enough to be launched?’, ‘What are the most basic criteria that it should meet to be successful?’ Mobile application testing has become complex due to the variation available in the devices like wide range in screen resolution, hardware configuration, data speed, camera and image processing. Along with this the Operating systems (iOS, Android, Symbian etc) and the local service providers (GSM, CDMA etc) also add to the complexity. A Map with voice guiding application may work in US but may not work everywhere in India, same way sending SMS may work well in some parts of the world but not in other. All these factors then put an immense pressure on the mobile development and testing teams. It then becomes very difficult to nail down the support criteria.

The Big challenges faced by the Mobile Developers and testers:

       Mobile Devices:

Although I discussed this earlier but let me analyze this more from a developer / tester’s point of view. The major factors (as I said earlier) that affect an application are the screen resolution, the camera size, memory, sound, input modes. When the application designing starts these play a very important role for both developers and testers to decide what the base model should be against which the application is to be designed. This is a really very difficult question to answer as there are people using Galaxy Note, iPhone, tablets etc which if you see closely will have completely different set of configurations.
To solve this big question (as the application which we were working was a Cross platform application which should work on both Android and iOS), we had discussions with our client. The client then did a small survey at his end and in parallel we also ourself looked out for stats. Then the result that we narrowed down to wasn’t a specific model but a range which comprised the iPhone, ipad and LG / Galaxy phone models but no specific model (number).

         Operating Systems:

Currently in market we all know that Android and iOS are the most commonly used platforms while Symbian, Windows are not so popular although they too have their own application stores. For us the requirement was very specific to Android and iOS and hence we were focused on Android and iOS but then the question was what range of versions we should support.

                (http://wmpoweruser.com/wp-content/uploads/2012/07/Q2-2012-US-Smartphone-manufacturers-share.png?e83a2c)

We then checked the version history of Android and iOS, asked the client what version he had, checked for the latest version that we as a team could upgrade the phones that we had. Then finally for our first release of the application we decided to support android 2.3.3 and 2.3.6 while iOS 5.x. We also found that Android 4.x was out in market but wasn’t available for all handsets so we thought of not supporting that for the first release.
  
        Data carrier provider:

There are a lot of local data providers in market offering the best of their services in terms of data connectivity, bandwidth, and speed but still in any case the speed has to be fast. Whether it is a web or native application, both need speed and a good connectivity when the data download or upload is little huge but if the data is very low like in KBs then a low speed might work. The service varies with geography, it may be strong in urban are but very weak in core or the rural parts whether it’s AT&T or Airtel or some other network. Along with this the service may be very strong in US or Canada but less in Asia.

For our application the data download and upload both was little huge in MBs and while testing we needed a very strong wifi range to test. Infact sometimes when the range reduced, the application used to slow down or didn’t work at all. We had assurance from client that in places where they will use this, the data connectivity would be good. Still we tested for no data connectivity and GPRS with a 2G service. We made sure that there were no severe issues if the connectivity was slow or no connectivity.

        Posting the ‘native’ application on the Stores:

When an application specially ‘Native’ is developed and launched; the easiest way to distribute is the application store. You may ask people to download the app in their laptop or PC and then move it to the phone but that may not be very feasible when updates start flowing in. Then taking the application on a store is a big thing because there are some criteria, clauses stated down by Application stores based on which they put the application on the stores. I have even heard that they study the application, its purpose, what benefit will they get like how many people will download everyday etc , what development platform/ programing language is the application built on and then based on all this the decision is made.

For us we have made our application in Titanium (which has some of its own issues), it will be a closed application specific to a company. Hence we are still working out how to make this application go to the stores which is a risk for us. For now we will be distributing the ‘.apk/.ipa’ files to the people and then they will have to take from their PCs to the devices and then install.

    Integration with peripheral devices:

Sometimes there are requirement to have a peripheral device connect with the phone via Bluetooth like the common example is a music application should run well when a person uses Bluetooth headphones. Currently connecting a peripheral device for file transfer via Bluetooth is a common requirement.

We had to make our application take the barcode input from the scanners:






For this we had to enable a Bluetooth connection between the phone and this scanner. We could do this easily for Galaxy S II and iPhone but for a few models like Galaxy S we were not able to establish a Bluetooth connection as these devices did not at all show up in the available devices list. We tried installing an application to enable this connection but that too didn’t work.

These are some of the constrains that are very difficult to overcome specially when there is a very wide range of devices available. 

Usability of the application:

This is one the important challenges which we have to handle very well. UI / usability are the one which appeals a person to use the application. What the font size is, is it easy to tap on buttons, links, etc, is the color scheme used soothing for eyes. All these need to be looked very minutely.


When we had the first look of our app on Android – Galaxy S it was not acceptable because the background was black, the font too small and the images etc very dark. While on iPhone it just looked awesome with the white background. Now making it look good for Android was a challenge for us. To overcome this issue we decided to put same white color background (as of iPhone) for Android as well and it worked.


The other major usability issue we faced was that the app didn’t adjust well in landscape mode and lot of issues started showing up. We spend lot of time figuring out how to resolve this but with titanium it was little difficult so we had to remove the support for landscape mode.

Automation:

When everyday a tester has to run a same set of Suites or cases on an application again and again then the need for automation arises. For mobile application testing, this has been a big question for testers as even today there are not many good tools available in market that can be used across platforms and for native as well as web application. Android and iOS have their own tools, which come bundled with their SDKs like UI Automation and Monkey Runner but then creating and maintaining two different tools is not recommendable.

There are tools available in market like SeeTest (Plug In of QTP), Monkey Talk, etc but out of all these only a very few ones support both platform and that too for both native and web applications.

Four our project we did not need a UI Automation tool but we needed one for Web Service testing. We used SoapUI Pro 4.5 which suited well for our need and is a licensed tool.


Using emulator and simulator:

These are mostly used by developers for development because they provide the same look and feel, functionality as the actual device itself. This is very helpful in testing as well when the testing has to be done on different version of an OS; with emulators and simulator it is very easy to prepare by installing the required version SKDs and using them.

We had to test functionality where we had to track the GPS location of a person signed in the application and send the updated location every 10 minutes. This was very tricky for us as ideally we could not roam around every now and then to test. We tried that also but the locations transmitted very in 7th or 8th decimal place of the latitude or longitude. Hence the solution we used was that, for Android we prepared KML files with variations in the locations and then transmitted them to the application on Emulator via DDMS. While for iOS, the iPhone simulator had its own in built dummy location transmission functionality.

But these have a big drawback that sometimes crashing issues don’t show up. There were issues that continuously kept showing up on the actual device but never showed up on the emulator / simulator. Then the developers had to do a basic testing before release to QA to make sure that there were no crashing issues which they could not see while developing on the Emulator / Simulator.




 


Thursday 14 June 2012

The 'Helping Hands' in Testing Process - Documentations

In my 6.5 years of experience, what I noticed is that 'DOCUMENTATIONS' are the biggest helping hands for testers. The more you document and communicate, the more you grow as a tester and well of course verbal communications hardly involve the whole team and yes, they are lost over time. Believe me, we tend to be lazy thinking will document later and that later hardly comes, try avoiding this and even if you are busy find out some time may be 5 - 10 minutes to do the necessary documentations. Let me analyze the need of documentations - 'what? and why?' from the angle of the pillars of the QA process:

1. Requirement Analysis

When the requirement is published and freezed, read it very thoroughly and in parallel document the analysis point that are going to affect the testing. Also if you have any doubts about some features or functionalities, put them in the document or create a separate email and send across to the team or client. Always ask for replies over email as this will help for future reference. Having communication done over email helps a lot when in future we forget what was the answer; and more when the devs or the team contradicts then you can share the answers with the team to bring everyone on the track.

I mostly create FAQs page where I document the replies that I get from the client for my queries and that helps my team as well a lot.

2. Test Plan creation

It is practice which most of the projects follow that is to have the Test Plan documented and approved. But on the contrary many people feel this as an extra "not required" effort and rather try to discuss verbally and agree upon. This is wrong. Plans should always be documented and approved by the Manager. This helps a lot at release time when you are already under pressure and suddenly some things show up. At that ti you can refer to the plan and tell that this is what was decided and now if something more needs to be added then the testing tie will change or not everything will be tested and verified.

3. Test Case Creation

This is very very important documentation which all QAs should do. In my past experience I saw that the deadlines we so close that QAs were not given time to document their test cases also and when anything went wrong they were caught. This is bad. The Test cases should be documented well and reviewed by the TL / PM in case if something is missed. If the time is less at least try to document one line and share it with the team. I have even seen people who don't document just because they are confident enough about their mental capability that their mind is big enough to store. But we forget that tomorrow if we are asked to tell what we tested, it becomes difficult to convey.

Infact if possible it is eve better to have the Test Cases approved by the client, they are the best people to add if a part is missed out.

4. Test Data preparation

This may be required for everyone and is required mostly when the data preparation is a complex task and you are sort of trained on it.

I am seeing this, in my current project where I am the only person who knows the in and out of data preparation. In my absence my team should not be blocked so I have documented the test data preparation (which is preparing data in DB - quite complex) and I keep updating it frequently and sending it to my team.

5. Testing

While testing always add notes for test cases which are complex like how to executed and were there road blocks (not defects) from which you learn something out.

6. Test Report

A very important document which gives an outline of what all was tested or left out, defects verified or not verified with reasons. Now if the PM agrees on this then in future if you are questioned you can refer to the report.

All in all these are records of your work which the team accepted and agreed upon.
We need to have all these documented as 'always' tester is the first person to be questioned that why was this missed? Indeed this is a big question for which we don't have a reason because we didn't miss this intentionally. To avoid such questions I follow the above mentioned points very strictly and stay on a safer side because I have things noted with me and over communicated.

Try this out I am sure this will help to reduce these 'Whys'. :)


Tuesday 29 May 2012

How to mock location on Android Emulator by using DDMS and KML file

Following are the steps:

1. Create a KML file like:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.x">
  <Placemark>
    <name>GE2ADT</name>
    <description>Attached to the ground. Intelligently places itself
       at the height of the underlying terrain.</description>
        <View><longitude>-88.03482</longitude><latitude>43.04186</latitude><range>750000</range><tilt>0</tilt><heading>0</heading></View><styleUrl>#red</styleUrl><Style><IconStyle><scale>0.3</scale></IconStyle><LineStyle><width>0.22</width></LineStyle></Style> <Point><coordinates>-88.03482,43.04186,0</coordinates></Point>
    </Placemark>
    <Placemark>
    <name>GE2ADT-1</name>
    <description>Attached to the ground. Intelligently places itself
       at the height of the underlying terrain.</description>
        <View><longitude>-88.03963</longitude><latitude>43.02743</latitude><range>750000</range><tilt>0</tilt><heading>0</heading></View><styleUrl>#red</styleUrl><Style><IconStyle><scale>0.3</scale></IconStyle><LineStyle><width>0.22</width></LineStyle></Style> <Point><coordinates>-88.03963,43.02743,0</coordinates></Point>
  </Placemark>
 </kml>

2. Launch the ddms from ...\tools.

3. In the ddms you can see in the left pane that there is no active device shown.

4. Launch you titanium Studio and select the project for which you want to test.

5. Click on run Configurations and in that select 'Google APIs for Android <version>' for 'Android APIs and click Run.

6. Wait for the emulator to start and then start Google Maps on it.

7. Now go to ddms and here now you can see the emulator processes in the left pane.

8. Now in the right pane go to tab 'Emulator Control'.

10. Scroll down and select tab KML.

11. Specify the location of the KML file.

12. In the table below you will the location coordinates uploaded form the KML file.

13. Scroll down little and click on the Play button.

14. Now go to Emulator where you should be able to see you location getting updated on the Google Maps.

Note: for a better idea add 5-6 location (Placemark) in the KML file.