Software Testing
Posted by Superadmin on December 25 2021 10:53:09

Software Testing Tutorial

Thomas Hamilton ByThomas Hamilton UpdatedNovember 20, 2021

Training Summary


In this course, you will learn basic skills and Software Testing concepts. Lessons are taught using REAL-LIFE Examples for improved learning. Refer the tutorials sequentially one after the other.

What should I know?


This online video tutorial is specially designed for beginners with little or no manual testing experience. But before you begin, refer this comprehensive guide on choosing QA as your career

 

 

Software Testing Syllabus


 

 

Testing Fundamentals

👉 Tutorial What is Software Testing? Definition, Basics & Types
👉 Tutorial Software Testing as a Career Path (Skills, Salary, Growth)
👉 Tutorial 7 Software Testing Principles: Learn with Examples
👉 Tutorial V-Model in Software Testing
👉 Tutorial STLC – Software Testing Life Cycle Phases & Entry, Exit Criteria

Types of Testing

👉 Tutorial Manual Testing Tutorial for Beginners: Concepts, Types, Tool
👉 Tutorial AUTOMATION TESTING Tutorial: What is, Process, Benefits & Tools
👉 Tutorial Automation Testing Vs. Manual Testing: What’s the Difference?
👉 Tutorial Unit Testing Tutorial: What is, Types, Tools, EXAMPLE
👉 Tutorial Integration Testing: What is, Types, Top Down & Bottom Up Example
👉 Tutorial What is System Testing? Types & Definition with Example
👉 Tutorial Sanity Testing Vs Smoke Testing: Introduction & Differences
👉 Tutorial What is Regression Testing? Definition, Test Cases (Example)
👉 Tutorial What is Non Functional Testing? Types with Example

TestCase Development

👉 Tutorial Test Documentation in Software Testing
👉 Tutorial What is Test Scenario? Template with Examples
👉 Tutorial How to Write Test Cases: Sample Template with Examples
👉 Tutorial What is Test Analysis (Test Basis) in Software Testing?
👉 Tutorial What is Requirements Traceability Matrix (RTM)? Example Template
👉 Tutorial Test Data Generation: What is, How to, Example, Tools
👉 Tutorial Download Sample Test Case Template: Example Excel, Word Formats

Testing Techniques

👉 Tutorial Software Testing Techniques with Test Case Design Examples
👉 Tutorial Boundary Value Analysis & Equivalence Partitioning with Examples
👉 Tutorial Decision Table Testing: Learn with Example
👉 Tutorial What is State Transition Testing? Diagram, Technique, Example
👉 Tutorial What is Use Case Testing? Technique, Examples

Test Management & Control

👉 Tutorial Software Test Estimation Techniques: Step By Step Guide
👉 Tutorial How to Create a Test Plan (with Example)
👉 Tutorial Test Plan Template: Sample Document with Web Application Example

Defects

👉 Tutorial Test Environment for Software Testing
👉 Tutorial Defect Management Process in Software Testing (Bug Report Template)
👉 Tutorial Defect/Bug Life Cycle in Software Testing
👉 Tutorial Top 50 Software Testing Tools

Agile

👉 Tutorial Agile Methodology & Model: Guide for Software Development & Testing
👉 Tutorial What is Agile Testing? Process, Strategy, Test Plan, Life Cycle Example
👉 Tutorial Scrum Testing Methodology Tutorial: What is, Process, Artifacts, Sprint
👉 Tutorial Automation Testing Framework for Agile/Scrum Methodology
👉 Tutorial SAFe Methodology Tutorial: What is Scaled Agile Framework

Testing Different Domains

👉 Tutorial Web Application Testing: 8 Step Guide to Website Testing
👉 Tutorial Web Application Testing Checklist: Example Test Cases for Website
👉 Tutorial Banking Domain Application Testing: Sample Test Cases
👉 Tutorial eCommerce Testing: How to Test an E-Commerce Website
👉 Tutorial Payment Gateway Testing Tutorial with Example Test Cases
👉 Tutorial Mainframe Testing – Complete Tutorial
👉 Tutorial Testing Retail Point Of Sale(POS) Systems: Example Test Cases
👉 Tutorial HealthCare Domain Testing with Sample Test Cases
👉 Tutorial Testing Insurance Domain Applications with Sample Test Cases
👉 Tutorial Testing Telecom Domain with Sample OSS/BSS Test cases
👉 Tutorial Business Intelligence (BI) Testing: Sample Test Cases

WhiteBox Testing

👉 Tutorial What is WHITE Box Testing? Techniques, Example, Types & Tools
👉 Tutorial What is Static Testing? What is a Testing Review?
👉 Tutorial Mccabe’s Cyclomatic Complexity: Calculate with Flow Graph (Example)
👉 Tutorial Code Coverage Tutorial: Branch, Statement, Decision, FSM
👉 Tutorial Path Testing & Basis Path Testing with EXAMPLES

Performance Testing

👉 Tutorial Performance Testing Tutorial: What is, Types, Metrics & Example
👉 Tutorial Load Testing Tutorial: What is? How to? (with Examples)
👉 Tutorial What is STRESS Testing in Software Testing? Tools, Types, Examples
👉 Tutorial What is Volume Testing? Learn with Examples
👉 Tutorial What is Scalability Testing? Learn with Example
👉 Tutorial What is Soak Testing? Definition, Meaning, Examples
👉 Tutorial Stability Testing in Software Testing
👉 Tutorial What is Spike Testing? Learn With Example
👉 Tutorial Load Testing vs Stress Testing vs Performance Testing: Difference Discussed
👉 Tutorial What is Response Time Testing?
👉 Tutorial What is Benchmark Testing? Test Plan, Tools, Example
👉 Tutorial What is Endurance Testing in Software Testing? (with Example)
👉 Tutorial Reliability Testing Tutorial: What is, Methods, Tools, Example
👉 Tutorial 13 BEST Performance Testing Tools | Load Testing Tool

Advance Testing Topics

👉 Tutorial Software Testing Metrics: What is, Types & Example
👉 Tutorial How to create Test Strategy Document (Sample Template)
👉 Tutorial What is Testing as a Service? TaaS Model Explained
👉 Tutorial What is Test Maturity Model (TMM) in Software Testing?

FAQ

👉 Tutorial Severity & Priority in Testing: Differences & Example
👉 Tutorial What is a Test Script? How to write with Example
👉 Tutorial Test Strategy vs Test Plan: What’s the Difference?
👉 Tutorial Static Testing vs Dynamic Testing: What’s the Difference?
👉 Tutorial Difference Between Retesting and Regression Testing
👉 Tutorial Quality Assurance Vs Quality Control: What’s the Difference?
👉 Tutorial Difference Between Verification and Validation with Example
👉 Tutorial Positive Testing and Negative Testing with Examples
👉 Tutorial What is TEST HARNESS? Tools & Examples
👉 Tutorial What is Defect Density? Formula to calculate with Example
👉 Tutorial Difference Between Globalization Testing and Localization Testing
👉 Tutorial Test Condition vs Test Scenario: What’s the Difference?
👉 Tutorial Unit Test vs Integration Test: What’s the Difference?
👉 Tutorial Functional Testing Vs Non-Functional Testing: What’s the Difference?
👉 Tutorial Black Box Testing Vs. White Box Testing: Key Differences
👉 Tutorial Frontend Testing Vs. Backend Testing: What’s the Difference?
👉 Tutorial SDLC vs STLC: What’s the Difference?
👉 Tutorial What is SDET? Full Form, Meaning, Role and Responsibilities
👉 Tutorial Do Testers have to Write Code?
👉 Tutorial Test Case vs Test Scenario: What’s the Difference?

Testing Types – Mega List

