ISTQB FOUNDATION 4.0 | Tutorial 23 | Static Testing Basics | Reviews & Static Analysis | CTFL

TM SQUARE
10 Jan 202413:42

Summary

TLDRThis tutorial delves into static testing, a critical yet often overlooked aspect of the software development lifecycle. It emphasizes the importance of reviewing work products for defects early on to save time and resources. The video distinguishes between manual reviews and static analysis tools, highlighting their roles in identifying issues such as unreachable code or design flaws. It also underscores the value of static testing in improving quality, enhancing communication among stakeholders, and fostering a shared understanding, ultimately leading to more efficient and cost-effective project outcomes.

Takeaways

  • πŸ“š Static testing involves reviewing work products for anomalies, inconsistencies, and omissions without executing the software.
  • πŸ” It contrasts with dynamic testing, where the software is actually run, and can be conducted through manual reviews or with the help of static analysis tools.
  • πŸ› οΈ The objective of static testing is to improve quality, detect defects, and assess characteristics such as readability, completeness, and correctness.
  • πŸ‘₯ It is a collaborative process involving testers, business representatives, and developers, emphasizing the importance of early and collective review of work products.
  • πŸ”‘ Static testing can be applied for both verification and validation, indicating its broad application throughout the software development life cycle (SDLC).
  • πŸ’‘ The value of static testing lies in its ability to detect defects early in the SDLC, adhering to the principle that early testing saves time and money.
  • πŸš€ Static testing can identify certain defects that dynamic testing might miss, such as unreachable code or design pattern issues.
  • 🀝 It fosters better communication and a shared understanding among stakeholders, which can lead to healthier team relationships and reduced misunderstandings.
  • πŸ’Ό Even though review processes can be costly to implement, the overall project costs are usually lower when static testing is conducted, due to fewer defects needing correction later.
  • πŸ› οΈ Static analysis tools are particularly useful for detecting code defects efficiently, often resulting in fewer code defects and lower development effort.
  • 🌟 The tutorial emphasizes the importance of static testing in modern software development practices, highlighting its role in prevention and early detection of issues.

Q & A

  • What is the main focus of the tutorial video?

    -The tutorial video focuses on the ISTQB Foundation Level certification, specifically discussing static testing, its basics, work products examined by static testing, and the value of static testing.

  • What is the difference between static testing and dynamic testing?

    -Static testing involves reviewing work products without executing them, whereas dynamic testing requires the execution of the software or test cases to find defects.

  • What are the two primary methods of conducting static testing?

    -The two primary methods of conducting static testing are review, which is manual examination of documentation, and static analysis, which uses tools to evaluate work products like code or diagrams.

  • Why is static testing considered valuable in the software development life cycle (SDLC)?

    -Static testing is valuable because it can detect defects early in the SDLC, improve communication among stakeholders, and reduce overall project costs by identifying issues before they become more expensive to fix.

  • What kind of work products are suitable for static testing?

    -Suitable work products for static testing include requirement specifications, source code, test plans, test cases, product backlog items, project documentation, contracts, and models.

  • What are some examples of anomalies that static analysis tools can detect in code?

    -Static analysis tools can detect anomalies such as unreachable code, dead code, infinite loops, variables that are declared but never used, and variables that are used but never declared.

  • How does static testing contribute to the prevention of defects?

    -Static testing contributes to defect prevention by identifying inconsistencies, contradictions, and omissions in work products before they are used in further development activities, thus saving time and resources.

  • What is the principle that static testing supports in testing practices?

    -Static testing supports the principle that early testing saves time and money, as it allows for the detection and correction of issues at an early stage in the development process.

  • How can static testing improve the quality of work products?

    -Static testing can improve the quality of work products by verifying documented requirements, ensuring completeness, correctness, readability, and testability, and by involving a wide variety of stakeholders in the review process.

  • Why is it important to involve multiple stakeholders in the static testing process?

    -Involving multiple stakeholders in static testing is important for establishing a shared understanding of the work product, improving communication, and ensuring that the requirements accurately reflect the needs of all parties involved.

  • What are some of the benefits of using static analysis tools in the development process?

    -Static analysis tools can identify problems before dynamic testing, often requiring less effort since no test cases are needed. They are commonly used to detect specific code defects and can be incorporated into CI frameworks to maintain code quality and security.

