Software Testing Bootcamp | Types of Testing | Verification, Validation | Software Testing Tutorials

TM SQUARE
25 Mar 202210:29

Summary

TLDRThis tutorial delves into the basics of software testing, focusing on the two primary types: static and dynamic testing. It clarifies the differences between these types, emphasizing that static testing involves reviewing documents without code execution, while dynamic testing requires interacting with and running the code. The video also explains the concepts of verification (ensuring the product is built correctly) and validation (ensuring the product meets customer needs). The presenter sets the stage for future lessons on why testing is crucial and addresses common industry questions.

Takeaways

  • πŸ’» Static testing focuses on reviewing work products like documentation, requirements, and designs without executing code.
  • πŸ› οΈ Dynamic testing involves executing the code and interacting with the actual product to validate its functionality.
  • πŸ“‚ Static testing is often referred to as verification, which ensures the product is being built correctly through non-executable methods.
  • βš™οΈ Dynamic testing, also called validation, ensures the right product is being built, focusing on the actual customer requirements.
  • πŸ“Š Static testing methods include reviews, walkthroughs, and inspections, while dynamic testing uses white-box, black-box, functional, and non-functional testing.
  • πŸ§ͺ Static testing can detect defects early in the development process, such as during requirements or design phases, which is more cost-effective.
  • πŸš€ Dynamic testing happens after static testing and identifies bugs by interacting with the system during its execution.
  • πŸ› οΈ Levels of dynamic testing include unit testing, integration testing, system testing, and acceptance testing.
  • βœ… Verification checks if the product conforms to specifications, while validation ensures the product meets the customer’s needs.
  • πŸ›‘οΈ Both static and dynamic testing are crucial, with static testing preventing early defects and dynamic testing ensuring the final product functions as expected.

Q & A

  • What are the two main types of testing discussed in the video?

    -The two main types of testing are static testing and dynamic testing.

  • How is static testing different from dynamic testing?

    -Static testing is non-executable and focuses on reviewing documents and work products without running code. Dynamic testing, on the other hand, involves executing code and interacting with the software to validate functionalities.

  • Can you provide examples of work products involved in static testing?

    -Examples of work products include requirements, design documents, business models, UML diagrams, test cases, and test plans.

  • What are some methods used in static testing?

    -Static testing methods include reviews, walkthroughs, technical reviews, and inspections.

  • What is dynamic testing and when is it performed?

    -Dynamic testing involves running the code or application and testing its functionality. It is performed after static testing and occurs at different levels, such as unit, integration, system, and acceptance testing.

  • How are verification and validation related to static and dynamic testing?

    -Verification is associated with static testing and focuses on ensuring that the work products meet specified requirements without executing code. Validation, linked with dynamic testing, ensures that the final product meets the customer's expectations by executing the software.

  • What is the difference between verification and validation in simple terms?

    -Verification checks if the product is built right, meaning it meets the requirements correctly. Validation checks if the right product is built, meaning it fulfills the customer's needs and expectations.

  • What is an example illustrating the difference between verification and validation?

    -An example is when a customer asks for an iPhone but is shown a Samsung phone. While the Samsung phone is a working product (verification passed), it is not what the customer requested (validation failed).

  • What are some benefits of static testing in the early stages of software development?

    -Static testing helps identify defects early in the development process, such as in design or requirement phases, which makes fixing these defects cheaper and more efficient.

  • Why is dynamic testing essential even after static testing?

    -Dynamic testing identifies defects that static testing cannot catch, as it involves actual execution of the software to check for issues that arise when the code is run.

Outlines

00:00

πŸ“š Introduction to Types of Testing: Static vs. Dynamic

In this section, the speaker introduces the concept of software testing types, highlighting that many people mistakenly think of manual vs. automation or white box vs. black box as types of testing. However, the correct classification is between static and dynamic testing. The speaker clarifies that all other testing types, such as functional, non-functional, regression, and white/black box testing, fall under these two categories. Static testing involves reviewing work products like requirements, designs, and test plans, and it is non-executable. Dynamic testing, on the other hand, is executable and involves interacting with the code or product, which is tested across various levels such as unit, integration, and system testing.