👉 Tutorial Types of Software Testing: 100 Examples of Different Testing Types
👉 Tutorial API Testing Tutorial: Learn in 10 minutes!
👉 Tutorial What is BLACK Box Testing? Techniques, Example & Types
👉 Tutorial Alpha Testing Vs Beta Testing: What’s the Difference?
👉 Tutorial What is Functional Testing? Types & Examples (Complete Tutorial)
👉 Tutorial What is User Acceptance Testing (UAT)? with Examples
👉 Tutorial REST API Testing Tutorial: Sample Manual Test Case
👉 Tutorial REST Client Testing using Restito Tool
👉 Tutorial REST Assured Tutorial: How to test API with Example
👉 Tutorial What is Security Testing? Types with Example
👉 Tutorial GUI Testing Tutorial: User Interface (UI) TestCases with Examples
👉 Tutorial Software Testing Methodologies: Learn QA Models
👉 Tutorial END-To-END Testing Tutorial: What is E2E Testing with Example
👉 Tutorial What is Exploratory Testing? Techniques with Examples
👉 Tutorial Mutation Testing in Software Testing: Mutant Score & Analysis Example
👉 Tutorial What is Adhoc Testing? Types with Example
👉 Tutorial Keyword Driven Testing Framework with Example
👉 Tutorial Risk Based Testing: Approach, Matrix, Process & Examples
👉 Tutorial Backend Testing Tutorial: What is, Tools & Examples
👉 Tutorial What is Smoke Testing? How to do with EXAMPLES
👉 Tutorial Accessibility Testing Tutorial: What is, Tools & Examples
👉 Tutorial What is Quality Assurance(QA)? Process, Methods, Examples
👉 Tutorial Quality Management Plan Template: Download with Sample Example
👉 Tutorial What is SOA Testing? Tutorial with Example
👉 Tutorial Penetration Testing Tutorial: What is PenTest?
👉 Tutorial What is Compatibility Testing? Forward & Backward Testing (Example)
👉 Tutorial What is System Integration Testing (SIT) with Example
👉 Tutorial Test Coverage in Software Testing
👉 Tutorial What is Usability Testing? UX(User Experience) Testing Example
👉 Tutorial Protocol Testing Tutorial: L2 & L3
👉 Tutorial What is Cloud Testing? SaaS Testing Tutorial
👉 Tutorial Cookie Testing: Example Test Cases for Website
👉 Tutorial What is Grey Box Testing? Techniques, Example
👉 Tutorial Model Based Testing Tutorial: What is, Tools & Example
👉 Tutorial What is Pilot Testing? Definition, Meaning, Examples
👉 Tutorial What is Orthogonal Array Testing (OATS)? Tools, Techniques & Example
👉 Tutorial What is Alpha Testing? Process, Example
👉 Tutorial Fuzz Testing(Fuzzing) Tutorial: What is, Types, Tools & Example
👉 Tutorial What is Localization Testing? Example Test Cases & Checklist
👉 Tutorial What is Interface Testing? Types & Example
👉 Tutorial What is Vulnerability Assessment? Testing Process, VAPT Scan Tool
👉 Tutorial What is Configuration Testing? Example Test Cases
👉 Tutorial Application Testing Tutorial: What is, How to, Tools
👉 Tutorial What is Negative Testing? Test cases With Example
👉 Tutorial What is Interoperability Testing in Software Testing? (with Examples)
👉 Tutorial Conformance Testing (Compliance Testing) – Complete Guide
👉 Tutorial What is Loop Testing? Methodology, Example
👉 Tutorial What is Component Testing? Techniques, Example Test Cases
👉 Tutorial What is Dynamic Testing? Types, Techniques & Example
👉 Tutorial What is Parallel Testing? Definition, Approach, Example
👉 Tutorial What is Operational Acceptance Testing(OAT)? Example Test Cases
👉 Tutorial What is Module Testing? Definition, Examples
👉 Tutorial What is Workflow Testing in Software Testing? with Examples
👉 Tutorial Storage Testing Tutorial: What is, Type, Concepts
👉 Tutorial What is Recovery Testing? with Example
👉 Tutorial What is Concurrency Testing in Software Testing?
👉 Tutorial What is Thread Testing in Software Testing?
👉 Tutorial What is Destructive Testing? Techniques, Methods, Example
👉 Tutorial What is Continuous Testing in DevOps? Definition, Benefits, Tools
👉 Tutorial Levels of Testing in Software Testing
👉 Tutorial IoT Testing Tutorial: What is, Process, Challenges & Tools
👉 Tutorial What is Test Driven Development (TDD)? Tutorial with Example
👉 Tutorial What is Data Driven Testing? Learn to create Framework
👉 Tutorial What is Monkey & Gorilla Testing? Examples, Difference
👉 Tutorial What is Front End Testing? Tools & Frameworks
👉 Tutorial What is Embedded Testing in Software Testing?
👉 Tutorial What is Domain Testing in Software Testing? (with Example)
👉 Tutorial Salesforce Testing Tutorial: What, Process, Tools, Best Practices
👉 Tutorial Design Verification & Validation Process
👉 Tutorial Non Destructive Testing (NDT)

Tools

👉 Tutorial 10 Best Cross Browser Compatibility Testing Tools
👉 Tutorial 20 Best Bug/Defect Tracking Tools
👉 Tutorial 20 Best Web Application Testing Tools
👉 Tutorial 20 BEST Automation Testing Tools
👉 Tutorial 15 BEST Test Data Generation Tools
👉 Tutorial 13 Best Crowd Testing (Crowdsource) Companies
👉 Tutorial 10 BEST Exploratory Testing Tools
👉 Tutorial 15+ BEST Open Source Testing Tools
👉 Tutorial 20 BEST Software Testing Services
👉 Tutorial 20+ TOP Performance Testing Service Companies

Check!

👉 Tutorial Top 150 Software Testing Interview Questions & Answers
👉 Tutorial Top 15 Automation Testing Interview Questions & Answers
👉 Tutorial Top 25 Database Testing Interview Questions & Answers
👉 Tutorial Top 40 QA (Quality Assurance) Interview Questions & Answers
👉 Tutorial QA Software Tester Resume Example: How to Write Job Seeking Resume
👉 Tutorial Software Testing Tutorial for Beginners PDF
👉 Tutorial 6 Testing eBook Bundle
👉 Tutorial Testing Quiz

Certification

👉 Tutorial ISTQB Certification: Complete Exam Study Material with Mock Test
👉 Tutorial CSTE Certification Guide with Study Material
👉 Tutorial Certified Software Quality Analyst(CSQA) Certification Guide
👉 Tutorial

ISTQB CTAL (Advanced Level) Exam with Study Material

FAQ

✅ Why learn software testing?

Here are the reasons for learning software testing:

💥 What are the Benefits of Software Testing?

Here are the benefits of software testing:

❓ Who can learn Software Testing?

Software testing can be learned by the people who want to start their career in the IT industry but not interested in coding. It can be learned by the people who want to learn various testing tools and enjoy finding bugs.

✅ Why choose software testing as a career?

Here are the reasons to choose software testing as a career:

🔒 How do I get real-time exposure to Testing?

You can get real-time exposure to Testing by analyzing the live projects and finding bugs and errors. You can join our Live Testing Project to get your hands dirty in QA.

What is Software Testing? Definition, Basics & Types in Software Engineering

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

Software Testing

Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that software product is Defect free. It involves execution of software/system components using manual or automated tools to evaluate one or more properties of interest. The purpose of software testing is to identify errors, gaps or missing requirements in contrast to actual requirements.

Some prefer saying Software testing definition as a White Box and Black Box Testing. In simple terms, Software Testing means the Verification of Application Under Test (AUT). This Software Testing course introduces testing software to the audience and justifies the importance of software testing.

In this Software Testing tutorial, you will learn basics of software testing like:

Why Software Testing is Important?

Software Testing is Important because if there are any bugs or errors in the software, it can be identified early and can be solved before delivery of the software product. Properly tested software product ensures reliability, security and high performance which further results in time saving, cost effectiveness and customer satisfaction.

 


What is the need of Testing?

 

Testing is important because software bugs could be expensive or even dangerous. Software bugs can potentially cause monetary and human loss, and history is full of such examples.

 

Click here if the video is not accessible

What are the benefits of Software Testing?

Here are the benefits of using software testing:

  • Cost-Effective: It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money for the long term. In case if the bugs caught in the earlier stage of software testing, it costs less to fix.
  • Security: It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in removing risks and problems earlier.
  • Product quality: It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers.
  • Customer Satisfaction: The main aim of any product is to give satisfaction to their customers. UI/UX Testing ensures the best user experience.

Testing in Software Engineering

As per ANSI/IEEE 1059, Testing in Software Engineering is a process of evaluating a software product to find whether the current software product meets the required conditions or not. The testing process involves evaluating the features of the software product for requirements in terms of any missing requirements, bugs or errors, security, reliability and performance.

Types of Software Testing

Here are the software testing types:

Typically Testing is classified into three categories.

  • Functional Testing
  • Non-Functional Testing or Performance Testing
  • Maintenance (Regression and Maintenance)

 

 

Types of Software Testing in Software Engineering

 

Types of Software Testing in Software Engineering

 

 

Testing CategoryTypes of Testing
Functional Testing
Non-Functional Testing
  • Performance
  • Endurance
  • Load
  • Volume
  • Scalability
  • Usability
  • So on
Maintenance
  • Regression
  • Maintenance

This is not the complete list as there are more than 150 types of testing types and still adding. Also, note that not all testing types are applicable to all projects but depend on the nature & scope of the project.

Testing Strategies in Software Engineering

Here are important strategies in software engineering:

Unit Testing: This software testing basic approach is followed by the programmer to test the unit of the program. It helps developers to know whether the individual unit of the code is working properly or not.

