Monday, April 6, 2020

Defect Life Cycle



          DEFECT LIFE CYCLE
 









                                                               
                                                                                                                                            
Oval: RFE – Request for enhancement
 





Customer gives requirements – developers are developing the s/w – testing team is writing test cases looking at the requirements
 Developer develops the product – test engineer starts testing the product – he finds a defect – now the TE must send the defect to the development team.
He prepares a defect report – and sends a mail to the Development lead saying “bug open”.
Development lead looks at the mail and at the bug – and by looking at the bug – he comes to know to which development engineer developed that feature which had a bug – and sends the defect report to that particular developer and says “bug assigned”.
The development engineer fixes the bug – and sends a mail to the test engineer saying “bug fixed” – he also “cc mail” to the development lead.
Now the TE takes the new build in which the bug is fixed and re-tests it again – and if the bug is really fixed – then sends a mail to the developer saying “bug closed” and also “cc mail” to the development lead.
Every bug will have an unique number.
If the defect is still there – it will be sent back as “bug reopen”.

“REJECT” BUG

Now, when the TE sends a defect report – the Development Lead will look at it and reject the bug.

Bug is rejected because,

1) Misunderstanding of requirements

2) While installing or configuring the product – wrongly configured or installed the product and we found a bug in the product – send it to development team – developer says “reject” because he looks at the defect report and comes to know that the Testing team has not installed the product correctly.

3) Referring to old requirements
Chances are there that Testing team may be referring to old requirements while testing the product.
For ex, - in the 1st build – developers have given the product for testing in which a sales link button is there, test engineer does testing and reports any defects – in the 2nd build, customer has given a requirement change to the development team where-in he has asked them to remove the sales link button – but the testing team is not aware of this change – so when the development team gives the new build – obviously they would have removed the sales button – test engineer when he looks at the feature – he is referring to old requirements which has sales link button – but in the new requirements it has been removed which the test engineer is not aware of – so he reports a bug – development team then reply back saying “refer to new requirements in which sales link button has been removed”.

4) Because of extra features
Consider the example and figure shown in Pg 130.
Here, “help” button is a feature which has been developed by the developer as an extra feature not part of he requirements – obviously when the TE looks at the application and requirements, since Help feature is not there – he reports it as a bug – the developer rejects it saying “it is an extra feature and that he wont test it” – Test Engineer replies back by re-opening the bug saying  “update the requirements” – updating the requirements requires lot of running around for the development team, talking to the customer and all that – so he either removes it or talks to the customer.

“DUPLICATE” BUG
 The TE finds a bug and sends a defect report and also assigns the bug report a number – let’s say he sends a bug report numbered as Bug 25 – now the developer replies back by saying “Bug 25 is duplicate of Bug 10” i.e, another Test engineer has already sent that bug earlier and it is being fixed.

Why do we get duplicate bugs?
·         Because of common features – Lets say Test Engineer A and B are testing an application – Test Engineer A and B to test their features must Login to the application using valid username and password before they can go deep into the application and start testing their features – A enters valid username and password and clicks on Login button – it goes to a blank page – this is a bug – so A prepares a defect report for this bug and sends it to developer – After sometime, B also tries to login and finds the same bug – he also prepares a defect report and sends it to developer – but developer sends back defect report of B saying “it is a duplicate”.
·         B finds bug in A’s module – let’s say A and B are testing their respective features – A is doing functional testing and integration testing on all his features – Similarly B is also testing all his features – In one scenario, B needs to go to A’s feature(say m12) and send data to B’s feature(say m23) – when B clicks on m12, he finds a bug – although its feature of A, he can still prepare a defect report and send it to developers – and B sends the defect report to development team – now, A after testing all his features comes to his feature m12 – he also finds the same defect and sends a defect report – but the developers send it back saying “it is duplicate”.

How to avoid duplicate bugs?
                                                            QA                                                                             

CBO_DEFECTS
 
 



 


 


 


 

Sales
….
 


 


 


 

          1                                 2                                3                                     4








             5                                6                                      7                                  8








… … ….
 
                                                                                                                                                   Defect
                                                                                                                                                   Repository







 






            MS – Search

