Quality Assurance in Agile Software Development


images.png


What is software ‘Quality’?


Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and / or expectations, and is maintainable.Actually it is a subjective term. It’ll depend on who the ‘customer’ is and their overall influence in the scheme of things. Each type of customer will have their own slant on quality of the software.


A wide angle view of the customers of a software development project might include end-users, customer acceptance testers, customer contract officers, customer’s management, the development organization’s management / accountants / testers / salespeople, future software maintenance engineers, stockholders, magazine columnists, etc.


icebreg.jpg


image courtesy: radiotherapie centre hospitalier university



some of the software quality indicators are...


  1. progress of development
  2. stability of the software
  3. process compliance
  4. quality, evaluation effort
  5. Test coverage
  6. Defect detection efficiency
  7. Defect density
  8. complexity of the code


When measuring the quality of a software we need to have objective indicators for each required quality.


A software quality metric is a measure of some property of a piece of software or it’s specifications.
A quality standard like ISO/IEC 9126 requires measurements of user-perceived quality. It has six quality characteristics of a software. Those six may be refined into multiple levels of sub characteristics. A sub characteristic is evaluated by a set of metrics.

9126ref1.gif

image courtesy: www.cse.dcu.ie


ISO/IEC 25010:2011(SQuaRE) is used as a successor to ISO 9125
SQuaRE means System and software Quality Requirements and Evaluation



ISO/IEC 25010:2011 defines:
A quality in use model composed of five characteristics (some of which are further subdivided into sub characteristics) that relate to the outcome of interaction when a product is used in a particular context of use. This system model is applicable to the complete human-computer system, including both computer systems in use and software products in use.

iso2011.jpg

image courtesy: www.cse.dcu.ie


When you are going to do the testing manually, How many test case would be essential to do the testing in below logIn form?

gmail_login.png

I’ve written 14 here and there can be more…


i. Verify that the login screen is having option to enter username and
  password with submit button and option of forgot password
ii. Verify that user is able to login with valid username and password
iii. Verify that user is not able to login with invalid username and password
iv. Verify that validation message gets displayed in case user leaves username
   or password field as blank
v. Verify that validation message is displayed in case user exceeds the
   character limit of the username and password fields
vi. Verify that there is reset button to clear the field's text
vii. Verify if there is checkbox with label "remember password" in the login page
viii. Verify that the password is in encrypted form when entered
ix. Verify that there is limit on the total number of unsuccessful attempts
x. For security point of view, in case of incorrect credentials user is displayed the message like "incorrect username or password" instead of exact message  pointing at the field that is incorrect. As message like "incorrect username" will aid hacker in brute forcing the fields one by one
xi. Verify the timeout of the login session
xii. Verify if the password can be copy-pasted or not
xiii. Verify that once logged in, clicking back button doesn't logout user
xiv. Verify if SQL Injection attacks works on login page



software-testing-11.jpg



Easily we can identify two different types of testing a software. They are…


  1. Functional Test : Testing a slice of functionality in a system. This will test many methods and may interact with dependencies like database or web services.


  1. Unit Test : Testing an individual unit, such as a method (function) in a class, with all dependencies mocked up.


Except those performance test, Acceptance test and installation test are such different ways of doing testing.


Test Implementation Steps


Here is a suggested sequence of steps(2 phase) for testing a unit:


1. Once the design for the unit is complete, carry out complete a test plan for a unit.
  • Create stubs for not yet completed referenced other units.
  • Create a driver (or set of drivers) for the unit.
  • Construct of test case data (from the test plan).


2. Once the implementation is complete,
  • Use the driver (or set of drivers) to test the unit.
  • Execution of the unit, using the test case data.
  • Make provision for the results of the test case execution to be printed or logged as appropriate.


Automated Testing vs Manual Testing

images.jpg

image courtesy: www.cse.dcu.ie



Not all tests can be automated and most times is difficult to decide what to automate and what to manually test.



Let’s consider the few advantages of both testing methods.

advantages_testing.PNG



Automated testing in Agile Environments


agile1(1).jpg


“Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.“


Why automated testing?
  • A time savings translates directly into cost savings
  • Improves testing productivity
  • Improves accuracy
  • Increases test coverage
  • Does what manual testing cannot do



Testing should be included in the software development life cycle as well. 

testing involve.png

Generally there are four different types of test automation frameworks. 
  • Data Driven Automation Framework
  • Keyword Driven Automation Framework
  • Modular Automation Framework
  • Hybrid Automation Framework


frameworks.PNG


Agile Testing

Agile Testing is a software testing practice that follows the principles of agile software development. It’s not emphasize testing procedures and focuses on ongoing testing against newly developed code until quality software from an end customer’s perspective results. Agile testing is built upon the philosophy that testers need to adapt to rapid deployment cycles and changes in the testing platform.  

There are some differences between agile and other methods of testing with respect to quality.


agile_others_quality.PNG

Comments

  1. Thanks for sharing nice post and nice urging commented at this place, I am in fact enjoying by these.I like visiting your site since I always come across interesting articles like this one. Keep sharing! Regards. Read more about
    testing services companies
    Software Testing and Quality Assurance Services
    Performance testing services
    Security testing services
    software testing company

    ReplyDelete

Post a Comment

Popular posts from this blog

CAP THEOREM

Hash Functions