05:03

πŸ” Verification vs. Validation: Understanding the Difference

The second section elaborates on the differences between verification and validation, which are common questions in software testing. Verification is ensuring that the product is built correctly, focusing on documentation and code reviews without execution. Validation ensures that the right product is being built according to customer requirements. The analogy of building a phone (verifying that it functions) versus ensuring that it is the correct phone for the customer (validation) is used to clarify this distinction. This section emphasizes the importance of verification in early stages, like design and requirements, to catch defects early and reduce costs.

10:04

πŸš€ Conclusion and Next Steps: Why Testing is Crucial

In the final section, the speaker wraps up the tutorial by summarizing the importance of understanding basic testing terminologies, verification, and validation. The speaker teases the next tutorial, which will explore why testing is important, and encourages viewers to leave comments and questions. The closing message promotes continuous learning and invites the audience to stay engaged with future content.

Mindmap

Keywords

πŸ’‘Static Testing

Static testing refers to the process of reviewing work products like documents, designs, and models without executing any code. In the video, static testing is described as a non-executable process that helps identify defects early in the development life cycle, such as in requirements or design documents. This form of testing ensures that work products meet standards before proceeding to the next stages.

πŸ’‘Dynamic Testing

Dynamic testing involves executing the actual code or product to validate its functionality by interacting with it. In the script, dynamic testing is contrasted with static testing and involves running the software to validate that it works as expected. It is executable and is typically done after static testing, verifying if the product functions correctly according to the requirements.

πŸ’‘Verification

Verification is the process of checking whether the product has been built correctly according to the specifications, without executing the product. In the video, verification is explained as a type of static testing, focusing on reviewing documents and designs. It ensures that the product development process adheres to the predefined specifications.

πŸ’‘Validation

Validation checks whether the right product has been built, ensuring it meets the customer's needs and expectations. This is a type of dynamic testing that involves interacting with the actual product. In the video, the example given illustrates the difference between a functioning product (verification) and the correct product for the customer (validation).

πŸ’‘Functional Testing

Functional testing is a type of dynamic testing where the tester validates that the software behaves according to the functional requirements. It checks specific functionalities by inputting data and evaluating the output. The video mentions functional testing as part of dynamic testing, ensuring the software performs tasks as expected by the end-user.

πŸ’‘Non-Functional Testing

Non-functional testing evaluates aspects of the software not related to specific behaviors, such as performance, security, and usability. The script explains that non-functional testing is part of dynamic testing and checks elements like performance and security, ensuring the system performs well under stress and meets broader system requirements.

πŸ’‘White Box Testing

White box testing involves testing the internal structures or workings of an application, often performed by developers. In the script, white box testing is mentioned as a method under dynamic testing, where the tester has knowledge of the internal code and design of the application, allowing them to test specific functionalities deeply.

πŸ’‘Black Box Testing

Black box testing is a method where the tester evaluates the software's functionality without knowing its internal structure or code. The script refers to black box testing as part of dynamic testing, where testers interact with the software from an end-user perspective, focusing on inputs and outputs rather than the underlying code.

πŸ’‘Software Development Life Cycle (SDLC)

The SDLC is a process that includes planning, designing, developing, testing, and deploying software. The video highlights that static testing is performed on various work products produced throughout the SDLC, such as requirements, design documents, and test cases, to ensure quality before moving forward in the development process.

πŸ’‘Levels of Testing

Levels of testing refer to the stages in software testing, such as unit testing, integration testing, system testing, and acceptance testing. The script discusses dynamic testing happening across these levels to ensure that each part of the system functions properly on its own and when integrated with other components. These levels validate both functional and non-functional aspects of the software.

Highlights