Outlines

00:00

πŸ“š Introduction to Static Testing

This paragraph introduces the concept of static testing within the context of ISTQB Foundation level certification. It explains that static testing involves reviewing work products for anomalies without executing the software. It emphasizes the importance of early testing to save time and money and the role of static testing in preventing defects. The paragraph also distinguishes between two methods of static testing: reviews, which are manual examinations of documentation, and static analysis, which uses tools to evaluate work products like code and diagrams. The value of static testing in improving quality, detecting defects, and assessing characteristics is highlighted, along with its application in both verification and validation processes.

05:02

πŸ” Static Analysis and Its Tools

The second paragraph delves into static analysis, a subset of static testing that utilizes tools to identify issues in code and other structured work products. It mentions that static analysis is often integrated into Continuous Integration (CI) frameworks and is used to detect specific code defects, evaluate maintainability, and ensure security. Examples of static analysis tools include spelling checkers and readability tools, as well as more specialized tools for different programming languages. The paragraph also discusses the types of anomalies that can be detected, such as coding standard deviations, unreachable code, dead code, infinite loops, and variable declaration issues. It underscores the importance of static testing in the SDLC process and how it can be applied to a wide range of work products, from business requirements to project documentation.

10:04

πŸ›  The Value of Static Testing

The final paragraph discusses the key value of conducting static testing as part of the software development life cycle (SDLC). It points out that static testing can detect defects early, in line with the principle that early testing saves cost and time. The paragraph highlights how static testing can identify defects that dynamic testing might miss, such as design pattern issues and problems in non-executable work products. It also explains that static testing helps evaluate the quality of work products, ensuring that documented requirements meet stakeholders' actual needs. The importance of involving a variety of stakeholders in static testing to improve communication and shared understanding is emphasized. The paragraph concludes by arguing that, despite the potential costs of implementing reviews, the overall project costs are typically lower when static testing is performed due to reduced time and effort spent on fixing defects later in the project.

Mindmap

Keywords

πŸ’‘Static Testing

Static testing is a method of examining work products without executing the code or running the software. It is a core concept in the video, emphasizing the review of documents and code for potential defects before the execution phase. The script mentions that static testing can be conducted through reviews or static analysis tools, and it is crucial for identifying issues early in the software development life cycle (SDLC), thus saving time and resources.

πŸ’‘ISTQB Foundation Level Certification

This certification is a professional qualification for software testers, which the video aims to prepare viewers for. The script discusses the importance of understanding static testing as part of the ISTQB certification curriculum, indicating that grasping this concept is essential for those seeking to advance in the field of software testing.

πŸ’‘Work Products

In the context of the video, work products refer to the various documents and artifacts created during the SDLC, such as requirement specifications, source code, test plans, and project documentation. The script highlights that these work products are subject to static testing to ensure they are free from errors and inconsistencies, which is vital for the quality of the final software product.

πŸ’‘Defect Prevention

The concept of defect prevention is central to the video's message, advocating for the proactive identification and correction of issues before they become more costly to fix. The script explains that static testing helps in preventing defects by reviewing work products early in the development process, thereby aligning with the principle that 'early testing saves time and money'.

πŸ’‘Reviews

Reviews are a manual process of examining work products to find anomalies or inconsistencies. The script distinguishes between reviews and static analysis, noting that reviews are conducted by reading documentation, whereas static analysis uses tools to evaluate work products like code. Reviews are highlighted as a fundamental part of static testing, contributing to the overall quality assurance process.

πŸ’‘Static Analysis

Static analysis is an automated process that uses tools to analyze code and other work products for defects without executing the software. The script explains that static analysis is particularly useful for identifying issues in code that may be difficult to detect through manual reviews, such as unreachable code or coding standard deviations.

πŸ’‘Verification and Validation

Verification and validation are two distinct processes in software testing. Verification ensures that work products meet specified requirements, while validation confirms that the requirements themselves are correct and meet user needs. The script mentions that static testing can be applied for both purposes, underlining its comprehensive role in the SDLC.