Let us consider Test Engineer A is testing Sales module and finds a defect where-in – he enters all the information and then when he clicks on Submit button, it is going to Blank page – he prepares a defect report in which he explains the defect.

Now, before he sends it to developer – A logs into a server named QA – there, he goes into a folder called “Defect Repository” which has all the defect reports prepared by TE(s) and sent to developers and clicks on MS-Search and gives Sales as the search keyword and hits on search button – now, it starts looking inside the folder if there are any defect report which has Sales in it – if the search results in No files – then A will first copy-paste his defect report in the defect repository and then send the defect report to the development team who then assign it to the development engineer.
Now, after a few days – another TE B finds the same defect and he also prepares a report – but before he sends it to development team. He first logs onto QA and Defect Repository and searches for Sales keyword – he finds the report which was earlier sent by TE A – so he doesn’t send the defect to development lead.

But, always – the TE if he finds a defect similar to his if the Search operation yields some results – before he concludes that his defect has already been sent – he must first read the defect report and ascertain whether it is the same bug which he has found – chances are there that it might have the keyword Sales, but it is about some other defect in Sales feature.
For ex, - TE A is testing password text field – he finds that it is accepting 12 characters also (when requirement says “it must accept only 10characters”) – that’s a bug. So he prepares a defect report which has the keyword password and stores it in the defect repository and also sends it to Dev team. Now, another TE B is also testing password field – he finds there is a bug where-in password text field is also accepting blank space character – before he prepares a report, he goes to the defect repository and searches for Password keyword – there he finds the earlier report sent by A – but that’s a different defect – he reads it and realizes that it’s not the same defect which he has found – so, he prepares a defect report regarding the blank space acceptance in the password text field – and stores it in the defect repository and also sends it to the development team.

CANNOT BE FIXED
Chances are there – Test Engineer finds a bug and sends it to Development Lead – development lead looks at the bug and sends it back saying “cannot be fixed”.
Why does this happen? – Because,
·         Technology itself is not supporting i.e, programming language we are using itself is not having capability to solve the problem
·         Whenever there is a bug in the root of the product. If it’s a minor bug, then development lead says “cannot be fixed”. But, if it’s a critical bug, then development lead cannot reject the bug
·         If the cost of fixing the bug is more than the cost of the bug itself – cost of the bug means loss incurred because of the bug.

POSTPONED or Fixed in the next release
a) We find a bug during the end of the release (could be major or minor but cannot be critical) – developers won’t have time to fix the bug – such a bug will be postponed and fixed in the next release and the bug status will be “open”



 

BUG
 


 


 


 


 
b)






Developers have built the above application – Test Engineers are testing the application and they find a bug – now, the bug is sent to the development team.
Development team looks at the report – and replies back to the testing team saying “they will not fix the bug for now, as the customer is thinking of making some changes to that module or he might as well ask for a requirement change where-in the module itself might have to be removed” – so they won’t fix the bug for now – but if no requirement change happens, then they will fix the bug.

c) If the bug is minor and it is in feature exposed to internal users.
For ex, consider Citibank employee using a s/w where-in he is making keeping track of accounts and customer details – now, for example if the “Sort by name” feature is not working – it’s ok because it’s a minor bug because the development team can always fix the bug during the next release.

NOT REPRODUCIBLE

1) Open browser and enter www.citibank.com and click on Go button

2) Login using valid username and password

3) In the homepage, click on “SALES link button”

4) It goes to blank page
 

BLANK PAGE
 

….
…..
…..
……
…….
….
…..
SALES
……
….
…..
 


 
 









                                                                                                                              DEFECT REPORT





    Open the application in Mozilla FireFox

Let us consider the above application – the TE is testing the above application in Mozilla Firefox– when he clicks on SALES link button – it goes to a blank page – this is a bug – the TE prepares a defect report and sends to the development team.
 









     Open the application in Internet Explorer

The development lead looks at the defect report and opens the application in Internet Explorer – when he clicks on Sales link button, Sales page opens and the application works perfectly.
Then, what was the problem? – the answer is, the TE didn’t specify in the defect report in which browser to open the application – so, the application didn’t work for the TE in Mozilla FireFox – but, when the developer opened it in Internet Explorer, the application worked totally fine.
Since the developer is not able to see any defect – he replies back by saying “I am not able to find the defect” or “I am not able to reproduce the defect”.

