Software Testing

Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving performance.

Why to Learn Software Testing?

In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities −

  • Software Tester
  • Software Developer
  • Project Lead/Manager
  • End User

MANUAL TESTING

  1. Software Development Life Cycle (SDLC)
  2. SDLC Models
  • Waterfall Model
  • Iterative Model
  • Spiral Model
  • V-Model
  • Big Bang Model
  1. Agile Methodologies
  2. Software Testing Life Cycle Framework
  • Principles
  • Phases
  1. Defect Life Cycle & Defect Status
  2. JIRA Management tool

AUTOMATION TESTING

  1. Introduction to Selenium
  • Concept of browser driver classes and Webdriver Interface
  • How to run tests in Google chrome, Firefox, MS Edge
  1. Basic JAVA concepts
  2. Different Locators to identify objects
  • By ID
  • By Class name
  • By Linked Text
  • By using Text attribute
  • By CSS
  • By Xpath
  • Parent to child traversing using Xpath
  • Child to parent traversing using Xpath
  1. Techniques to automate WebElements
  • Handling static dropdown with Select webdriver API
  • Handling dynamic dropdown
  • Handling Checkboxes
  • Handling calendar UI
  • Validating UI Elements are Disabled/ Enabled
  • Handling Java alerts
  • Handling Ajax/Mouse Interactions
  • Handling multiple windows
  • Handling Frames
  • Handling WebTables using JavaScriptExecutor
  • Handling HTTPS certifications
  1. Synchronization techniques in Selenium
  • Implicit wait
  • Explicit wait
  • Fluent wait
  1. Miscellaneous Topics
  • Chrome options to set proxies, plugins & paths
  • Maximizing window & Deleting cookies
  • Take screenshots
  • Automate broken links
  • Relative locators
  • Invoking Multiple windows/tabs
  • Taking web element partial screenshot
  • Capturing height and width
  1. Selenium Java Streams
  • What is Java Streams
  • Perform web table sorting
  • Building custom selenium methods using Streams mapper
  • Automating Pagination scenarios
  • Filter web tables
  1. Excel data driven testing
  2. TestNG Framework
  • What is TestNG
  • Importance of xml file in testing configuration
  • Prioritizing testcases
  • Include and exclude mechanism
  • Excluding testcases at package level with regex
  • TestNG Annotations
  • Usage of groups functionality
  • DataProvider Annotation
  • Listeners Interface
  • Running tests in parallel and generating reports
  1. Design pattern – Page object and factory implementation
  2. Cross browser testing with selenium grid
  3. Database connection to selenium testcases (mySQL)
  • Creating database in mySQL server
  • Creating tables
  • Inserting records
  • Integration of database with JDBC API
  1. Java OOPS basics for selenium
  • Loop concepts
  • What is Interface and how is it different from Abstract classes
  • Usage of Inheritance
  • Function overloading
  • Multi-dimensional arrays
  1. Core JAVA concepts
  • Date class concepts & working with calendar objects
  • Constructor and its types
  • Super, Final keywords
  • Importance of access modifiers
  • Different kinds of exceptions and how to handle them
  • Importance of finally block
  • Java collections – ArrayList, Set Interface, Map Interface
  • Difference between Hashmap, Hashtable
  1. Maven- Build management tool
  • Importance, configuring Maven
  • Creating Maven project
  • Understanding POM.xml file and its dependencies
  • Importance of surefire plugin in executing tests
  • Integration of TestNG with Maven
  • Switching the tests with Maven profiling

Different levels of software testing?

Software level testing can be majorly classified into 4 levels: 

1. Unit Testing: A level of the software testing process where individual units/components of a software/system are tested. The purpose is to validate that each unit of the software performs as designed. 

2. Integration Testing: A level of the software testing process where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. 

3. System Testing: A level of the software testing process where a complete, integrated system/software is tested. The purpose of this test is to evaluate the system’s compliance with the specified requirements. 

4. Acceptance Testing: A level of the software testing process where a system is tested for acceptability. The purpose of this test is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery. 

Applications of Software Testing

  • Cost Effective Development – Early testing saves both time and cost in many aspects, however reducing the cost without testing may result in improper design of a software application rendering the product useless.

  • Product Improvement – During the SDLC phases, testing is never a time-consuming process. However diagnosing and fixing the errors identified during proper testing is a time-consuming but productive activity.

  • Test Automation – Test Automation reduces the testing time, but it is not possible to start test automation at any time during software development. Test automaton should be started when the software has been manually tested and is stable to some extent. Moreover, test automation can never be used if requirements keep changing.

  • Quality Check – Software testing helps in determining following set of properties of any software such as

    • Functionality

    • Reliability

    • Usability

    • Efficiency

    • Maintainability

    • Portability