πŸ’‘Cross-functional Stakeholders

Cross-functional stakeholders are individuals from various departments or roles within an organization who contribute to the review process. The script encourages involving such stakeholders in static testing to bring diverse perspectives and expertise, which can enhance the quality of the work products and foster better communication among team members.

πŸ’‘Shift Left

The term 'shift left' refers to the practice of moving testing activities earlier in the SDLC to find and fix defects sooner. The script discusses the value of static testing in the context of shift left, emphasizing that conducting reviews and analyses early can prevent defects from propagating through the development process.

πŸ’‘Continuous Integration (CI) Frameworks

CI frameworks are development practices where code changes are regularly merged into a central repository, allowing for frequent integration and testing. The script notes that static analysis is often incorporated into CI frameworks to automatically detect specific code defects, demonstrating the integration of static testing into modern development workflows.

πŸ’‘Maintainability and Security

Maintainability refers to the ease with which a software system can be modified, and security is the protection of the system against unauthorized access or threats. The script mentions that static analysis is used not only to find coding defects but also to evaluate the maintainability and security of the code, showing the broad application of static testing in ensuring software quality.

Highlights

Introduction to static testing as part of ISTQB Foundation level certification.

Static testing involves reviewing work products for anomalies and inconsistencies without executing the software.

Early testing saves time and money, aligning with the principle of preventing defects early in the lifecycle.

Static testing is not limited to writing and executing test cases but includes reviewing various work products.

Differentiation between static testing (review and static analysis) and dynamic testing.

Manual examination of work products is called a review, while tool-assisted examination is known as static analysis.

Static testing objectives include improving quality, detecting defects, and assessing characteristics like readability and testability.

Static testing can be applied for both verification and validation across the software development lifecycle.

Collaborative activities in agile methodologies involve multiple stakeholders in reviewing work products.

Review techniques ensure user stories are complete, understandable, and include testable acceptance criteria.

Static analysis tools identify problems prior to dynamic testing, often requiring less effort and detecting specific code defects.

Examples of static analysis tools include spelling checkers, readability tools, and those that evaluate maintainability and security.

Static testing examines a wide range of work products, from requirements to source code and project documentation.

Work products not suitable for static testing are those difficult for humans to interpret or legally restricted executable code.

The key value of static testing includes early defect detection, cost-effectiveness, and improved communication among stakeholders.

Static testing builds confidence in work products by verifying documented requirements against actual needs.

Static testing can be costly to implement but results in lower overall project costs due to reduced defect fixing efforts later.

Static analysis detects code defects more efficiently than dynamic testing, leading to fewer defects and lower development effort.

Closing remarks encourage continuous learning and exploration in the context of software testing.

Transcripts

play00:00

Hello friends and greetings for the day

play00:02

welcome back to another tutorial on

play00:04

istqb Foundation level certification we

play00:07

are getting started with chapter 3

play00:09

talking about static testing and as a

play00:11

part of this we'll be getting started

play00:12

with our first segment that is 3.1

play00:16

static testing Basics and it has several

play00:18

other subtopics today we'll be covering

play00:21

3.1 work products examined by Static

play00:24

testing and

play00:26

3.1.2 the value of static testing so as

play00:29

a part this tutorial we'll be

play00:31

introducing you to how we can prevent

play00:33

defects when it comes to

play00:41

[Music]

play00:44

testing to get started of course we are

play00:46

talking about a quick introduction to

play00:48

what is static testing all about so we

play00:50

have indeed discussed this in our

play00:52

earlier tutorials static testing is all

play00:55

about reviewing the work products and

play00:57

different work products do exist in our

play00:59

entire zlc model and certainly they are

play01:02

a good candidate of static testing that

play01:04

means they must be reviewed for any kind

play01:06

of anomalies inconsistencies

play01:09

contradictions omissions Etc and being

play01:11

reported right as in when they are

play01:14

created it's it's very simple to

play01:16

understand by correlating it to

play01:17

principle number three that is early

play01:19

testing saves time and money and at the

play01:21

same time one of the objective of

play01:22

testing is also to prevented effect

play01:24

testing is just not limited to writing

play01:26

and executing test cases as we learned

play01:28

