Sunday, 19 June 2011

Conducting User Acceptance Testing-Best Practises

Conducting User Acceptance Tesing (UAT)  is something that is challenging, interesting and fun, although the client with  whom I work with is not easy to handle. UATs are conducted in two ways in the industry. One way is having a F2F meeting with the client and demonstrating the functionalities in front of him. The second way is by conducting a live meeting i.e. The testers who work offshore, share their desktops with the client and demonnstrate the functionlitites on their desktop, the explanation is given on the phone.There are a few things that one needs to do before and during the UAT in order to ensure that the UAT is successful for both the methods.

Before the UAT:-
  1. While completing the System and Integration testing always conduct a  complete ad hoc and exploratory testing. This ensures less defect slippage and prevents embaressment in front of the client .
  2. After the completion of System and Integration Testing always obtain a sign off from the client on the scope and objectives of the module that will be tested., the test cases, different scenarios etc. This is to ensure that the client is aware as what is going to be demonstrated to them. If corrections are  made to  test cases and scenarios, they can be modified at this point, but a change in scope,objective and requirement at this junction should always be taken as a new module as the change in scope,objective and requirement will always  increase cost, decrease quality of product delivered  and increases dissatisfaction of the client. In case if client does so it is to be explained to him/her in a polite manner. Never start the UAT without the client Sign Off
  3.   When the module is released in the UAT enviornment always conduct smoke testing and simple end to end testing of the entire functionality. This helps in solving enviornment issues, certain configurational issues such as user configuration issues, deployment issues, ensures that the worflow is running without any visible bugs(although by this point the module should be almost bug free !!!!). In a way this also prevents embaressment in front of the client. 
  4.    I would like to share my experience in a lack of end to end testing before a UAT. There was functionality of creating a Service Request  which involved three required  fields that were chosen from a drop down box they were Type, Area and Sub Area. However this was part of an old module that I had tested around 3 months back. When a new module was to be tested by me this old module was dependant by the new module. During the end to end testing I did not test whether the system was not accepting a Service Request without either Area\Sub Area. During the UAT when I was creating a service request I accidentally pressed a short cut key that saved the service request without Area and Sub Area . This was a bit embarassing in front of the client. Hence what I am trying to say here is always ensure that end to end testing is properly done
  5. The next step is preparing the platform for conducting the UAT.If the UAT is conducted through live meeting always test the live meeting session(Sharing desktop from the system from which demonstration will be done) before sending the invite. Also check if the telephone is working properly especially the speaker phone. In case of F2F meeting and demonstration always book a room with  a projector and ensure that the projector and the system are compatiable 
  6. Be in time for the UAT. Always ensure that you are ready 30 minutes before the UAT. 
  7. Get all issues and problems clarified with the leads and the Business Analsyts so that they can be handled by the testers alone. But always ensure that the Test Leads and the Business Analyst is always there when the UAT is being conducted 
  8. Ensure adequate test data is setup for all the test cases, so that the tester does not have to create test data at the time of demonstration 
  9.  
    During the UAT 
    1. When the UAT begins especially in case of live meeting always clarify and ask the client whether is he able to view the screen, notice the movement of the screen, whether there is any lag in the movement of the cursor and whether the client is able to hear the tester without any distrubance . If not then then take steps accordingly 
    2. While executing each test case  first read out the test case objective, by showing the test case to the client either through live meeting or through the projector and then execute the same. While executing explanation would have to be given so that the client can understand the work flow of the module 
    3. Whenever client  has any issues always answer him\her politely and execute the steps again if he\she has any doubts or clarifications 
    4. Never argue with the clients  beacuse clients are always right 
    5. If clients tend to move out of scope and force the testers to move out of scope always politely refuse the same to them. If they do not agree always take help from your Test Leads and Project Manager  to support you 
    6. In case of any disagreement politely explain it to the client. Do use proofs such as letters sent by the client on sign off on requirements etc to support your facts. 
    7. Whenever client raises observations and triage results always note them down on notepad\sticky notes software on the system so that it is transaprent to the client in case of live meetings 
    8. If bugs are raised by the client and are valid accept them with a lot of courage. If the bugs are not valid, convince them and take them as observations\triage results
    9. After ending the UAT show to the client which all test cases have been demonstrated and ask them as which test cases can be considered as passed.  
    10. End the UAT by saying "It was a pleasure demonstrating it to you "
    After the UAT 
    1. Work on all the Observations and triage results so that they do not occur again. Inform the same to the client 
    2. Send a completion report to the client and obtain a sign off from him so that the module can be delivered to him on time
    In short taking part in UAT is a wonderful experience.Some clients are knowledgeable and by dealing with them one tends to think in all directions while approaching functionalities . Some clients are aggressive in nature and by dealing with them one tends to improve his\her people handling skills. Some are a combination of the two which is very difficult to handle. So UAT does tend to improve ones testing skills.

    By trying out these above mentioned practises UAT does become a wonderful experience. In my experience I always look forward for UATs.

    Hope I was able to throw some light on UATs. More on my next post

    Till Then,
    Cheers from Sai :)