Introduction to software testing basics and career building through software testing tutorials.

Clarification on the types of testing: The two main types are static and dynamic testing.

Static testing involves reviewing work products like documentation, diagrams, and test plans without execution.

Dynamic testing includes code execution and product interaction to validate functionalities.

Static testing is non-executable and focuses on identifying anomalies, contradictions, and inconsistencies.

Dynamic testing happens after static testing and includes levels like unit, integration, system, and acceptance testing.

Verification and validation concepts are discussed, with verification checking if the product is built correctly, and validation ensuring it's the right product for the customer.

Static testing is referred to as verification, and dynamic testing is validation, marking the distinction between the two.

Verification is conducted during the early stages of the software development life cycle to find bugs early and cost-effectively.

Dynamic testing is executable, involving practical interaction with the product to find defects that static testing may miss.

Functional and non-functional testing falls under dynamic testing, with levels like performance, security, and usability.

Differences between verification and validation: verification includes document and code reviews, while validation involves real product testing.

Example given to explain verification vs. validation: a program to add two numbers is verified, but validation ensures it's the program the client requested.

Dynamic testing focuses on running code and interacting with the system to validate product requirements and performance.

The tutorial ends with a teaser for the next topic on why testing is important, encouraging viewers to continue learning.

Transcripts

play00:00

here one

play00:02

two one

play00:04

[Music]

play00:18

hello friends and greetings for the day

play00:20

welcome back to another tutorial on our

play00:22

software testing boot camp where we are

play00:24

exploring a lot about what is testing

play00:27

all about in details and helping you

play00:29

build a better career on qi we are

play00:32

currently in the chapter one talking

play00:33

about the basics of software testing and

play00:35

as a part of it we are still getting

play00:37

continued with 1.1 what is testing and

play00:41

this is the part three of this

play00:42

particular segment

play00:45

to talk about this today we are jumping

play00:47

into the other part of it where a lot of

play00:49

people have a great confusion to

play00:51

understand that when it comes to types

play00:53

of testing what should i say all right

play00:56

now of course a lot of people will come

play00:58

up and say oh types of testing looks

play00:59

like manual and automation people will

play01:02

say white box or black box people would

play01:04

sometimes also say functional and

play01:05

non-functional but

play01:08

very rarely people respond to my

play01:10

question on this that

play01:12

it is static and dynamic

play01:15

right this is to clarify you today that

play01:18

the types of testing when you say what

play01:19

are the types of testing the answer is

play01:21

static and dynamic whereas all other

play01:24

items are differently arranged under

play01:26

these two items itself no matter you

play01:28

talk about white box testing you talk

play01:30

about black box functional

play01:32

non-functional retesting regression

play01:34

testing and many more things we'll be

play01:37

talking about them in detail in our

play01:39

chapter too but right now let's

play01:41

elaborate more on what is static testing

play01:43

and dynamic testing when it comes to

play01:45

static testing on your left is all about

play01:48

reviewing various work products which

play01:51

are prepared as a part of the entire

play01:53

software development life cycle now what

play01:56

are these work products work products

play01:59

are basically important to understand

play02:02

that it is any kind of documentation any

play02:05

kind of reference any kind of diagrams

play02:08

which is created as a part of the

play02:10

project and

play02:11

needs to be reviewed of course for any

play02:13

kind of anomalies contradictions

play02:16

omissions inconsistency inconsistencies

play02:19

contradictions etc right so any

play02:22

particular such

play02:24

uh

play02:25

work product which is any document on

play02:27

reference for example it could be

play02:28

requirement it could be a design it

play02:30

could be a business model or it could be

play02:32

any kind of uml diagram right use cases

play02:36

any such thing beta test case test plan

play02:38

as well

play02:39

is a candidate of static testing now

play02:42

static testing is performed as reviews

play02:45

the approach of conducting static

play02:46

testing and the reason we call it as

play02:48

static testing is because it is

play02:51