Why we get “not reproducible” defects?
1.      Because of platform mismatch
2.      Because of improper defect report
3.      Because of data mismatch
4.      Because of build mismatch
5.      Because of inconsistent defects

1) Because of platform mismatch
Ø  Because of OS mismatch
Ø  Because of browser mismatch
Ø  Because of ‘version of browser’ mismatch
Ø  Because of ‘settings of version’ mismatch

2) Because of improper defect report
Example to explain this - take figure and explanation in Pg 136 and 137. Here, the TE must have specified to open the application in Mozilla Firefox
 Let us consider another example shown below to explain “improper defect report”


1) Open browser and enter www.citibank.com and click on Go button

2) Enter user details and click on Submit button

3) It goes to blank page
 
 





                                                                                                                                 DEFECT REPORT





In the above application – TE is testing the above application – when he enters all the user details and selects checkbox and clicks on Submit button – it goes to blank page – but, when the TE does not select the checkbox and clicks on Submit button, a new user account is created, i.e, it works fine. The TE prepares a defect report and sends it to development lead.
The Dev team looks at the report(as shown in box) – and tests the application – it is working absolutely fine.
Then what happened? – Observe the defect report sent by the testing team – nowhere as he mentioned to “select checkbox and click on submit button” – thus because of the improper defect report – the development team is not able to reproduce the defect.

3) Because of data mismatch
Consider the example shown below,
 











Login as ABC and click on Inbox in homepage of ABC

The above email application has been developed – the TE starts testing the above application – after testing and testing the above application using username ABC and valid password – there are almost 101 mails in ABC’s inbox – now, again when the TE opens the application and goes to test the application – no mails are being displayed when he clicks in Inbox and instead he gets a blank page. So – the defect he has found is that – when the number of mails in Inbox exceeds 100 mails , he gets a blank page – so he prepares a defect report as shown in the box below,

1) Open the browser and enter the following URL www.email.com
2) Login using valid username and password
3) Click on Inbox
4) Blank page is displayed

 
 




The development team looks at the defect report – he logs in to the application using username XYZ and clicks on Inbox – no blank page is displayed and the Inbox is working fine.
What happened here? – The TE should have mentioned in the defect report as “Login as ABC” or “Login to any mailbox which has more than 100mails”. Thus, the developer does not find any defects and thus he mentions it as “not reproducible defect”.
4) Because of build mismatch

 









Developer develops build 1 and gives it for testing – in Build 1, there are 2 defects – bug 1 and bug 2 – TE while testing finds bug1 and reports it to development team – development team when they fix bug1, bug2 automatically gets fixed – development team is developing build 2 and gives it to testing team for testing – testing team just when it finishes testing build1 – he finds Bug 2 and reports it to development team – the development team however do not find any defect as they are testing build 2 – so they report back saying “bug is not reproducible”.

5) Because of inconsistent defects
To explain this, let us consider an example : When TE is testing an email application – he composes mail in User A and sends it to User B – he then logs out from user A and logs into User B and checks B’s inbox – but no mail is there in the Inbox – thus he finds a defect – now, just to confirm the defect before sending a defect report – the TE again logs into User A and sends a mail to User B – he then logs out from User A and logs into User B and checks B’s inbox – but, this time the mail is there in B’s inbox!!
Thus, we don’t know when the defect comes and when the feature works fine. This is called inconsistent defect.

REQUEST  FOR  ENHANCEMENT (RFE)
Test engineer finds a bug and sends it to development team – when development team look at the report sent by the TE – They know it’s a bug, but they say its not a bug because its not part of the requirements.
Let us consider the example shown below,  
 






                                                                                                                                                 
In the above example, the TE is testing the above fields. After he enters all the data into the required fields, he realizes that he needs to clear all the data – but there is no CLEAR button – and he has to manually clear all the fields. He reports this as a bug – but the development team will look at the defect report and see that clear button is not mentioned in the requirements – so they don’t reject or close the bug – instead they reply back to TE saying that it is RFE.
Developers agree that it is a bug – but will say that the customer have not specified these details and hence will give it a name as RFE.
If a defect is known as RFE, then we can bill the customer. Otherwise, development team needs to fix the bug
Development team always have a tendency to call a defect as RFE, so a TE needs to check the justification given by development team – if it is valid, then he will accept it as a RFE – but if it is not, then he will respond to the development team with proper justification.