Integration testing: It focuses on the construction and design of the software. You need to see that the integrated units are working without errors or not.

System testing: In this method, your software is compiled as a whole and then tested as a whole. This testing strategy checks the functionality, security, portability, amongst others.

Program Testing

Program Testing in software testing is a method of executing an actual software program with the aim of testing program behavior and finding errors. The software program is executed with test case data to analyse the program behavior or response to the test data. A good program testing is one which has high chances of finding bugs.

Summary of Software Testing Basics:

Software Testing as a Career Path: Tester Skills, Salary & Growth

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

This guide will take you through the In’s and outs of software testing. If you plan to make a career in software testing, this is a MUST READ!

What is Software Testing?

Software Testing is a process of verifying a computer system/program to decide whether it meets the specified requirements and produces the desired results. As a result, you identify bugs in software product/project.

Software Testing is indispensable to provide a quality product without any bug or issue.

In this tutorial, you will learn-

Skills required to become a Software Tester

We will discuss the Technical and Non-Technical required to become a Software Tester

Non-Technical Skills

Following skills are essential to become a good Software quality tester. Compare your skill set against the following checklist to determine whether Software Testing is a reality for you-

Technical Skills

This list is long, so please bear with us

There is also a lot of scope for performance testing tools because applications need to be tested for their performance which is a part of non-functional testing.

That’s it to technical knowledge. Please note you do not need ALL the technical skills listed above. The technical skill sets required vary with the Job Role and company processes.

Academic Background

Academic background of a software tester should be in Computer Science.

A BTech/ B.E., MCA, BCA (Bachelor of Computer Applications), BSc- Computers, will land you a job quickly.

If you do not hold any of these degrees, then you must complete a software testing certification like ISTQB and CSTE which help you learn Software Development/ Test Life Cycle and other testing methodologies.

Remuneration

Compensation of a software tester varies from company to company. Average salary range of a software tester in the US is $45,993 – $74,935. Average Software testing career package in India is Rs 247,315 – Rs 449,111.

Also, a software tester is also given health insurance, bonuses, gratuity and other perks.

What Does a Software Tester do?

On any typical work day, you will be busy understanding requirement documents, creating test cases, executing test cases, reporting and re-testing bugs, attending review meetings and other team building activities.

Software Tester Career Path

Your Software Testing career growth as a software tester (QA Analyst) in typical CMMI level 5 company will look like following but will vary from company to company

  1. QA Analyst (Fresher)
  2. Sr. QA Analyst (2-3 years’ experience)
  3. QA Team Coordinator (5-6 years’ experience)
  4. Test Manager (8-11 years’ experience)
  5. Senior Test Manager (14+ experience)

Alternate Career Tracks as a Software Tester

Once you have got your hand dirty in manual testing, you can pursue following specializations

Common Myths

Software Testing as a Career pays Less Developers are more respected as compared to Testers

Contrary to popular belief, Software Testers (better known as QA professionals) are paid and treated at par with Software Developers in all “aspiring” companies. A career in Software Testing should never be considered as “second rated.”

Software Testing is Boring

Software Testing could actually “test” your nerves since you need to make sense of Business Requirements and draft test cases based on your understanding. Software testing is not boring. What is boring is doing the same set of tasks repeatedly. The key is to try new things. For that matter, have you ever spoken to a software developer with more than 3 years’ experience? He will tell you how boring his job has become off-lately.

How to Become Software Tester

For a complete newbie, here is our suggested approach to learning Software Testing

 

 

 

 

 

Process to become a Software Tester

 

 

Process to become a Software Tester

 

 

 

 

 

You start with learning Basic principles of Software Testing. Once done you apply for freelancing jobs. This will help you gain practical knowledge and will fortify the testing concepts you have learned.

Next, you proceed to Selenium – Automation tool, then JMeter – Performance Testing tool and finally TestLink – Test Management Tool. All the while you are learning, we suggest you apply for freelancing jobs (apart from other benefits you will make some moolah too!).

Once you are through with all the tools, you may consider taking a certification. We recommend ISTQB. However, this is optional.

Certification Exams:

ISTQB Foundation level is the basic certification in Testing field.

It is not mandatory, but it will help increase your chances of getting the job. Most of the companies have this criterion.

A software tester with ISTQB cleared will be given more priority as compared to others.

After this, when you apply for permanent jobs in big corporations you will have many Software tester skills to offer as well some practical freelancing experience which may be of value and will increase your chances of being selected.

You can also pursue certification in a Testing tool of your choice.

Learning Guides: –

Hope to see you at a QA conference some Day!

Here is a tool to help you make a career choice

 

 

 

7 Principles of Software Testing: Learn with Examples

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

 


This tutorial introduces the seven basic Software Testing Principles that every Software tester and QA professional should know.

 

7 Principles of Software Testing

Let’s learn the testing principles with the following video example-

 

Click here if the video is not accessible

Background

It is important that you achieve optimum test results while conducting software testing without deviating from the goal. But how you determine that you are following the right strategy for testing? For that, you need to stick to some basic testing principles. Here are the common seven testing principles that are widely practiced in the software industry.

To understand this, consider a scenario where you are moving a file from folder A to Folder B.

Think of all the possible ways you can test this.

Apart from the usual scenarios, you can also test the following conditions

If you were to test the entire possible combinations project EXECUTION TIME & COSTS would rise exponentially. We need certain principles and strategies to optimize the testing effort

 

Here are the 7 Principles:

1) Exhaustive testing is not possible

Yes! Exhaustive testing is not possible. Instead, we need the optimal amount of testing based on the risk assessment of the application.

And the million dollar question is, how do you determine this risk?

To answer this let’s do an exercise

In your opinion, Which operation is most likely to cause your Operating system to fail?

I am sure most of you would have guessed, Opening 10 different application all at the same time.

So if you were testing this Operating system, you would realize that defects are likely to be found in multi-tasking activity and need to be tested thoroughly which brings us to our next principle Defect Clustering

2) Defect Clustering

Defect Clustering which states that a small number of modules contain most of the defects detected. This is the application of the Pareto Principle to software testing: approximately 80% of the problems are found in 20% of the modules.

By experience, you can identify such risky modules. But this approach has its own problems

If the same tests are repeated over and over again, eventually the same test cases will no longer find new bugs.

3) Pesticide Paradox

Repetitive use of the same pesticide mix to eradicate insects during farming will over time lead to the insects developing resistance to the pesticide Thereby ineffective of pesticides on insects. The same applies to software testing. If the same set of repetitive tests are conducted, the method will be useless for discovering new defects.

To overcome this, the test cases need to be regularly reviewed & revised, adding new & different test cases to help find more defects.

Testers cannot simply depend on existing test techniques. He must look out continually to improve the existing methods to make testing more effective. But even after all this sweat & hard work in testing, you can never claim your product is bug-free. To drive home this point, let’s see this video of the public launch of Windows 98

You think a company like MICROSOFT would not have tested their OS thoroughly & would risk their reputation just to see their OS crashing during its public launch!

 

4) Testing shows a presence of defects

Hence, testing principle states that – Testing talks about the presence of defects and don’t talk about the absence of defects. i.e. Software Testing reduces the probability of undiscovered defects remaining in the software but even if no defects are found, it is not a proof of correctness.

But what if, you work extra hard, taking all precautions & make your software product 99% bug-free. And the software does not meet the needs & requirements of the clients.

This leads us to our next principle, which states that- Absence of Error

5) Absence of Error – fallacy

It is possible that software which is 99% bug-free is still unusable. This can be the case if the system is tested thoroughly for the wrong requirement. Software testing is not mere finding defects, but also to check that software addresses the business needs. The absence of Error is a Fallacy i.e. Finding and fixing defects does not help if the system build is unusable and does not fulfill the user’s needs & requirements.

To solve this problem, the next principle of testing states that Early Testing

6) Early Testing

Early Testing – Testing should start as early as possible in the Software Development Life Cycle. So that any defects in the requirements or design phase are captured in early stages. It is much cheaper to fix a Defect in the early stages of testing. But how early one should start testing? It is recommended that you start finding the bug the moment the requirements are defined. More on this principle in a later training tutorial.

 

7) Testing is context dependent

Testing is context dependent which basically means that the way you test an e-commerce site will be different from the way you test a commercial off the shelf application. All the developed software’s are not identical. You might use a different approach, methodologies, techniques, and types of testing depending upon the application type. For instance testing, any POS system at a retail store will be different than testing an ATM machine.

Myth: “Principles are just for reference. I will not use them in practice .”

This is so very untrue. Test Principles will help you create an effective Test Strategy and draft error catching test cases.

But learning testing principles is just like learning to drive for the first time.