from chapter one we want to let you know

play01:31

that in more detail that how static

play01:33

testing can be conducted and what could

play01:35

be the best possible benefits of having

play01:38

static testing being conducted early in

play01:40

the life cycle so let's quickly have a

play01:42

look what exactly the introduction is

play01:44

trying to say and there are different

play01:45

terminologies what we are trying to look

play01:47

forward to so when it comes to static

play01:50

testing in contrast to Dynamic testing

play01:53

in testing that is static testing the

play01:55

soft Ender test does not need to be

play01:57

executed it's more of like statically

play01:59

review in the work products rather than

play02:01

executing the product or the test cases

play02:05

the code process specification system

play02:07

architecture specification or any other

play02:10

work products are generally evaluated

play02:13

through manual examinations which are

play02:15

conducted with two different ways of

play02:17

course if you're doing it manually by

play02:18

reading the documentation it's called as

play02:20

review or with help of tools that is

play02:23

static analysis so right here if I am

play02:26

talking about a document like test case

play02:28

requirement Etc which I have to go

play02:31

through myself read it and find the

play02:33

anomalies related to that I call it as a

play02:35

review process which is static testing

play02:38

however when it comes to the other part

play02:40

of it for example things like control

play02:42

flow diagram business models or code

play02:45

especially then code is not certainly

play02:47

something which I can read and find the

play02:49

anomalies in it could be any number of

play02:51

lines of code which could be sometime

play02:52

very complicated to go through line by

play02:55

line and actually identify the anomalies

play02:57

so I need to take the help of tools and

play03:00

such tools or such approach of reviewing

play03:03

is called as static analysis so just a

play03:06

simple difference when you do it

play03:08

yourself by reading the documentation

play03:09

you call it as review but you do the

play03:12

same review with help of the tools you

play03:14

call it as static analysis further to

play03:16

add of course when it comes to static

play03:18

testing the test objectives include

play03:20

improving quality detecting defects and

play03:22

assessing characteristics right

play03:24

readability completeness correctness

play03:26

testability and consistency static

play03:28

testing can be applied for both

play03:30

verification and validation that means

play03:32

it's just not limited to only the work

play03:34

products which we create initially in

play03:36

the life cycle it also works when it

play03:39

comes to the dynamic analysis or things

play03:42

like you know reviewing the execution

play03:44

report defect report Etc so uh testers

play03:48

business representative and developers

play03:50

both work together during example

play03:52

mapping collaborating user story writing

play03:55

and backlog refinement sessions to

play03:57

ensure that user stories and related

play03:59

work work products meet defined criteria

play04:01

for an example definition of ready so in

play04:04

simple words of course when it talks

play04:05

about agile all the collaborative

play04:07

activities do take place and it's just

play04:09

not a one person responsibility to

play04:11

review the work product we may invite

play04:13

multiple cross functional stakeholders

play04:16

to come and join us in order to find the

play04:18

best possible defects in the static

play04:22

documentations itself or the work

play04:24

products also to add uh review

play04:27

techniques can be applied to ensure user

play04:29

stor are complete understandable and

play04:32

include testable acceptance criteria by

play04:35

asking the right questions testers

play04:37

explore challenge and help improve the

play04:39

proposed user stories so put together we

play04:42

do have different types of techniques

play04:44

which can be made use of in order to

play04:45

make the most out of the existing part

play04:48

of the process and that certainly brings

play04:50

out a lot of value to us also to add

play04:52

further we do have static analysis being

play04:55

defined further so static analysis can

play04:57

identify problems prior to Dynamic

play04:59

testing in while often requiring less

play05:01

effort since no test cases are required

play05:04

and tools are typically used static

play05:06

analysis is often incorporated into CI

play05:09

Frameworks while largely used to detect

play05:12

specific code defects static analysis

play05:15

also used to evaluate maintainability

play05:17

and security spelling Checkers and

play05:20

readability tools are other examples of

play05:23

static analysis tool however we do have

play05:25

more specialized tools available to deal

play05:27

with different languages but a generate

play05:29

static analysis tool would help you to

play05:31

analyze the code and find anomalies

play05:33

related to coding standard deviations or

play05:36

some mistakes like unreachable code the