INTERVIEW QUESTIONS & TIPS

1) Explain Defect Life Cycle ( **** VERY VERY IMPORTANT QUESTION ****)

When TE is testing the product – he finds a defect – he prepares a defect report and creates a status as “OPEN” – and sends it to development lead – development lead looks through the defect report – and if the defect is valid – he then finds out who developed that module in which the defect has been found and assigns the defect to that development engineer – the development lead also changes the status of the defect report to “ASSIGNED” – the development engineer fixes the defect and changes the status to “FIXED” – the build is then sent to the TE for re-testing – the TE tests the fix – and if the defect has been really fixed – then he changes the status of the defect report to “CLOSED” – if the defect is still there, he changes the status to “RE-OPEN”.

Sometimes it so happens that TE finds a defect and sends it to development lead – development lead looks at the report and rejects the report and he explains why it has been rejected,  
REJECT (explain)
DUPLICATE ( explain Duplicate)
CANNOT BE FIXED (explain)
POSTPONED (explain)
NOT REPRODUCIBLE (explain)
RFE (explain)
 
 











DEFECT REPORT

Defect ID – it is an unique number given to the defect

Test Case Name – whenever we find a defect, we send the defect report and not the test case to the developer. For defect tracking, we only track the defect report and not the test case. Test case is only for reference for the TE. We always only send the defect report whenever we catch a bug.

When we are doing ad-hoc testing – no test case is written for ad-hoc testing because they are “out of the box” testing scenarios – if we find a critical bug – then we convert that ad-hoc scenario into a test case and send it to development team.



Given below is – how a defect report looks like – it is a MS – WORD file.


INTERVIEW TIPS
Q) What are the attributes of a defect report ? (OR) What is the mode of communicating a defect ?
Ans) the answer for the above questions are – just explain the defect report.
 
 































Defect Evaluation Team / Bug Counseling Team
 











                                       







Let us consider the above figure to explain about Bug review meeting / Bug Counseling
The Defect Evaluation Team (DET) consists of Development Lead, Development Manager, Senior Development Engineers and Test Lead.
They will have a group mail id – say – xyz_det@abc.com – Now, whenever TE finds a bug, he sends it to DET – In DET, only the Development Lead (DL) looks into the bug report and assigns the bug – although the mail goes to everybody in the DET, only DL will check it and assign the bug. This process continues from Monday morning upto Friday afternoon – by this time about 100bugs have been reported by TE(s) – out of these 100 bugs, 60 have been assigned and the remaining 40 are pending.
Now, on Friday evening – DET team will have a meeting where they discuss about the pending bugs and whether to assign the bugs or reject the bugs – but for everything, they will have to give proper justification.
This meeting is called Bug Review Meeting / Bug Counseling. By the end of the meeting (i.e, 1st cycle) – the status of all the pending bugs will changed from pending to other status(es).

Manual                                                                                                                       Automation
 



DEFECTS
 


DEFECT TRACKING
 



Manual                                                                                                                         Automation

How to track a defect manually?
1)      Find a defect
2)      Ensure that it is not duplicate (i.e, verify it in Defect Repository)
3)      Prepare defect report
4)      Store it in defect repository
5)      Send it to development team
6)      Manage defect life cycle (i.e, keep updating the status)

Tracking of defects using Automation (i.e, Defect Tracking Tool)
The various tools available are,
®     Bugzilla
®     Mantis
®     Rational Clear Quest
®     TeleLogic
®     Bug_track
®     QC – Quality Center – it is a test management tool – a part of it is used to track the defects.

There are 2 categories of tools,
1) Service based – In service based companies – they have many projects of different clients – each project will have a different defect tracking tool
2) Product based – in product based companies – they use only one defect tracking tool.

Now, let us see how the defect tracking tool works,

Java Sysllabus