Initially, while you learn to drive, you pay attention to each and everything like gear shifts, speed, clutch handling, etc. But with experience, you just focus on driving the rest comes naturally. Such that you even hold conversations with other passengers in the car.

Same is true for testing principles. Experienced testers have internalized these principles to a level that they apply them even without thinking. Hence the myth that the principles are not used in practice is simply not true.

V-Model in Software Testing

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

V Model

V Model is a highly disciplined SDLC model in which there is a testing phase parallel to each development phase. The V model is an extension of the waterfall model in which testing is done on each stage parallel with development in a sequential way. It is known as the Validation or Verification Model.

Key Software Engineering Terms:

SDLC: SDLC is Software Development Life Cycle. It is the sequence of activities carried out by Developers to design and develop high-quality software.

STLC: STLC is Software Testing Life Cycle. It consists of a series of activities carried out by Testers methodologically to test your software product.

Waterfall Model: Waterfall model is a sequential model divided into different phases of software development activity. Each stage is designed for performing the specific activity. Testing phase in waterfall model starts only after implementation of the system is done.

 



Click here if the video is not accessible

 

EXAMPLE To Understand the V Model

Suppose, you are assigned a task, to develop a custom software for a client. Now, irrespective of your technical background, try and make an educated guess about the sequence of steps you will follow, to achieve the task.

What is V Model? Learn with a Case Study using SDLC & STLC

The correct sequence would be.

 

Different phases of the Software Development CycleActivities performed in each stage
Requirement Gathering stage
  • Gather as much information as possible about the details & specifications of the desired software from the client. This is nothing but the Requirements gathering stage.
Design Stage
  • Plan the programming language like JavaPHP, .net; database like Oracle, MySQL, etc. Which would be suited for the project, also some high-level functions & architecture.
Build Stage
  • After the design stage, it is build stage, that is nothing but actually code the software
Test Stage
  • Next, you test the software to verify that it is built as per the specifications are given by the client.
Deployment stage
  • Deploy the application in the respective environment
Maintenance stage
  • Once your system is ready to use, you may require to change the code later on as per customer request

All these levels constitute the waterfall method of the software development lifecycle.

 

Problem with the Waterfall Model

As you may observe, that testing in the model starts only after implementation is done.

But if you are working in the large project, where the systems are complex, it’s easy to miss out the key details in the requirements phase itself. In such cases, an entirely wrong product will be delivered to the client and you might have to start afresh with the project OR if you manage to note the requirements correctly but make serious mistakes in design and architecture of your software you will have to redesign the entire software to correct the error.

Assessments of thousands of projects have shown that defects introduced during requirements & design make up close to half of the total number of defects.

Guide to SDLC , STLC & V-Model

 


Also, the costs of fixing a defect increase across the development lifecycle. The earlier in life cycle a defect is detected, the cheaper it is to fix it. As they say, “A stitch in time saves nine.”

 

Solution: The V Model

To address this concern, the V model of testing was developed where for every phase, in the Development life cycle there is a corresponding Testing phase

v model

Apart from the V model, there are iterative development models, where development is carried in phases, with each phase adding a functionality to the software. Each phase comprises its independent set of development and testing activities.

Good examples of Development lifecycles following iterative method are Rapid Application Development, Agile Development

Conclusion

There are numerous development life cycle models. Development model selected for a project depends on the aims and goals of that project.

 

STLC (Software Testing Life Cycle) Phases, Entry, Exit Criteria

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

What is Software Testing Life Cycle (STLC)?

Software Testing Life Cycle (STLC) is a sequence of specific activities conducted during the testing process to ensure software quality goals are met. STLC involves both verification and validation activities. Contrary to popular belief, Software Testing is not just a single/isolate activity, i.e. testing. It consists of a series of activities carried out methodologically to help certify your software product. STLC stands for Software Testing Life Cycle.

In this tutorial, you will learn-

STLC Phases

There are following six major phases in every Software Testing Life Cycle Model (STLC Model):

  1. Requirement Analysis
  2. Test Planning
  3. Test case development
  4. Test Environment setup
  5. Test Execution
  6. Test Cycle closure

 

 

STLC ModelSTLC Model Phases

 

 

Each of these stages has a definite Entry and Exit criteria, Activities & Deliverables associated with it.

What is Entry and Exit Criteria in STLC?

You have Entry and Exit Criteria for all levels in the Software Testing Life Cycle (STLC)

In an Ideal world, you will not enter the next stage until the exit criteria for the previous stage is met. But practically this is not always possible. So for this tutorial, we will focus on activities and deliverables for the different stages in STLC life cycle. Let’s look into them in detail.

 

Requirement Phase Testing

Requirement Phase Testing also known as Requirement Analysis in which test team studies the requirements from a testing point of view to identify testable requirements and the QA team may interact with various stakeholders to understand requirements in detail. Requirements could be either functional or non-functional. Automation feasibility for the testing project is also done in this stage.

Activities in Requirement Phase Testing

Deliverables of Requirement Phase Testing

Test Planning in STLC

Test Planning in STLC is a phase in which a Senior QA manager determines the test plan strategy along with efforts and cost estimates for the project. Moreover, the resources, test environment, test limitations and the testing schedule are also determined. The Test Plan gets prepared and finalized in the same phase.

Test Planning Activities

Deliverables of Test Planning

Test Case Development Phase

The Test Case Development Phase involves the creation, verification and rework of test cases & test scripts after the test plan is ready. Initially, the Test data is identified then created and reviewed and then reworked based on the preconditions. Then the QA team starts the development process of test cases for individual units.

Test Case Development Activities

Deliverables of Test Case Development

Test Environment Setup

Test Environment Setup decides the software and hardware conditions under which a work product is tested. It is one of the critical aspects of the testing process and can be done in parallel with the Test Case Development Phase. Test team may not be involved in this activity if the development team provides the test environment. The test team is required to do a readiness check (smoke testing) of the given environment.

Test Environment Setup Activities

Deliverables of Test Environment Setup

Test Execution Phase

Test Execution Phase is carried out by the testers in which testing of the software build is done based on test plans and test cases prepared. The process consists of test script execution, test script maintenance and bug reporting. If bugs are reported then it is reverted back to development team for correction and retesting will be performed.

Test Execution Activities

Deliverables of Test Execution

Test Cycle Closure

Test Cycle Closure phase is completion of test execution which involves several activities like test completion reporting, collection of test completion matrices and test results. Testing team members meet, discuss and analyze testing artifacts to identify strategies that have to be implemented in future, taking lessons from current test cycle. The idea is to remove process bottlenecks for future test cycles.

Test Cycle Closure Activities

Deliverables of Test Cycle Closure

STLC Phases along with Entry and Exit Criteria

STLC StageEntry CriteriaActivityExit CriteriaDeliverables
Requirement Analysis
  • Requirements Document available (both functional and non functional)
  • Acceptance criteria defined.
  • Application architectural document available.
  • Analyse business functionality to know the business modules and module specific functionalities.
  • Identify all transactions in the modules.
  • Identify all the user profiles.
  • Gather user interface/ authentication, geographic spread requirements.
  • Identify types of tests to be performed.
  • Gather details about testing priorities and focus.
  • Prepare Requirement Traceability Matrix (RTM).
  • Identify test environment details where testing is supposed to be carried out.
  • Automation feasibility analysis (if required).
  • Signed off RTM
  • Test automation feasibility report signed off by the client
  • RTM
  • Automation feasibility report (if applicable)
Test Planning
  • Requirements Documents
  • Requirement Traceability matrix.
  • Test automation feasibility document.
  • Analyze various testing approaches available
  • Finalize on the best-suited approach
  • Preparation of test plan/strategy document for various types of testing
  • Test tool selection
  • Test effort estimation
  • Resource planning and determining roles and responsibilities.
  • Approved test plan/strategy document.
  • Effort estimation document signed off.
  • Test plan/strategy document.
  • Effort estimation document.
Test case development
  • Requirements Documents
  • RTM and test plan
  • Automation analysis report
  • Create test cases, test design, automation scripts (where applicable)
  • Review and baseline test cases and scripts
  • Create test data
  • Reviewed and signed test Cases/scripts
  • Reviewed and signed test data
  • Test cases/scripts
  • Test data
Test Environment setup
  • System Design and architecture documents are available
  • Environment set-up plan is available
  • Understand the required architecture, environment set-up
  • Prepare hardware and software development requirement list
  • Finalize connectivity requirements
  • Prepare environment setup checklist
  • Setup test Environment and test data
  • Perform smoke test on the build
  • Accept/reject the build depending on smoke test result
  • Environment setup is working as per the plan and checklist
  • Test data setup is complete
  • Smoke test is successful
  • Environment ready with test data set up
  • Smoke Test Results.