non-executable

play02:53

okay it's just a process where we don't

play02:55

run any code or do not have an

play02:58

application as such which we actually

play03:00

execute and test it so we don't have any

play03:02

kind of practical executions involved

play03:05

when we talk about static testing it is

play03:07

limited to

play03:08

hardcore documentations to certain

play03:10

extent we do code review as well but not

play03:13

about executing the code but doing a dry

play03:16

run

play03:17

doing a scenario or dry run execution

play03:19

which is more of like reviewing what is

play03:22

that we have written is up to the mark

play03:23

or not now there are several types of

play03:25

reviews which we'll be covering in our

play03:27

upcoming chapters talking about the uh

play03:30

types of review like informal review

play03:32

walkthrough technical review inspection

play03:34

etc and on the other hand the right side

play03:38

we have the second type of testing which

play03:40

is dynamic testing and the major

play03:41

difference between static and dynamic is

play03:44

static is non-executable

play03:46

and dynamic is executable here we have a

play03:51

code we have a product and which we run

play03:55

interact with it and test

play03:57

we validate the functionalities by

play04:00

interacting with the product while

play04:01

passing on some values running the

play04:03

application executing the code and then

play04:06

testing it so that's completely

play04:08

different than the static testing and of

play04:10

course dynamic testing takes place after

play04:12

static testing right and this dynamic

play04:16

testing is performed as levels of

play04:18

testing we don't call it as types we

play04:20

call it as levels of testing and the

play04:21

several levels which you might be aware

play04:23

of is unit integration system acceptance

play04:27

or any other non-functional levels like

play04:29

performance security

play04:31

usability accessibility and lot many

play04:33

other things like that and we know them

play04:35

as levels of testing now further to add

play04:38

a level of testing can be classified

play04:40

into two categories which is functional

play04:43

or non-functional that's where your

play04:46

performance and other non-functional

play04:48

items falls under dynamic testing so

play04:50

this is again on the high level we'll be

play04:52

doing a deep dive into the chapter two

play04:54

about what are these levels and how they

play04:56

are differentiated on terms of

play04:59

functional and non-functionality

play05:03

also to add this particular thing is

play05:05

basically referred to as a verification

play05:08

and validation also which is a very

play05:09

common question for the newcomers to the

play05:11

industry they a lot of company look

play05:14

forward to ask you this question that

play05:17

how do you differentiate between

play05:18

verification and validation right so the

play05:20

left side is what you call it as

play05:22

verification where we don't have any

play05:24

kind of executions involved and on the

play05:26

right side dynamic testing is also

play05:27

referred to as validation but is that

play05:30

enough to answer no let's talk about in

play05:32

detail that what is verification and

play05:34

validation

play05:37

well in simple terms to define the

play05:39

verification and validation uh we can

play05:43

use some great statements which you

play05:45

always find in any tutorial any

play05:47

blogspots or if any tutor is teaching

play05:50

you about testing they will use this

play05:51

statement that have we built the product

play05:54

right

play05:55

or have we built the right product right

play05:59

the only difference in these two

play06:01

statements is at the end that is product

play06:05

right right product when you swap these

play06:08

two words the meaning changes

play06:10

it's just simple that

play06:12

have you

play06:13

built the product right that means

play06:16

whatever you have built is it working

play06:18

fine or not like if i'm writing a

play06:20

program to add two numbers i'll pass two

play06:22

values or i'll review it and check that

play06:25

is it an addition program

play06:27

if i have to write a program the

play06:28

expectation is to write a program to

play06:30

multiply two numbers then i'll do a

play06:32

drawdown and check if it is exactly what

play06:35

you need

play06:36

right and validation is more of like

play06:39

right product

play06:41

where we want to make sure that this is

play06:43

what the customer wanted no matter your

play06:45

edition program is working fine but

play06:48

did the client really ask you for

play06:50

addition or subtraction or

play06:52

multiplication so validating with