Section 1: Basic of programming.

  • JDK
  • How to write simple programs in java

Wednesday, March 25, 2020

Test Automation Process

Drawbacks of Manual Testing:

1) Manual Testing requires more time or more resources, some times both Time and Resources.
2) Less Accuracy
3) Performance testing is impractical in manual testing.
4) Comparing large amount of data is impractical.
5) Batch Testing is possible, but for each test execution Human user interaction is mandatory.
6) Manual Test Case scope is very less, if it is Automated test, scope is more.
7) Executing same tests again and again is time taking process as well as Tedious.
8) For every release you must rerun the same set of tests which can be tiresome.

Advantages of Manual Testing:
1)No Environment Limitations
2) Programming Knowledge is not required.
3) Recommendable for Dynamically changing GUI designs.
4) Manual testing allows for human observation, which may be more useful to find potential defects.

Test Automation

Testing the Software using any automation tool is called Test
Automation.


Advantages of test Automation:

1.Fast
2.Reliable
3.Reusable
4.Repeatable
5. Programmable

Drawback of Automation Testing:

1.It is Expensive
2.Lack of Expertization.

3.Requires Constant maintenance.
4.We cannot automate all the areas(Either technology may not be supported or it will
be very costly).

Example for technical limitations:

1.Multimedia Testing
2.Game testing
3.Printer Testing
4.Usability Testing
5.Adhock Testing
6.Verification of graphics charts & Animations
7.Captcha
8.Authentication through card swiping or Biomatrix scanning.
9.Entering product details through bar code scanning.
10.Tracking patient/instrument movement through RFID (Radio-Frequency
Identification)

Sunday, March 22, 2020

Regression Testing V/s Retesting

Regression Testing

Re Testing

Testing the unchanged functionalities of application to make sure it is not broken because of changes.
Verifying whether the bug is fixed or not
Defect verification is not the part of Regression Testing

Defect verification is the part of re-testing

Based on the project and availability of resources, Regression Testing can be carried out parallel with Re-testing

Priority of re-testing is higher than regression testing, so it is carried out before regression testing

You can do automation for regression testing, Manual Testing could be expensive and time-consuming

You cannot automate the test cases for Retesting

Regression testing is done for passed test cases

Retesting is done only for failed test cases

Regression testing checks for unexpected side-effects

Re-testing makes sure that the original fault has been corrected

Test cases for regression testing can be obtained from the functional specification, user tutorials and manuals, and defect reports in regards to corrected problems

Test cases for retesting cannot be obtained before start testing.

Regression Testing



Regression Testing is a type of testing that is done to verify that a code change in the software does not impact the existing functionality of the product.This is to make sure the product works fine with new functionality, bug fixes or any change in the existing feature. Previously executed test cases are re-executed in order to verify the impact of change.

Testing the unchanged features in order to make sure that it broken because of changes,here changes would be addition of new feature, modification of existing feature, removal of feature or bug fixes.

OR

Re execution of same test cases in different build or test cycle is in order to insure that changes are not impacted unchanged features.

Regression V/S Re-Testing:


Selecting test cases for regression testing

It was found from industry data that a good number of the defects reported by customers were due to last minute bug fixes creating side effects and hence selecting the Test Case for regression testing is an art and not that easy. Effective Regression Tests can be done by selecting the following test cases.


             Test cases which have frequent defects
             Functionalities which are more visible to the users
             Test cases which verify core features of the product
             Test cases of Functionalities which has undergone more and                 recent changes
             All Integration Test Cases
             All Complex Test Cases
             Boundary value test cases
             A sample of Successful test cases
             A sample of Failure test cases

Challenges in Regression Testing:

     With successive regression runs, test suites become fairly large.  Due to time and budget constraints, the entire regression test suite cannot be executed

     Minimizing the test suite while achieving maximum Test coverage remains a challenge

     Determination of frequency of Regression Tests, i.e., after every modification or every build update or after a bunch of bug fixes, is a challenge.

Regression Testing Tools:
        Selenium
        Ranorex Studio
        Katalon Studio
        AdventNet QEngine
        Regression Tester
        vTest
        Watir
        actiWate
        Rational Functional Tester
        SilkTest
        TimeShiftX