Test Execution
  • Baselined RTM, Test Plan , Test case/scripts are available
  • Test environment is ready
  • Test data set up is done
  • Unit/Integration test report for the build to be tested is available
  • Execute tests as per plan
  • Document test results, and log defects for failed cases
  • Update test plans/test cases, if necessary
  • Map defects to test cases in RTM
  • Retest the defect fixes
  • Regression Testing of application
  • Track the defects to closure
  • All tests planned are executed
  • Defects logged and tracked to closure
  • Completed RTM with execution status
  • Test cases updated with results
  • Defect reports
Test Cycle closure
  • Testing has been completed
  • Test results are available
  • Defect logs are available
  • Evaluate cycle completion criteria based on – Time, Test coverage, Cost, Software Quality, Critical Business Objectives
  • Prepare test metrics based on the above parameters.
  • Document the learning out of the project
  • Prepare Test closure report
  • Qualitative and quantitative reporting of quality of the work product to the customer.
  • Test result analysis to find out the defect distribution by type and severity

 

 

Manual Testing Tutorial: What is, Concepts, Types & Tool

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

Manual Testing

Manual Testing is a type of software testing in which test
cases are executed manually by a tester without using any automated tools. The purpose of Manual Testing is to identify
the bugs, issues, and defects in the software application. Manual software testing is
the most primitive technique of all testing types and it helps to find critical bugs in
the software application.

Any new application must be manually tested before its testing can be automated. Manual Software Testing requires more effort but is necessary to check automation feasibility. Manual Testing concepts does not require knowledge of any testing tool. One of the Software Testing Fundamental is “100% Automation is not possible“. This makes Manual Testing imperative.

In this Manual Testing tutorial for beginners, we cover all manual testing concepts and topics in detail.

 

Click here if the video is not accessible

Goal of Manual Testing

Manual Testing

The key concept of manual testing is to ensure that the application is error free and it is working in conformance to the specified functional requirements.


Test Suites or cases, are designed during the testing phase and should have 100% test coverage.

 

It also makes sure that reported defects are fixed by developers and re-testing has been performed by testers on the fixed defects.

Basically, this testing checks the quality of the system and delivers bug-free product to the customer.

Types of Manual Testing:

 

 

Manual Testing ConceptsManual Testing Concepts

 

 

Below given diagram depicts Manual Testing Types. In fact, any type of software testing type can be executed both manually as well using an automation tool.

How to perform Manual Testing

  1. Read and understand the software project documentation/guides. Also, study the Application Under Test (AUT) if available.
  2. Draft Test cases that cover all the requirements mentioned in the documentation.
  3. Review and baseline the test cases with Team Lead, Client (as applicable)
  4. Execute the test cases on the AUT
  5. Report bugs.
  6. Once bugs are fixed, again execute the failing test cases to verify they pass.

Myths of Manual Testing

Following are few common myths and facts related to testing:

Myth: Anyone can do manual testing

Fact: Testing requires many skill sets

Myth: Testing ensures 100% Defect free product

Fact: Testing attempts to find as many defects as possible. Identifying all possible defects is impossible.

Myth: Automated testing is more powerful than manual testing

Fact: 100% test automation cannot be done. Manual Software Testing is also essential.

Myth: Testing is easy

Fact: Testing can be extremely challenging. Testing an application for possible use cases with minimum test cases requires high analytical skills. 

 

Manual Testing vs Automation Testing

Manual TestingAutomated Testing
Manual testing requires human intervention for test execution. Automation Testing is use of tools to execute test cases
Manual testing will require skilled labour, long time & will imply high costs. Automation Testing saves time, cost and manpower. Once recorded, it’s easier to run an automated test suite
Any type of application can be tested manually, certain testing types like ad-hoc and monkey testing are more suited for manual execution. Automated testing is recommended only for stable systems and is mostly used for Regression Testing
Manual testing can become repetitive and boring. The boring part of executing same test cases time and again is handled by automation software in Automation Testing.

Tools to Automate Manual Testing

Conclusion

Manual testing is an activity where the tester needs to be very patient, creative & open minded.

Manual testing is a vital part of user-friendly software development because humans are involved in testing software applications and end-users are also humans. They need to think and act with an End User perspective.

 

 

Automation Testing Tutorial: What is Automation Testing?

Thomas Hamilton ByThomas Hamilton UpdatedDecember 23, 2021

What is Automation Testing?

Automation Testing is a software testing technique that performs using special automated testing software tools to execute a test case suite. On the contrary, Manual Testing is performed by a human sitting in front of a computer carefully executing the test steps.

The automation testing software can also enter test data into the System Under Test, compare expected and actual results and generate detailed test reports. Software Test Automation demands considerable investments of money and resources.

Successive development cycles will require execution of same test suite repeatedly. Using a test automation tool, it’s possible to record this test suite and re-play it as required. Once the test suite is automated, no human intervention is required. This improved ROI of Test Automation. The goal of Automation is to reduce the number of test cases to be run manually and not to eliminate Manual Testing altogether.

 

Click here if the video is not accessible

In this automated software testing tutorial, you will learn Test Automation basics like-

Why Test Automation?

 

 

Why Automated Testing?Why Test Automation?

 

 

Test Automation is the best way to increase the effectiveness, test coverage, and execution speed in software testing. Automated software testing is important due to the following reasons:

Which Test Cases to Automate?

Test cases to be automated can be selected using the following criterion to increase the automation ROI

The following category of test cases are not suitable for automation:

Automated Testing Process:

Following steps are followed in an Automation Process

Step 1) Test Tool Selection

Step 2) Define scope of Automation

Step 3) Planning, Design and Development

Step 4) Test Execution

Step 5) Maintenance

 

 

Test Automation ProcessTest Automation Process

 

 

Test tool selection

Test Tool selection largely depends on the technology the Application Under Test is built on. For instance, QTP does not support Informatica. So QTP cannot be used for testing Informatica applications. It’s a good idea to conduct a Proof of Concept of Tool on AUT.

Define the scope of Automation

The scope of automation is the area of your Application Under Test which will be automated. Following points help determine scope:

Planning, Design, and Development

During this phase, you create an Automation strategy & plan, which contains the following details-

Test Execution

Automation Scripts are executed during this phase. The scripts need input test data before there are set to run. Once executed they provide detailed test reports.

Execution can be performed using the automation tool directly or through the Test Management tool which will invoke the automation tool.

Example: Quality center is the Test Management tool which in turn it will invoke QTP for execution of automation scripts. Scripts can be executed in a single machine or a group of machines. The execution can be done during the night, to save time.

Test Automation Maintenance Approach

Test Automation Maintenance Approach is an automation testing phase carried out to test whether the new functionalities added to the software are working fine or not. Maintenance in automation testing is executed when new automation scripts are added and need to be reviewed and maintained in order to improve the effectiveness of automation scripts with each successive release cycle.

Framework for Automation

A framework is set of automation guidelines which help in

There are four types of frameworks used in automation software testing:

  1. Data Driven Automation Framework
  2. Keyword Driven Automation Framework
  3. Modular Automation Framework
  4. Hybrid Automation Framework

Automation Tool Best Practices

To get maximum ROI of automation, observe the following

The above guidelines if observed can greatly help in making your automation successful.

Benefits of Automation Testing

 

 

Automation Testing BenefitsBenefits of Automation Testing

 

 

Following are the Test Automation benefits:

Types of Automated Testing

How to Choose an Automation Tool?

Selecting the right tool can be a tricky task. Following criterion will help you select the best tool for your requirement-

Tool selection is one of biggest challenges to be tackled before going for automation. First, Identify the requirements, explore various tools and its capabilities, set the expectation from the tool and go for a Proof Of Concept.

Automation Testing Tools

There are tons of Functional and Regression Testing Tools available in the market. Here are best test automation tools certified by our experts

1) Ranorex Studio

Over 14,000 users worldwide accelerate testing with Ranorex Studio, an all-in-one tool for test automation. Ranorex has easy click-and-go codeless tools for beginners, plus a full IDE and open APIs for automation experts.

Ranorex Studio

Features:


2) Kobiton

Kobiton’s mobile device testing platform offers script-based and scriptless test automation capabilities. Users can create manual tests that can be re-run automatically across a variety of real devices. Kobiton fully supports test automation frameworks such as Appium, Espresso and XCTest, while offering its own scriptless test automation through their NOVA AI.

Kobiton

Features:


3) ZAPTEST

ZAPTEST is a Software Automation solution for any organization that uses software for operations or development, who is looking to automate it’s back-office operations or software testing processes and to develop a seamless and revolving automation framework.

ZAPTEST

Features:


4) LambdaTest

LambdaTest

LambdaTest is one of the most preferred tool to perform automated cross browser testing. They offer an ultra-fast, scalable and secure selenium grid, which users can utilize and run their tests on 2000+ browsers and OS. It supports all latest and legacy browsers.

