Sunday, 23 February 2014

Why Documentation is Important in Software Testing?

Software testing is an essential portion of Software Development Life Cycle. In current’s testing process, project requires planned and serialized documentation for testing and development. Because of this most of companies concentrate on creating documentation of software development process.
Proper documentation is the only key thing that can make it possible and makes testing more accurate in an organization. A project’s documentation makes testing process easy and organized, also saves company money and time spent on that project. Proper documentation makes easy for the client to review the software process.
Fact is that, careful documentation can save an organization’s time, efforts and money. For any bigger company, like; Microsoft, adobe, oracle, TCS etc.., there product or software successfully get releases with their proper documentation that makes easy for any user to understand the product. So that proper documentation has become major reason of software development.
Documentation is a most vital portion of a software product’s achievement and efficiency. Poor documentation affects the quality of software or application. The IEEE Standard for Software Test Documentation (IEEE829-98) provides a clear description of their testing document and their relation with other document and functions with the testing procedure. Software testing documentation helps in estimating the testing energy required, test coverage, condition tracking/tracing etc.

Why Documentation is Important in Software Testing?

There are numbers of vital software quality assurance documents provided by IEEE Standard which is to be used and maintained in regular basis to the success of the project:
  • Test design document
  • Test case specification
  • Test Procedure Specification
  • Test Strategy
  • Test summary reports
  • Test Log document
  • Test plan document
  • Bug reports document
  • Test data document
  • Document of Weekly Status Report
  • User Documents
  • Document of User Acceptance Report
  • Test Incident or Problem Report
  • Report of Risk Assessment
  • Test analysis
Standard sample testing templates should be there for all types of documentation like; Test strategy, test Plan, Test cases, and Test data to Bug report. These sample testing documents should follow some standards like CMMI, ISO etc. Needs of these documents are to synchronize quality process of testing software in an organization. An experience tester should be there to understand all kind of documents, project domain, objective, and technology. Documentation is also very useful in the case of automation testing or software performance testing.
A very important thing, Documentation keeps step-by-step processing record and result record which we keep as a reference material. A project that is fine documented has higher level of maturity and is more successful as compared to the un-documented project. Proper documentation is the only key point that can make it possible and makes testing more accurate in an organization
Figure below shows the cost involved in the software development life cycle.
Why Documentation is Important in Software Testing
Some important point to be noted at the time of doing project
  • The project’s objective and methods should be very clear
  • Good understanding should be there with clients
  • Present feedback for preventive actions on the project
  • Guarantee that the project performance should be consistent and accurate

If you enjoy reading this article please make sure to share it with your friends. Please leave your questions/tips/suggestions in the comment section below and I’ll try to answer as many as I can.
What other documents do you maintain in your daily testing activities? Share below in comments.

Role of A Tester in Defect Prevention and Defect Detection

In today’s fast growing world schedules of software delivery are getting more rapidly and company is doing delivery with high quality products. In such situation one simple question comes in mind that “How does we as testers maintain our testing standards in this chaotic environment?” Simple answer to simple question is removing the defects before they get added into the system or before actual testing is started. Such technique of prevention for introducing defects into system will not only help to test products faster but also reduce the high cost of poor quality.
In Software Testing Life Cycle, the Defect Prevention & Defect Detection are the key attributes which play an important role. But generally beginners get confused about the “Role of a tester/QA in defect prevention and defect detection”. In this article we are concentrating on what all phases of SDLC are come under the defect preventions, how prevent the introducing the defects into application and how tester tackle with the defect in the detection phases and how to calculate “Defect Detection Efficiency” in every testing phase.

What is Defect Prevention?

Defect prevention is one of the important activity in any software project. It is QA process to identify the root causes of defects and improve the process to avoid introducing defects, which help to improve the quality of the software product.
In Defect prevention phase testers are involved in the studying and reviewing requirement specification document. Basically this is an art to review the requirement documents. While studying these documents testers run into different queries or misleading or unclear requirements. Tester & other team member’s needs to come up with such type of queries and get resolved from stakeholders. So based on queries raised by team, stakeholder provide inputs & provide changed/updated requirement specification document.
requirements-work-flow
Along with testers, developers play an important role in this phase. In this phase developer involved in some activities like reviewing requirement, code review, static code analysis, unit testing etc. Generally in order to complete the project on time developer often ignores the uncertainty in specification documents or developer fail to understand the requirement. Such ambiguities are implemented in the code makes more bugs for tester to identify. If tester finds these ambiguities upfront in the requirement specification review phases then it catches upfront. While cost of such defects are smallest and benefit of fixing defects in defect prevention stage is significantly lower than the fixing in later stages. As a result it reduces cost overall time, cost & resources required big time. Such a way testers are help team in the defect prevention phase.
The knowledge of defect injecting methods and processes enable the defect prevention. Therefore it is advisable to make measures that prevent the defect from being introduced in the product right from early stages of the project.
Following diagram shows phase involved in Design Prevention Phase and Detection phase:
defect-prevention-and-defect-detection

What is Defect Detection?