play06:55

respect to those of the requirements

play06:56

given to you is the validation part so

play06:59

verification is just making sure that

play07:01

what you are doing what you have done so

play07:04

far is that correct or not

play07:07

and validation is more about making sure

play07:10

that this is what the customer wanted

play07:11

because not always

play07:13

the right product can be sorry the

play07:15

product right can be the right product

play07:17

for example if you go to a shop and you

play07:19

say hey i'm looking for an apple iphone

play07:22

and that shopkeeper starts showing you

play07:24

samsung models

play07:25

so samsung model is also working phone

play07:28

it's a phone right but you're not

play07:30

looking for android you're looking for

play07:32

ios so verification passed validation

play07:35

failed

play07:36

right so being precise to the

play07:38

requirement is what we validate as a

play07:40

part of the validation verification is

play07:42

more of making sure that whatever we are

play07:45

building up like the left side of the v

play07:47

model right we say

play07:49

uh business requirements uh hld lld code

play07:53

all these things what we prepare

play07:54

internally is up to the mark or not

play07:57

correct so also adding more to it we

play07:59

have got some quick differences for you

play08:01

to build your confidence on

play08:03

differentiating between verification and

play08:05

validation so verification it includes

play08:08

checking documentations design codes and

play08:11

program statically

play08:13

we don't talk about running them

play08:15

executing them etc on the other hand

play08:17

validation includes testing and

play08:19

validating the actual product which is

play08:21

not just limited to work products but

play08:23

this is the real product which you might

play08:24

be releasing into the market

play08:27

verification is also known as static

play08:29

testing or the approach is static

play08:31

testing whereas dynamic testing is all

play08:33

about the validation

play08:35

the methods used in verifications or

play08:37

review walk-through inspections etc and

play08:39

methods used in validations are white

play08:42

box black box functional non-functional

play08:44

and more

play08:46

it can on the verification side it can

play08:48

find the bugs early in the stages of the

play08:51

software development life cycle like

play08:53

development design requirement phases

play08:55

because fixing or finding of the effect

play08:58

early is cheaper to resolve right

play09:00

because you're not built a system on

play09:01

that

play09:02

basis so it's it always helps you to

play09:05

find defects earlier in the life cycle

play09:07

whereas on the validation it can only

play09:09

find the bugs that could not be found by

play09:12

the verification that means by

play09:13

interacting

play09:15

with the system you would be validating

play09:17

and getting the defects there and here

play09:19

you will find more early defects on the

play09:22

work products so the defects will be

play09:24

there in both the places it's just that

play09:26

related to work products and

play09:27

verification and related to real product

play09:30

on the validation

play09:32

it checks whether the software confirms

play09:34

to the specification or not

play09:36

and validation is checks whether the

play09:38

software meets the requirement and

play09:39

expectation of a customer or not so

play09:42

pretty much making

play09:43

the same statements which we just

play09:44

discussed and finally it does not

play09:47

include the execution of code which is

play09:48

verification whereas validation deals

play09:51

with execution of the code practically

play09:53

interacting with it

play09:55

now i hope that certainly gives us a

play09:57

great understanding of some of the basic

play09:58

terminologies uh

play10:00

good understanding of what are the

play10:02

fundamentals of testing

play10:03

what are the objectives of testing and

play10:05

so on we'll be now jumping into

play10:07

something more interesting in our next

play10:09

tutorial which is to talk about

play10:10

why testing is important so stay tuned

play10:13

for that so

play10:14

that's all from this particular tutorial

play10:16

team should you have anything else feel

play10:17

free to comment below i'm always there

play10:19

to address your queries and answer them

play10:21

well till then keep learning keep

play10:23

exploring keep understanding the context

play10:25

thanks for watching the video team and

play10:27

happy learning

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Software TestingQA BasicsStatic TestingDynamic TestingVerificationValidationFunctional TestingNon-functional TestingTesting MethodsTech Tutorials