Features


5) Parasoft Continuous Quality Suite

Parasoft’s suite of automated software testing tools integrates quality into the software delivery process for early prevention, detection, and remediation of defects. Parasoft continuous quality suite covers static code analysis, unit testing and code coverage, API testing and service virtualization, and UI testing, enabling delivery at speed and compliance with industry and security standards.

 

Parasoft Continuous Quality Suite

 

Features:


6) Avo Assure

Avo Assure is a no-code, intelligent, and heterogeneous automation testing solution. With Avo Assure, you can execute test cases without writing a single line of code and achieve more than 90% test automation coverage.

Avo Assure

Features:


7) Keysight Eggplant

Keysight Eggplant allows you to test smarter with AI-powered end-to-end test automation that delivers DevOps and optimizes your user experience.

Keysight Eggplant

Features:


8) testRigor

testRigor helps you to directly express tests as executable specifications in plain English. Users of all technical abilities are able to build end-to-end tests of any complexity covering mobile, web, and API steps in one test. Test steps are expressed on the end-user level instead of relying on details of implementation like XPaths or CSS Selectors.

testRigor

Features:


9) Selenium

It is a software testing tool used for Regression Testing. It is an open source testing tool that provides playback and recording facility for Regression Testing. The Selenium IDE only supports Mozilla Firefox web browser.

Download Selenium


10) QTP (MicroFocus UFT)

QTP is widely used for functional and regression testing, it addresses every major software application and environment. To simplify test creation and maintenance, it uses the concept of keyword driven testing. It allows the tester to build test cases directly from the application.

Download QTP


11) Rational Functional Tester

It is an Object-Oriented automated Functional Testing tool that is capable of performing automated functional, regression, data-driven testing and GUI testing. The main features of this tool are

Download Rational Functional Tester


12) Watir

It is an open source testing software for regression testing. It enables you to write tests that are easy to read and maintain. Watir supports only internet explorer on windows while Watir webdriver supports Chrome, Firefox, IE, Opera, etc.

Download Watir


13) SilkTest

Silk Test is designed for doing functional and regression testing. For e-business application, silk test is the leading functional testing product. It is a product of Segue Software takeover by Borland in 2006. It is an object-oriented language just like C++. It uses the concept of an object, classes, and inheritance. Its main feature includes

Download SilkTest

Summary

Test Automation is a software testing technique that performs using special automated testing software tools to execute a test case suite.

Test Automation is the best way to increase the effectiveness, test coverage, and execution speed in software testing.

Test Tool selection largely depends on the technology the Application Under Test is built on.

Test Automation Maintenance Approach is an automation testing phase carried out to test whether the new functionalities added to the software are working fine or not.

The right selection of automation tool, testing process, and team, are important players for automation to be successful. Manual and automation methods go hand-in-hand for successful testing.

 

Automation Testing Vs. Manual Testing: What’s the Difference?

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

What is Manual Testing?

Manual testing is testing of the software where tests are executed manually by a QA Analyst. It is performed to discover bugs in software under development.

In Manual testing, the tester checks all the essential features of the given application or software. In this process, the software testers execute the test cases and generate the test reports without the help of any automation software testing tools.

It is a classical method of all testing types and helps find bugs in software systems. It is generally conducted by an experienced tester to accomplish the software testing process.

What is Automation Testing?

In Automated Software Testing, testers write code/test scripts to automate test execution. Testers use appropriate automation tools to develop the test scripts and validate the software. The goal is to complete test execution in a less amount of time.

Automated testing entirely relies on the pre-scripted test which runs automatically to compare actual result with the expected results. This helps the tester to determine whether or not an application performs as expected.

Automated testing allows you to execute repetitive task and regression test without the intervention of manual tester. Even though all processes are performed automatically, automation requires some manual effort to create initial testing scripts.

 

KEY DIFFERENCE

Difference Between Manual Testing and Automation Testing

ParameterAutomation TestingManual Testing
Definition Automation Testing uses automation tools to execute test cases. In manual testing, test cases are executed by a human tester and software.
Processing time Automated testing is significantly faster than a manual approach. Manual testing is time-consuming and takes up human resources.
Exploratory Testing Automation does not allow random testing Exploratory testing is possible in Manual Testing
Initial investment The initial investment in the automated testing is higher. Though the ROI is better in the long run. The initial investment in the Manual testing is comparatively lower. ROI is lower compared to Automation testing in the long run.
Reliability Automated testing is a reliable method, as it is performed by tools and scripts. There is no testing Fatigue. Manual testing is not as accurate because of the possibility of the human errors.
UI Change For even a trivial change in the UI of the AUT, Automated Test Scripts need to be modified to work as expected Small changes like change in id, class, etc. of a button wouldn’t thwart execution of a manual tester.
Investment Investment is required for testing tools as well as automation engineers Investment is needed for human resources.
Cost-effective Not cost effective for low volume regression Not cost effective for high volume regression.
Test Report Visibility With automation testing, all stakeholders can login into the automation system and check test execution results Manual Tests are usually recorded in an Excel or Word, and test results are not readily/ readily available.
Human observation Automated testing does not involve human consideration. So it can never give assurance of user-friendliness and positive customer experience. The manual testing method allows human observation, which may be useful to offer user-friendly system.
Performance Testing Performance Tests like Load Testing, Stress Testing, Spike Testing, etc. have to be tested by an automation tool compulsorily. Performance Testing is not feasible manually
Parallel Execution This testing can be executed on different operating platforms in parallel and reduce test execution time. Manual tests can be executed in parallel but would need to increase your human resource which is expensive
Batch testing You can Batch multiple Test Scripts for nightly execution. Manual tests cannot be batched.
Programming knowledge Programming knowledge is a must in automation testing. No need for programming in Manual Testing.
Set up Automation test requires less complex test execution set up. Manual testing needs have a more straightforward test execution setup
Engagement Done by tools. Its accurate and never gets bored! Repetitive Manual Test Execution can get boring and error-prone.
Ideal approach Automation testing is useful when frequently executing the same set of test cases Manual testing proves useful when the test case only needs to run once or twice.
Build Verification
Testing
Automation testing is useful for Build Verification
Testing (BVT).
Executing the Build Verification Testing (BVT) is very difficult and time-consuming in manual testing.
Deadlines Automated Tests have zero risks of missing out a pre-decided test. Manual Testing has a higher risk of missing out the pre-decided test deadline.
Framework Automation testing uses frameworks like Data Drive, Keyword, Hybrid to accelerate the automation process. Manual Testing does not use frameworks but may use guidelines, checklists, stringent processes to draft certain test cases.
Documentation Automated Tests acts as a document provides training value especially for automated unit test cases. A new developer can look into a unit test cases and understand the code base quickly. Manual Test cases provide no training value
Test Design Automated Unit Tests enforce/drive Test Driven Development Design. Manual Unit Tests do not drive design into the coding process
Devops Automated Tests help in Build Verification Testing and are an integral part of DevOps Cycle Manual Testing defeats the automated build principle of DevOps
When to Use? Automated Testing is suited for Regression Testing, Performance Testing, Load Testing or highly repeatable functional test cases. Manual Testing is suitable for Exploratory, Usability and Adhoc Testing. It should also be used where the AUT changes frequently.

Manual Testing Pros and Cons

Pros of Manual Testing:

Cons of Manual Testing:

Automated Testing Pros and Cons

Pros of automated testing:

Cons of Automated Testing:

 

Unit Testing Tutorial: What is, Types, Tools & Test EXAMPLE

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

What is Unit Testing?

UNIT TESTING is a type of software testing where individual units or components of a software are tested. The purpose is to validate that each unit of the software code performs as expected. Unit Testing is done during the development (coding phase) of an application by the developers. Unit Tests isolate a section of code and verify its correctness. A unit may be an individual function, method, procedure, module, or object.

In SDLC, STLC, V Model, Unit testing is first level of testing done before integration testing. Unit testing is a WhiteBox testing technique that is usually performed by the developer. Though, in a practical world due to time crunch or reluctance of developers to tests, QA engineers also do unit testing.

In this tutorial, you will learn-

Why Unit Testing?

Unit Testing is important because software developers sometimes try saving time doing minimal unit testing and this is myth because inappropriate unit testing leads to high cost Defect fixing during System TestingIntegration Testing and even Beta Testing after application is built. If proper unit testing is done in early development, then it saves time and money in the end.

 

Here, are the key reasons to perform unit testing in software engineering:

 

 

 

Unit TestingUnit Testing Levels

 

 

  1. Unit tests help to fix bugs early in the development cycle and save costs.
  2. It helps the developers to understand the testing code base and enables them to make changes quickly
  3. Good unit tests serve as project documentation
  4. Unit tests help with code re-use. Migrate both your code and your tests to your new project. Tweak the code until the tests run again.

 

