Software Testing Tutorial


Software Development Life Cycle (SDLC) is a procedural process in the development of a software product. This process is carried out in a series of steps, which explains the whole idea behind the development of a software product.

The classification of the Software Development Life Cycle process is as follows:

  • Planning
  • Analysis
  • Design
  • Software Development
  • Implementation
  • Software Testing
  • Deployment
  • Maintenance
  • Software testing is an important step in a product’s life cycle, as it will determine whether a product works correctly and efficiently according to the requirements of customers.

    Introduction to Software Testing

    Before we go ahead and take a detailed look at software testing, it is necessary to know a few concepts that will simplify the definition of software testing.

    • Error: Error or mistake is a human action that produces wrong or incorrect result.
    • Defect (Bug, Fault): A flaw in the system or a product that can cause the component to fail or malfunction.
    • Failure: It is the variance between the actual and expected result.
    • Risk: Risk is a factor that could result in negativity or a chance of loss or damage.

    Thus, software testing is the process of finding defects/bugs in a system, that occur due to an error in the application, which could lead to failure of the resultant product. In short, software testing has different goals and objectives, which often include:

  • Finding defects
  • Gaining confidence and providing information about the level of quality
  • Preventing defects
  • Scope of Software Testing
    The primary function of software testing is to detect bugs in order to uncover and detect it. The scope includes execution of that code in various environment and also to examine the aspects of the code – does the software do what it is supposed to do and function according to the specifications? As we move further we come across some questions such as, “When to start testing?” and “When to stop testing?” It is recommended to start testing from the initial stages of the software development. This not only helps in rectifying the errors before the last stage, but also reduces the rework of finding bugs in the initial stages every now and then. It saves time and is cost-effective. Software testing is an ongoing process, which is potentially endless but has to be stopped somewhere, due to the lack of time and budget. It is required to achieve maximum profit with good quality product, within the limitations of time and money. The tester has to follow some procedural way through which he can judge if he covered all the points required for testing or missed out any. To help testers carry out these day-to-day activities, a baseline has to be set, which is done in the form of checklists.

    Key Concepts

    • Defects and Failures: As we discussed earlier, defects are not caused only due to coding errors, but most commonly due to the requirement gaps in the non-functional requirement, such as usability, testability, scalability, maintainability, performance and security. A failure is caused due to the deviation between an actual and an expected result. But not all defects result in failures. A defect can turn into a failure due to a change in the environment or a change in the configuration of the system requirements.
    • Input Combination and Preconditions: Testing all combination of inputs and initial state (preconditions), is not feasible. This means finding a large number of infrequent defects is difficult.
    • Static and Dynamic Analysis: Static testing does not require execution of the code for finding defects, whereas in dynamic testing, software code is executed to demonstrate the results of the tests.
    • Verification and Validation: Software testing is done considering these two factors.
    • Verification: This verifies whether the product has been designed according to the specification.
    • Validation: This checks whether the product meets the requirements of customers.
    • Software Quality Assurance: Software testing is an important part of quality assurance. Quality assurance is an activity, which proves the suitability of the product by taking care of the quality of the product and ensuring that the customer requirements are met.

    Software Testing Types
    Software test type is a group of test activities that are aimed at testing a component or system focused on a specific test objective; a non-functional requirement such as usability, testability or reliability. Various types of testing are used with the common objective of finding defects in that particular component.

    Software testing is classified into two basic types: Manual Scripted Testing and Automated Testing.
    Manual Scripted Testing

    • Black Box Testing
    • White Box Testing
    • Gray Box Testing

    The levels of software testing life cycle include:

    • Unit Testing
    • Integration Testing
    • System Testing
    • Acceptance Testing (Alpha Testing & Beta Testing)

    Other types of software testing are:

    • Functional Testing
    • Performance Testing (Load Testing & Stress Testing)
    • Smoke Testing
    • Sanity Testing
    • Regression Testing
    • Recovery Testing
    • Usability Testing
    • Compatibility Testing
    • Configuration Testing
    • Exploratory Testing

    Automated Testing
    Manual testing is a time-consuming process. Automation testing involves automating a manual process. Test automation is a process of writing a computer program in the form of scripts to do a testing which is otherwise done manually. Some of the popular automation tools are Winrunner, Quick Test Professional (QTP), LoadRunner, SilkTest, Rational Robot, etc. Automation tools category also includes maintenance tools such as TestDirector and many others.

    Software Testing Methodologies
    There are various testing methodologies available for developing and testing a software product. These models are as follows:

    • Waterfall Model
    • V Model
    • Spiral Model
    • Rational Unified Process (RUP)
    • Agile Model
    • Rapid Application Development (RAD)

    Software Testing Artifacts
    Software testing process can produce various artifacts such as:

    • Test Plan: A test specification is called a test plan. A test plan is documented so that it can be used to verify and ensure that a product or system meets its design specification.
    • Traceability matrix: This is a table that correlates or designs documents to test documents. This verifies that the test results are correct and is also used to change tests when the source documents are changed.
    • Test Case: Test cases and strategies are used to check the functionality of individual components that are integrated to give the resultant product. These test cases are developed with the objective of judging the application for its capability or feature.
    • Test Data: When multiple sets of values or data are used to test the same functionality of a particular feature in the test case, the test values and changeable environmental components are collected in separate files and stored as test data.
    • Test Script: The test script is the combination of a test case, test procedure and test data.
    • Test Suite: Test suite is a collection of test cases.

    Software Testing Process
    Software testing process is carried out in the following sequence, in order to find faults in the software system:

  • Create Test Plan
  • Design Test Case
  • Write Test Case
  • Review Test Case
  • Execute Test Case
  • Examine Test Results
  • Perform Post-mortem Reviews
  • Budget after Experience
  • Here is a sample Test Case for you:
    Software Test Case for Login Page:

    • Purpose: The user should be able to go to the Home page.
    • Pre-requisite:
    • S/w should be compatible with the Operating system.
    • Login page should appear.
    • User Id and Password text boxes should be available with appropriate labels.
    • Submit and Cancel buttons with appropriate captions should be available.
    • Test Data: Required list of variables and their values should be available. For example: User Id:{Valid User Id, Invalid User Id, empty}, Password:{Valid, Invalid, empty}.

    Sr. No
    Test Case Id
    Test Case Name
    Steps/Action
    Expected Results
    1.
    TC1.
    Checking User Interface requirements.
    User views the page to check whether it includes User Id and Password text boxes with appropriate labels. Also, the Submit and Cancel buttons should be available with appropriate captions.
    Screen displays user interface requirements according to the user.
    2.
    TC2.
    Text box for User Id should: i) Allow only alphanumeric characters {a-z, A-Z}, ii) Not allow special characters like {‘$’,’#’,’!’,’~’,’*’,…}, iii) Not allow numeric characters like {0-9}
    i) User types numbers into the text box.
    i) Error message is displayed for numeric data.
    ii) User types alphanumeric data in the text box.
    ii) Text is accepted when user enters alphanumeric data into the text box.
    3.
    TC3.
    Checking the functionality of the Password text box: i) Text box for Password should accept six or more characters. ii) Data should be displayed in encrypted format.
    i) User enters only two characters in the password text box.
    i) Error message is displayed when user enters less than six characters in the password text box.
    ii) User enters more than six characters in the password text box.
    System accepts data when user enters more than six characters into the password text box.
    ii) User checks whether the data is displayed in the encrypted format.
    System accepts data in the encrypted format else displays an error message.
    4.
    TC4.
    Checking the functionality of ‘SUBMIT’ button.
    i) User checks whether ‘SUBMIT’ button is enabled or disabled.
    i) System displays ‘SUBMIT’ button as enabled
    ii) User clicks on the ‘SUBMIT’ button and expects to view the ‘Home page’ of the application.
    ii) System is redirected to the ‘Home page’ of the application as soon as he clicks on the ‘SUBMIT’ button.
    5.
    TC5.
    Checking the functionality of ‘CANCEL’ button.
    i) User checks whether ‘CANCEL’ button is enabled or disabled.
    i) System displays ‘CANCEL’ button as enabled.
    ii) User checks whether the text boxes for User Id and Password are reset to blank by clicking on the ‘CANCEL’ button.
    ii) System clears the data available in the User Id and Password text box when user clicks on the ‘CANCEL’ button.

    Fault Finding Techniques in Software Testing
    Finding a defect or fault in the initial stages of software development not only saves time and money, but is also efficient in terms of security and profitability. As we move forward towards the different levels of the software, it becomes difficult and tedious to go back for finding problems in the initial stages of the software. The cost involved is also more. Thus it is recommended to start testing from the initial stages of the software development life cycle.

    There are various techniques involved along with the types of software testing. There is a procedure that is to be followed for finding a bug in the application. This procedure is combined into the life cycle of the bug in the form of contents of the bug, depending upon the severity and priority of that bug. This life cycle is known as the bug life cycle.

    Measuring Software Testing
    There arises a need for measuring the software, both, when the software is under development and after the system is ready for use. Though it is difficult to measure such an abstract constraint, it is essential to do so. The elements that cannot be measured, need to be controlled. There are some important uses of measuring the software:

    • Software metrics help in avoiding pitfalls such as:
    • Cost overruns
    • In identifying where the problem has raised
    • Clarifying goals
    • It answers questions such as:
    • What is the estimation of each process activity?
    • What is the quality of the code that has been developed?
    • How can the underdeveloped code be improved?
    • It helps in judging the quality of the software, cost and effort estimation, collection of data, productivity and performance evaluation.

    Some of the common software metrics are:

    • Code Coverage
    • Cyclomatic complexity
    • Cohesion
    • Coupling
    • Function Point Analysis
    • Execution time
    • Source lines of code
    • Bug per lines of code

    In short, measurement of a software is for understanding, controlling and improvement of the software system. Software is subject to changes, with respect to changing environmental conditions, varying user requirements, as well as configuration and compatibility issues. This gives rise to the development of newer and updated versions of a software. But there should be some source of getting back to the older versions easily and working on them efficiently.

    Software Testing as a Career
    Software testing is a good career opportunity for those who are interested in the software industry. Video game testing is an offshoot of software testing. There are many industries specializing in this field. Believe it or not, you can actually get paid to test video games.

    Interview Questions
    If you are planning to choose software testing as a career option, you might like to go through this extensive list of software testing interview questions. Before you step out for a job in the testing field or before you take your first step towards becoming a software tester, you can acquire these certifications mentioned below.

    Certifications
    There are some certification programs that can support the professional aspirations of software testers and quality assurance specialists.

    • ISTQB – International Software Testing Qualifications Board
    • CSTE – Certified Software Tester
    • CSTP – Certified Software Test Professional
    • CTM – Certified Test Manager
    • CSPM – Certified Software Project Manager
    • CSPE – Certified Software Process Engineer
    • CAST – Certified Associate in Software Testing

    Quality Assurance Certifications

    • CSQA – Certified Software Quality Analyst
    • Software Quality Assurance Certification
    • CSQE – Certified Software Quality Engineer
    • CQIA – Certified Quality Improvement Associate

    Software testing is indeed a vast field and accurate knowledge is crucial to ensure the quality of the software developed. I hope this article on software testing tutorial must have given you a clear idea on the various software testing types, methodologies and different software testing strategies.