play05:38

dead code the infinite Loop or the

play05:40

variables which are declared but never

play05:42

used or the variables which are used but

play05:45

never declared so all these kind of

play05:47

anomalies can be easily found by having

play05:49

use of this particular tool so put

play05:51

together introduction to static testing

play05:53

says that we have two different ways to

play05:55

do it that is reviews and static

play05:58

analysis to talk further of course we

play06:01

are talking about what kind of work

play06:02

products are good candidate of static

play06:05

testing that means is there any specific

play06:08

list of documentation or work product

play06:10

which are used or referred or reviewed

play06:14

using static testing but in simple words

play06:16

I would like to say that any such work

play06:19

product which you create as a part of

play06:21

sdlc including business work product the

play06:24

development work product or testing work

play06:26

products are by default a candidate of

play06:29

review be about a requirement be about a

play06:32

code beat about a test case test plan

play06:34

project plan any such document must be

play06:37

reviewed for a normaly because we just

play06:39

accepted and understood in chapter one

play06:42

as per the human psychology human is

play06:44

eror prone a human can go wrong anywhere

play06:47

no matter what they are doing and that

play06:48

mistake should be found before we

play06:51

further interpret it in other activities

play06:54

like design and development so when it

play06:57

comes to the work products which we must

play06:59

be making use of so almost any work

play07:01

product can be examined using static

play07:03

testing examples includes requirement

play07:05

specification document Source Code test

play07:08

plan test cases product backlog items

play07:11

test Charters project documentation

play07:14

contracts and models that means every

play07:16

single thing it's just not that there

play07:18

are some specific items which we review

play07:21

every single thing maybe of course uh

play07:23

not formally but informally you can

play07:25

certainly review them also to add uh any

play07:28

work product that can can be read and

play07:30

understood can be subject of a review

play07:33

however the static analysis work

play07:36

products need to structure against which

play07:38

they can be checked so not everything

play07:40

can certainly be just read and you know

play07:43

tested but uh things like code and

play07:45

control flow diagram data flow diagram

play07:47

or business models can be done with the

play07:49

help of the

play07:50

Tool Work products that are not

play07:53

appropriate for static testing include

play07:55

those that are difficult to interpret by

play07:57

human beings and that should not be

play07:59

analyzed by the tools so here basically

play08:02

the third party ex executable code due

play08:05

to legal reasons so we must be uh kind

play08:08

of like restricting ourself to that of

play08:10

those things which I must review before

play08:13

going into action but not getting into a

play08:16

legal sanction also our third segment is

play08:18

talking about what is the key value of

play08:20

having static testing being conducted as

play08:22

a part of the process because it's very

play08:24

important for one to know that how

play08:26

important and beneficial it could be

play08:28

when it comes to static testing however

play08:30

static testing is not something new it

play08:33

has been being conducted from a long

play08:34

time but being brought into attention

play08:37

recently for a few years that means

play08:39

people were not giving value to static

play08:41

testing at all thinking that it is a

play08:43

waste of time come on who does read the

play08:45

document we look forward to find the

play08:47

bugs but today people are talking about

play08:49

prevention of bugs which indeed was

play08:51

there from a long time because istqb did

play08:54

not write this for the first time it was

play08:57

written 20 years ago but it's just that

play08:59

the people who ignore a few things for

play09:01

some time but later realize that oh it

play09:04

was worthy enough to do and today we are

play09:06

talking about shift left you're talking

play09:08

about prevention my question is where

play09:10

were you 20 years

play09:12

ago anyway so I'm not here to have a

play09:15

dispute and controversial talks but uh

play09:18

let's have a word quickly to understand

play09:20

what is the value of static testing

play09:21

being conducted so static testing

play09:24

certainly can detect defects in an

play09:26

earliest phase of the sdlc fulfilling

play09:28

the princi principle of early testing

play09:30

that is testing saves cost and time that

play09:32

is early testing saves cost and time it

play09:35

can also identify defects which cannot

play09:37

be detected by Dynamic testing for

play09:39

example things like unreachable code

play09:41

design patterns not implemented as

play09:43

desired defects in non-executable work

play09:46

product also static testing provides the