How to do Unit Testing

In order to do Unit Testing, developers write a section of code to test a specific function in software application. Developers can also isolate this function to test more rigorously which reveals unnecessary dependencies between function being tested and other units so the dependencies can be eliminated. Developers generally use UnitTest framework to develop automated test cases for unit testing.

Unit Testing is of two types

Unit testing is commonly automated but may still be performed manually. Software Engineering does not favor one over the other but automation is preferred. A manual approach to unit testing may employ a step-by-step instructional document.

Under the automated approach-

 

Unit Testing Techniques

The Unit Testing Techniques are mainly categorized into three parts which are Black box testing that involves testing of user interface along with input and output, White box testing that involves testing the functional behaviour of the software application and Gray box testing that is used to execute test suites, test methods, test cases and performing risk analysis.

Code coverage techniques used in Unit Testing are listed below:

For more in refer https://www.guru99.com/code-coverage.html

Unit Test Example: Mock Objects

Unit testing relies on mock objects being created to test sections of code that are not yet part of a complete application. Mock objects fill in for the missing parts of the program.

For example, you might have a function that needs variables or objects that are not created yet. In unit testing, those will be accounted for in the form of mock objects created solely for the purpose of the unit testing done on that section of code.

Unit Testing Tools

There are several automated unit test software available to assist with unit testing. We will provide a few examples below:

  1. Junit: Junit is a free to use testing tool used for Java programming language.  It provides assertions to identify test method. This tool test data first and then inserted in the piece of code.
  2. NUnit:  NUnit is widely used unit-testing framework use for all .net languages.  It is an open source tool which allows writing scripts manually. It supports data-driven tests which can run in parallel.
  3. JMockit:  JMockit is open source Unit testing tool.  It is a code coverage tool with line and path metrics. It allows mocking API with recording and verification syntax. This tool offers Line coverage, Path Coverage, and Data Coverage.
  4. EMMA:  EMMA is an open-source toolkit for analyzing and reporting code written in Java language. Emma support coverage types like method, line, basic block. It is Java-based so it is without external library dependencies and can access the source code.
  5. PHPUnit: PHPUnit is a unit testing tool for PHP programmer. It takes small portions of code which is called units and test each of them separately.  The tool also allows developers to use pre-define assertion methods to assert that a system behave in a certain manner. 

Those are just a few of the available unit testing tools. There are lots more, especially for C languages and Java, but you are sure to find a unit testing tool for your programming needs regardless of the language you use.

 

Test Driven Development (TDD) & Unit Testing

Unit testing in TDD involves an extensive use of testing frameworks. A unit test framework is used in order to create automated unit tests. Unit testing frameworks are not unique to TDD, but they are essential to it. Below we look at some of what TDD brings to the world of unit testing:

Unit Testing Myth

Myth: It requires time, and I am always overscheduled
My code is rock solid! I do not need unit tests.

Myths by their very nature are false assumptions. These assumptions lead to a vicious cycle as follows –

UNIT Testing Myth

Truth is Unit testing increase the speed of development.

Programmers think that Integration Testing will catch all errors and do not execute the unit test. Once units are integrated, very simple errors which could have very easily found and fixed in unit tested take a very long time to be traced and fixed.

Unit Testing Advantage

Unit Testing Disadvantages

It’s recommended unit testing be used in conjunction with other testing activities.

Unit Testing Best Practices

UNIT Testing Tutorial - Learn in 10 Minutes

Summary

 

Integration Testing: What is, Types, Top Down & Bottom Up Example

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

What is Integration Testing?

INTEGRATION TESTING is defined as a type of testing where software modules are integrated logically and tested as a group. A typical software project consists of multiple software modules, coded by different programmers. The purpose of this level of testing is to expose defects in the interaction between these software modules when they are integrated

Integration Testing focuses on checking data communication amongst these modules. Hence it is also termed as ‘I & T’ (Integration and Testing), ‘String Testing’ and sometimes ‘Thread Testing’.

Why do Integration Testing?

Integration Testing

 


Although each software module is unit tested, defects still exist for various reasons like

 

 

Click here if the video is not accessible

Example of Integration Test Case

Integration Test Case differs from other test cases in the sense it focuses mainly on the interfaces & flow of data/information between the modules. Here priority is to be given for the integrating links rather than the unit functions which are already tested.

Sample Integration Test Cases for the following scenario: Application has 3 modules say ‘Login Page’, ‘Mailbox’ and ‘Delete emails’ and each of them is integrated logically.

Here do not concentrate much on the Login Page testing as it’s already been done in Unit Testing. But check how it’s linked to the Mail Box Page.

Similarly Mail Box: Check its integration to the Delete Mails Module.

Test Case IDTest Case ObjectiveTest Case DescriptionExpected Result
1 Check the interface link between the Login and Mailbox module Enter login credentials and click on the Login button To be directed to the Mail Box
2 Check the interface link between the Mailbox and Delete Mails Module From Mailbox select the email and click a delete button Selected email should appear in the Deleted/Trash folder

Approaches, Strategies, Methodologies of Integration Testing

Software Engineering defines variety of strategies to execute Integration testing, viz.

Below are the different strategies, the way they are executed and their limitations as well advantages.

 

Big Bang Testing

Big Bang Testing is an Integration testing approach in which all the components or modules are integrated together at once and then tested as a unit. This combined set of components is considered as an entity while testing. If all of the components in the unit are not completed, the integration process will not execute.

Advantages:

Disadvantages:

Incremental Testing

In the Incremental Testing approach, testing is done by integrating two or more modules that are logically related to each other and then tested for proper functioning of the application. Then the other related modules are integrated incrementally and the process continues until all the logically related modules are integrated and tested successfully.

Incremental Approach, in turn, is carried out by two different Methods:

Stubs and Drivers

Stubs and Drivers are the dummy programs in Integration testing used to facilitate the software testing activity. These programs act as a substitutes for the missing models in the testing. They do not implement the entire programming logic of the software module but they simulate data communication with the calling module while testing.

Stub: Is called by the Module under Test.

Driver: Calls the Module to be tested.

Bottom-up Integration Testing

Bottom-up Integration Testing is a strategy in which the lower level modules are tested first. These tested modules are then further used to facilitate the testing of higher level modules. The process continues until all modules at top level are tested. Once the lower level modules are tested and integrated, then the next level of modules are formed.

Diagrammatic Representation:

INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom Up

Advantages:

Disadvantages:

Top-down Integration Testing

Top Down Integration Testing is a method in which integration testing takes place from top to bottom following the control flow of software system. The higher level modules are tested first and then lower level modules are tested and integrated in order to check the software functionality. Stubs are used for testing if some modules are not ready.

Diagrammatic Representation:

INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom Up

Advantages:

Disadvantages:

Sandwich Testing

Sandwich Testing is a strategy in which top level modules are tested with lower level modules at the same time lower modules are integrated with top modules and tested as a system. It is a combination of Top-down and Bottom-up approaches therefore it is called Hybrid Integration Testing. It makes use of both stubs as well as drivers.

INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom Up

How to do Integration Testing?

The Integration test procedure irrespective of the Software testing strategies (discussed above):

  1. Prepare the Integration Tests Plan
  2. Design the Test Scenarios, Cases, and Scripts.
  3. Executing the test Cases followed by reporting the defects.
  4. Tracking & re-testing the defects.
  5. Steps 3 and 4 are repeated until the completion of Integration is successful.

Brief Description of Integration Test Plans:

It includes the following attributes:

Entry and Exit Criteria of Integration Testing

Entry and Exit Criteria to Integration testing phase in any software development model

Entry Criteria:

Exit Criteria:

Best Practices/ Guidelines for Integration Testing

What is System Testing? Types & Definition with Example

Thomas Hamilton ByThomas Hamilton UpdatedOctober 30, 2021

What is System Testing?

System Testing is a level of testing that validates the complete and fully integrated software product. The purpose of a system test is to evaluate the end-to-end system specifications. Usually, the software is only one element of a larger computer-based system. Ultimately, the software is interfaced with other software/hardware systems. System Testing is actually a series of different tests whose sole purpose is to exercise the full computer-based system.

In this tutorial, we will learn

System Testing is Blackbox

Two Category of Software Testing

System test falls under the black box testing category of software testing.

White box testing is the testing of the internal workings or code of a software application. In contrast, black box or System Testing is the opposite. System test involves the external workings of the software from the user’s perspective.

 

Click here if the video is not accessible

What do you verify in System Testing?

System Testing involves testing the software code for following

 

What is System Testing? Types & Definition with Example

 

 