The testing process or strategy for defect detection should be defined well in advance, so that testing activity can be carried out very smoothly like functional testing, System testing, Regression testing, Exploratory testing etc.
Tester should have complete understanding/knowledge of application under test, so it will help to increase the defect detection rate. Along with normal functional testing the Ad hoc or exploratory testing should be carried out in parallel which help to find the lot of defects.

Defect Detection Efficiency:

Defect Detection Efficiency (DDE) is the number of defects injected and detected in a phase by the total number of defects injected in that phase.
Defect Detection Efficiency Formula:
Defect Detection Efficiency (DDE) = (Number of Defects Injected AND Detected in a Phase / Total Number of Defects Injected in that Phase) x 100 %

Over to you:

Defect prevention is a valuable investment which helps to maintain the quality of the product with faster schedules. Defect prevention not only get improved quality product but also saves the time & cost of the product, reduce the rework effort, reduce the development time, increase the customer satisfaction. As a result the it enhances the total productivity.
Have you find prevented any bug introducing into system in your testing carrier? Please share your experience in the below comments.
Happy Testing!!!

Usability Testing: What? Why? & How?

Usability Testing is a Black Box Testing Technique. Usability testing is done with users point of view. It is a technique implemented in user-centred interaction design to evaluate a product or service by testing it with representative users. On the Web page the usability is a most important and required condition for survival. If the website is difficult to use then peoples will not stay on the page. If the page content or details are hard to read or understand then also peoples will leave the page. So Usability testing plays an important role which assesses how easy user interfaces is to use.

Usability Testing Definition:

The testing aim is to recognize any usability problems, gather qualitative and quantitative data and establish the participant’s fulfillment with the product.
Usability testing is an essential element of quality assurance. It is the measure of a product’s potential to accomplish the goals of the user. Usability testing is a method by which users of a product are asked to perform certain tasks in an effort to measure the product’s ease-of-use, task time, and the user’s perception of the experience. This look as a unique usability practice because it provides direct input on how real users use the system. Usability testing measures human-usable products to fulfill the users purpose. The item which takes benefit from usability testing are web sites or web applications, documents, computer interfaces, consumer products, and devices. Usability testing processes the usability of a particular object or group of objects, where common human-computer interaction studies try to formulate universal principles.
Usability features like “Look and feel” cannot be measured at all time because they are subjective in nature. In usability testing mostly testers test the ease with use of user interface. Tester can test user-friendly or non- friendly applications or the products too. Usability testing is a true test of how people actually use a web site & determines that whether user is feeling comfortable with other applications or Web sites according to different parameters like; the flow, browsing and layout, speed and content.

Usability Testing

Usability testing checklist is divided into three parts Accessibility, Navigation and Content.
Section I: Accessibility
  • Check about the load time of Website is realistic.
  • Check if Adequate Text-to-Background Contrast is present.
  • Check if font size & spacing between the texts is properly readable.
  • Check if website has its 404 page or any custom designed Not Found page.
  • Check if appropriate ALT tags are added for images.
Section II: Navigation
  • Check if user is effortlessly recognizes the website navigation.
  • Check if navigation options are understandable & short.
  • Check if number of buttons/links are reasonable
  • Check if the Company Logo Is Linked to Home-page
  • Check if style of links is consistent on all pages & easy to understand.
  • Check if site search is present on page & should be easy to accessible.
Section III: Content
  • Check if URLs Are Meaningful & User-friendly
  • Check if HTML Page Titles Are Explanatory
  • Check if Critical Content Is Above The Fold
  • Check if Emphasis (bold, etc.) Is Used Sparingly
  • Check if Main Copy Is Concise & Explanatory
  • Check if Major Headings Are Clear & Descriptive
  • Check if Styles & Colors Are Consistent

Key Benefits of Usability Testing:

  • Decrease development and redesign cost which increases user satisfaction.
  • Help to determine the real requirements and tasks of the user before time in the design process.
  • Analysis of your website design’s strengths and weaknesses.
  • Limit graphics with functions of design.
  • User productivity increases, cost decreases.
  • Increase business due to satisfied customers.
  • Reduces user acclimation time and errors.
  • Provide better quality software to the end user or the customer.
  • Software will be easy to understand and use by end user or the customer.
  • Software is more gladly accepted by users.
  • Shorten the learning curve for new users.

Advantages of Usability Testing:

  • Usability testing finds important bugs and potholes of the tested application which will be not visible to the developer.
  • Using correct resources, usability test can assist in fixing all problems that user face before application releases.
  • Usability test can be modified according to the requirement to support other types of testing such as functional testing, system integration testing, Unit testing, smoke testing etc.
  • Planned Usability testing becomes very economic, highly successful and beneficial.
  • Issues and potential problems are highlighted before the product is launched.

Limitations of usability testing:

Planning and data-collecting process are time consuming. It is always be confusing that why usability problems come. Its small and simple size makes it unreliable for drawing conclusions about subjective user preferences. It’s hard to create the suitable context. You can’t test long-term experiences. Unplanned social connections cannot be replicated. People act in a different way when they know they’re being observed.

Over to you:

Testing usability is an art and a science.Have you ever worked on the Usability testing? What is your experience while testing these applications? please share your experience in the comments below.

Happy Testing!!!