play09:48

ability to evaluate the quality of and

play09:51

to build confidence in the work product

play09:53

by verifying the documented requirements

play09:56

the stakeholders can also make sure that

play09:59

these requirements describes their

play10:01

actual needs see again the point being

play10:03

made here is why would I go through a

play10:05

requirement altogether number one to

play10:07

find anomalies made by human mistakes

play10:10

second if the requirements are unclear

play10:12

incomplete inconsistent ambiguous vague

play10:15

that means cannot be achieved I can go

play10:17

and point this out and make sure that we

play10:19

have a very clear set of requirement

play10:21

with us because starting to implement

play10:23

and then realizing that this is not

play10:25

something we can achieve this is not

play10:27

something we can test is actually not

play10:29

correct because you'll be stuck or

play10:31

probably you would have wasted a lot of

play10:32

your time so in that context it is very

play10:34

important that you should look forward

play10:36

to review them in advance before you

play10:38

start working on them also

play10:41

Communications will uh be improved

play10:44

between the involved stakeholders for

play10:46

this reason it is recommended to involve

play10:48

a wide variety of stakeholder in static

play10:50

testing so indeed uh static testing

play10:53

brings multiple stakeholders together in

play10:55

order to review the provoked product

play10:57

commonly and in that context context we

play10:59

do have a better communication

play11:02

established among the team member and

play11:04

healthy relationship so static testing

play11:06

do claim that by doing static testing in

play11:08

your organization you can have healthier

play11:10

relationship among the team member the

play11:13

other point I think I missed since

play11:15

static testing can be performed early in

play11:16

the sdlc a shared understanding can be

play11:19

created among the involved stakeholders

play11:21

see uh sometime we do find that there

play11:23

are a lot of defects which are just

play11:26

created due to misunderstanding of the

play11:28

same piece of information inform between

play11:29

two different stakeholders for example

play11:32

there's a requirement I understand it as

play11:34

X and developers understand it as a why

play11:37

so until unless we both sit together and

play11:39

have a discussion on to we know we will

play11:41

not have a very common understanding at

play11:44

all so we will always be conflicting or

play11:46

probably misunderstanding things that

play11:48

what it should

play11:50

be talking about other point that is

play11:53

even though review can be costly to

play11:55

implement the overall project costs are

play11:57

usually much lower

play11:59

than when no reviews are performed

play12:02

because less time and effort needs to be

play12:04

spent on fixing defects later in the

play12:07

project so all you're trying to say that

play12:09

we may think that unnecessary cost has

play12:12

been involved by conducting reviews

play12:14

before doing Dynamic testing but if you

play12:17

find a defect in Dynamic testing which

play12:19

is related to misunderstanding of

play12:21

requirement you're actually putting that

play12:24

time of you know uh usage into a waste

play12:28

other around right so conducting static

play12:30

testing in the beginning certainly can

play12:32

save your overall cost of doing your

play12:35

work more effectively efficiently and on

play12:38

time by just having static testing in

play12:40

place so it's not that it is actually

play12:42

expensive it's just that we may feel it

play12:45

but over a long period of time or if you

play12:46

consider the whole project it is cheaper

play12:49

enough also to add uh the code defects

play12:52

can be detected using static analysis

play12:54

more efficiently than in Dynamic testing

play12:56

usually resulting in both fewer code

play12:59

defects and a lower lower overall

play13:02

development effort so certainly static

play13:04

analysis has reduced a lot of our

play13:06

productivity cost and the overall time

play13:10

taken to do that so it certainly brings

play13:12

a lot of value by having static testing

play13:14

in place and in practice so put together

play13:17

that's all from this particular tutorial

play13:19

team should you have anything else feel

play13:20

free to comment below I'm always there

play13:22

to address your queries and answer them

play13:24

well till then keep learning keep

play13:25

exploring keep understanding the context

play13:27

thanks for watching the video Beauty and

play13:29

happy

play13:34

[Music]

play13:40

learning

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

5.0 / 5 (0 votes)

Related Tags
ISTQBCertificationStatic TestingSoftware TestingQuality AssuranceDefect PreventionSDLCManual ReviewStatic AnalysisAgile TestingTutorial Series