That is a very basic description of what is involved in system testing. You need to build detailed test cases and test suites that test each aspect of the application as seen from the outside without looking at the actual source code. 

 

Software Testing Hierarchy

 

 

System Testing

 

 

As with almost any software engineering process, software testing has a prescribed order in which things should be done. The following is a list of software testing categories arranged in chronological order. These are the steps taken to fully test new software in preparation for marketing it:

Different Types of System Testing

There are more than 50 types of System Testing. For an exhaustive list of software testing types click here. Below we have listed types of system testing a large software development company would typically use

  1. Usability Testing– mainly focuses on the user’s ease to use the application, flexibility in handling controls and ability of the system to meet its objectives
  2. Load Testing– is necessary to know that a software solution will perform under real-life loads.
  3. Regression Testing– involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time.
  4. Recovery testing – is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes.
  5. Migration testing- is done to ensure that the software can be moved from older system infrastructures to current system infrastructures without any issues.
  6. Functional Testing – Also known as functional completeness testing, Functional Testing involves trying to think of any possible missing functions. Testers might make a list of additional functionalities that a product could have to improve it during functional testing.
  7. Hardware/Software Testing – IBM refers to Hardware/Software testing as “HW/SW Testing”. This is when the tester focuses his/her attention on the interactions between the hardware and software during system testing.

System Testing Tools

1) Eggplant

The average enterprise application has 50 external dependencies. Eggplant enables robust end-to-end testing for your entire tech stack.

Features:

What Types of System Testing Should Testers Use?

There are over 50 different types of system testing. The specific types used by a tester depend on several variables. Those variables include:

Sanity Testing Vs Smoke Testing: Introduction and Differences

Thomas Hamilton ByThomas Hamilton UpdatedDecember 11, 2021

 


Smoke and Sanity testing difference is the most misunderstood topic in Software Testing. There is an enormous amount of literature on the subject, but most of them are confusing. The following article makes an attempt to address the confusion.

 

The key differences between Smoke Testing and Sanity Testing can be learned with the help of the following diagram –

Smoke Testing vs Sanity Testing
Smoke Testing vs Sanity Testing

To appreciate the above diagram lets first understand –

What is a Software Build?

If you are developing a simple computer program which consists of only one source code file, you merely need to compile and link this one file, to produce an executable file. This process is very simple.
Usually, this is not the case. A typical Software Project consists of hundreds or even thousands of source code files. Creating an executable program from these source files is a complicated and time-consuming task.
You need to use “build” software to create an executable program and the process is called ” Software Build

 

Smoke Testing

Smoke Testing is a software testing technique performed post software build to verify that the critical functionalities of software are working fine. It is executed before any detailed functional or regression tests are executed. The main purpose of smoke testing is to reject a software application with defects so that QA team does not waste time testing broken software application.

In Smoke Testing, the test cases chose to cover the most important functionality or component of the system. The objective is not to perform exhaustive testing, but to verify that the critical functionalities of the system are working fine.
For Example, a typical smoke test would be – Verify that the application launches successfully, Check that the GUI is responsive … etc.

KEY DIFFERENCE

What is Sanity Testing?

Sanity testing is a kind of Software Testing performed after receiving a software build, with minor changes in code, or functionality, to ascertain that the bugs have been fixed and no further issues are introduced due to these changes. The goal is to determine that the proposed functionality works roughly as expected. If sanity test fails, the build is rejected to save the time and costs involved in a more rigorous testing.

The objective is “not” to verify thoroughly the new functionality but to determine that the developer has applied some rationality (sanity) while producing the software. For instance, if your scientific calculator gives the result of 2 + 2 =5! Then, there is no point testing the advanced functionalities like sin 30 + cos 50.

 

Smoke Testing Vs Sanity Testing – Key Differences

Following is the difference between Sanity and Smoke testing:

Smoke TestingSanity Testing
Smoke Testing is performed to ascertain that the critical functionalities of the program is working fine Sanity Testing is done to check the new functionality/bugs have been fixed
The objective of this testing is to verify the “stability” of the system in order to proceed with more rigorous testing The objective of the testing is to verify the “rationality” of the system in order to proceed with more rigorous testing
This testing is performed by the developers or testers Sanity testing in software testing is usually performed by testers
Smoke testing is usually documented or scripted Sanity testing is usually not documented and is unscripted
Smoke testing is a subset of Acceptance testing Sanity testing is a subset of Regression Testing
Smoke testing exercises the entire system from end to end Sanity testing exercises only the particular component of the entire system
Smoke testing is like General Health Check Up Sanity Testing is like specialized health check up

Points to note.

 

Click here if the video is not accessible

Read more about Smoke Testing in software engineering

What is Regression Testing? Definition, Test Cases (Example)

Thomas Hamilton ByThomas Hamilton UpdatedDecember 24, 2021

What is Regression Testing?

Regression Testing is defined as a type of software testing to confirm that a recent program or code change has not adversely affected existing features. Regression Testing is nothing but a full or partial selection of already executed test cases which are re-executed to ensure existing functionalities work fine.

This testing is done to make sure that new code changes should not have side effects on the existing functionalities. It ensures that the old code still works once the latest code changes are done.

In this tutorial, we will learn

Need of Regression Testing

The Need of Regression Testing mainly arises whenever there is requirement to change the code and we need to test whether the modified code affects the other part of software application or not. Moreover, regression testing is needed, when a new feature is added to the software application and for defect fixing as well as performance issue fixing.

How to do Regression Testing

In order to do Regression Testing process, we need to first debug the code to identify the bugs. Once the bugs are identified, required changes are made to fix it, then the regression testing is done by selecting relevant test cases from the test suite that covers both modified and affected parts of the code.

Software maintenance is an activity which includes enhancements, error corrections, optimization and deletion of existing features. These modifications may cause the system to work incorrectly. Therefore, Regression Testing becomes necessary. Regression Testing can be carried out using the following techniques:

 

Regression Testing

Retest All

Regression Test Selection

Regression Test Selection is a technique in which some selected test cases from test suite are executed to test whether the modified code affects the software application or not. Test cases are categorized into two parts, reusable test cases which can be used in further regression cycles and obsolete test cases which can not be used in succeeding cycles.

Prioritization of Test Cases

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 –

Regression Testing Tools

If your software undergoes frequent changes, regression testing costs will escalate. In such cases, Manual execution of test cases increases test execution time as well as costs. Automation of regression test cases is the smart choice in such cases.  The extent of automation depends on the number of test cases that remain re-usable for successive regression cycles. 

Following are the most important tools used for both functional and regression testing in software engineering:

1) Avo Assure

Avo Assure is a technology agnostic, no-code test automation solution that helps you test end-to-end business processes with a few clicks of the buttons. This makes regression testing more straightforward and faster.

Features


2) Telerik Test Studio

Telerik Test Studio is an automated testing platform for web, desktop and responsive applications, supporting functional UI, load and RESTful API testing. Test Studio helps teams eliminate regressions and make sure their applications still work the way they did before any changes were introduced. It comes with standalone IDE and Visual Studio integration

Features:


3) testRigor

testRigor helps you to directly express tests as executable specifications in plain English. Users of all technical abilities are able to build end-to-end tests of any complexity covering mobile, web, and API steps in one test. Test steps are expressed on the end-user level instead of relying on details of implementation like XPaths or CSS Selectors.

Features:


4) Eggplant

Eggplant’s AI-driven test automation streamlines regression testing through prioritization of test cases and minimization of test maintenance.

Features:

Selenium: This is an open source tool used for automating web applications. Selenium can be used for browser-based regression testing.

Quick Test Professional (QTP): HP Quick Test Professional is automated software designed to automate functional and regression test cases. It uses VBScript language for automation. It is a Data-driven, Keyword based tool. 

Rational Functional Tester (RFT): IBM’s rational functional tester is a Java tool used to automate the test cases of software applications. This is primarily used for automating regression test cases and it also integrates with Rational Test Manager. 

Regression Testing and Configuration Management

Configuration Management during Regression Testing becomes imperative in Agile Environments where a code is being continuously modified. To ensure effective regression tests, observe the following :

Difference between Re-Testing and Regression Testing:

Retesting means testing the functionality or bug again to ensure the code is fixed. If it is not fixed, Defect needs to be re-opened. If fixed, Defect is closed.

Regression testing means testing your software application when it undergoes a code change to ensure that the new code has not affected other parts of the software.

Also, Check out the complete list of differences over here.

Challenges in Regression Testing:

Challenges in Regression Testing

 Following are the major testing problems for doing regression testing:

Practical Application of Regression Testing Example with a Video

 

Click here if the video is not accessible

Conclusion:

An effective regression strategy, save organizations both time and money. As per one of the case study in banking domain, regression saves up to 60% time in bug fixes(which would have been caught by regression tests) and 40%  in money