0% found this document useful (0 votes)
79 views

Introduction To Software Testing - Lesson 1

The document provides an introduction to software testing, including definitions of key terms and concepts. It discusses what software testing is, why it is important, and common testing terms. It also outlines typical career paths and roles for testers and important technical and non-technical skills.

Uploaded by

Gunay Mva
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views

Introduction To Software Testing - Lesson 1

The document provides an introduction to software testing, including definitions of key terms and concepts. It discusses what software testing is, why it is important, and common testing terms. It also outlines typical career paths and roles for testers and important technical and non-technical skills.

Uploaded by

Gunay Mva
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Introduction to

Software Testing

Parvin Yusifli
What is 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.
What is Software Testing?

When we say testing, we think of it as:


1. A process of verifying and validating a software, website or application
2. Ensuring product is bug-free**
3. Ensuring the product meets business requirements
4. Ensuring the product meets technical requirements
5. Ensuring the product efficiently handles all use cases

OFFICIAL DEFINITION (Source: ISQTB)


The process consisting of all life cycle activities, both static and dynamic, concerned with
planning, preparation, and evaluation of software products and related work products to
determine that they satisfy specified requirements, to demonstrate that they are fit for purpose
and to detect defects.
Why is Software Testing
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?
Test vacibdir, çünki proqram səhvləri bahalı və ya hətta təhlükəli ola bilər. Proqram səhvləri
potensial olaraq pul və insan itkisinə səbəb ola bilər və tarix belə nümunələrlə doludur.

● In April 2015, Bloomberg terminal in London crashed due to software glitch affected
more than 300,000 traders on financial markets. It forced the government to postpone a
3bn pound debt sale.
● Nissan cars recalled over 1 million cars from the market due to software failure in the
airbag sensory detectors. There has been reported two accident due to this software
failure.
● Starbucks was forced to close about 60 percent of stores in the U.S and Canada due to
software failure in its POS system. At one point, the store served coffee for free as they
were unable to process the transaction.
● In 2015 fighter plane F-35 fell victim to a software bug, making it unable to detect
targets correctly.
● China Airlines Airbus A300 crashed due to a software bug on April 26, 1994, killing 264
innocents live
Roles and Responsibilities of a Tester

Depending on the company and its needs, the roles


and responsibilities of Manual QA may vary. These
may include:

● Test environment setup


● Participation in meetings
● Analysis of customer requests
● Software bug tracking
● Analysis and execution of test cases
● Maintaining contact with test managers
Software Testing as a Career Path

Your Software Testing career as a software tester


(QA Analyst) in a typical CMMI level 5 company will
look like the 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)
Software Testing as a Career Path
Non-Technical Skills

● Analytical skills: A good software tester should have sharp analytical skills. Analytical skills will help break up a complex
software system into smaller units to gain a better understanding and create test cases. Not sure that you have good
analytical skills – Refer this link – if you can solve at least ONE problem you have excellent analytical skills.
● Communication skill: A good software tester must have good verbal and written communication skill. Testing artifacts
(like test cases/plans, test strategies, bug reports, etc.) created by the software tester should be easy to read and
comprehend. Dealing with developers (in the event of bugs or any other issue) will require a shade of discreetness and
diplomacy.
● Time Management & Organization Skills: Testing at times could be a demanding job especially during the release of code.
A software tester must efficiently manage workload, have high productivity, exhibit optimal time management, and
organization skills
● GREAT Attitude: To be a good software tester you must have a GREAT attitude. An attitude to ‘test to break’, detail
orientation, willingness to learn and suggest process improvements. In the software industry, technologies evolve with
an overwhelming speed, and a good software tester should upgrade his/her technical Software testing skills with the
changing technologies. Your attitude must reflect a certain degree of independence where you take ownership of the
task allocated and complete it without much direct supervision.
● Passion: To Excel in any profession or job, one must have a significant degree of the passion for it. A software tester must
have a passion for his / her field. BUT how do you determine whether you have a passion for software testing if you have
never tested before? Simple TRY it out and if software testing does not excite you switch to something else that holds
your interest.
Software Testing as a Career Path
Technical Skills

● Basic knowledge of Database/ SQL: Software Systems have a large amount of data in the background. This
data is stored in different types of databases like Oracle, MySQL, etc. in the backend. So, there will be
situations when this data needs to be validated. In that case, simple/complex SQL queries can be used to
check whether proper data is stored in the backend databases.
● Basic knowledge of Linux commands: Most of the software applications like Web-Services, Databases,
Application Servers are deployed on Linux machines.So it is crucial for testers to have knowledge about Linux
commands.
● Knowledge and hands-on experience of a Test Management Tool:Test Management is an important aspect of
Software testing. Without proper test management techniques, software testing process will fail. Test
management is nothing but managing your testing related artifacts.
● Knowledge and hands-on experience of any Defect Tracking tool- Defect Tracking and Defect life cycle are key
aspects of software testing. It is extremely critical to managing defects properly and track them in a systematic
manner. Defect tracking becomes necessary because the entire team should know about the defect including
managers, developers, and testers. Several tools are used to log defects including QC, Bugzilla, Jira, etc.
● Knowledge and hands-on experience of Automation tool: If you see yourself as an “Automation tester” after a
couple of years working on manual testing, then you must master a tool and get in-depth, hands-on
knowledge of automation tools.
Common Testing terms

Error: A mistake, misconception, or misunderstanding made by humans that leads to


discrepancy

Defect: The variation between the actual results and expected results

Bug/Ticket/Incident: Synonyms of the word "Defect", used interchangeably in companies. For


example some companies call it a "Bug" if its detected by real users

Failure: Anything that causes the software to fail to perform its required function

Debugging: The process of finding, analyzing and removing the causes of failures in software.
Common Testing terms

Verification: The process of evaluating work-products (not final product) to determine whether
they meet the specified requirements. "Are we building the product right?"

Validation: The process of evaluating software during or at end of development process to


determine whether it satisfies specified business requirements. "Are we building the right
product?

Black Box Testing: Testing without any reference to internal structure of component/system

White Box Testing: Testing based on an analysis of internal structure of a component/system

Severity: Indicates the degree of impact the defect has on functionality of component or
system (Tester's evaluation)

Priority: Indicates how quickly the bug should be fixed. (Business's evaluation)
7 Software Testing Principles
Principle 1 - Exhaustive testing is not possible

1) Hərtərəfli test mümkün deyil

Bəli! Hərtərəfli test mümkün deyil. Əvəzində, tətbiqin risk qiymətləndirilməsi əsasında optimal
sınaq miqdarına ehtiyacımız var.

Milyon dollarlıq sual isə budur ki, bu riski necə müəyyənləşdirirsiniz?

Buna cavab vermək üçün məşq edək

Sizcə, Əməliyyat sisteminizin uğursuzluğuna ən çox hansı əməliyyat səbəb ola bilər

Əminəm ki, çoxunuz eyni anda 10 fərqli proqram açaraq təxmin edərdiniz.

Beləliklə, əgər siz bu Əməliyyat sistemini test edirsinizsə, onda siz başa düşərdiniz ki, çox funksiyalı
fəaliyyətdə qüsurlar aşkar edilə bilər və hərtərəfli sınaqdan keçirilməlidir ki, bu da bizi növbəti
prinsipimiz olan Qüsurların Klasterləşdirilməsinə gətirir.
7 Software Testing Principles
Principle 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
7 Software Testing Principles
Principle 2 - Defect Clustering

Az sayda modulun aşkar edilmiş qüsurların əksəriyyətini ehtiva etdiyini bildirən Qüsurların
Klasterləşdirilməsi. Bu, Pareto Prinsipinin proqram təminatının sınaqdan keçirilməsinə tətbiqidir:
problemlərin təxminən 80%-i modulların 20%-də rast gəlinir.

Təcrübə ilə belə riskli modulları müəyyən edə bilərsiniz. Amma bu yanaşmanın öz problemləri
var

Eyni testlər təkrar-təkrar edilirsə, nəticədə eyni sınaq halları artıq yeni səhvlər tapmayacaq.
7 Software Testing Principles
Principle 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.
7 Software Testing Principles
Principle 3 - Pesticide Paradox

Əkinçilik zamanı böcəkləri məhv etmək üçün eyni pestisid qarışığının təkrar istifadəsi zaman
keçdikcə həşəratların pestisidlərə qarşı müqavimətini inkişaf etdirəcək, beləliklə, pestisidlər
həşəratlar üzərində təsirsiz olacaq. Eyni şey proqram testinə də aiddir. Eyni təkrar testlər dəsti
aparılarsa, metod yeni qüsurları aşkar etmək üçün faydasız olacaqdır.

Bunun aradan qaldırılması üçün test işlərinə mütəmadi olaraq yenidən baxılmalı və daha çox
qüsur tapmağa kömək etmək üçün yeni və fərqli test nümunələri əlavə edilməlidir.

Testçilər sadəcə olaraq mövcud test üsullarından asılı ola bilməzlər. O, sınaqları daha effektiv
etmək üçün mövcud metodları təkmilləşdirməyə daim diqqət yetirməlidir. Ancaq bütün bu tər
və sınaqdan sonra belə, siz heç vaxt məhsulunuzun səhvsiz olduğunu iddia edə bilməzsiniz.
7 Software Testing Principles
Principle 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.
7 Software Testing Principles
Principle 4 - Testing shows a presence of defects

Beləliklə, test prinsipi bildirir ki, - Test qüsurların mövcudluğundan danışır və qüsurların
olmaması haqqında danışmır. Yəni Testing proqram təminatında aşkar edilməmiş qüsurların
qalma ehtimalını azaldır, lakin heç bir qüsur aşkar edilməsə belə, bu, düzgünlüyün sübutu deyil.

Bəs əgər bütün ehtiyat tədbirləri görərək çox çalışsanız və proqram məhsulunuzu 99% səhvsiz
etsəniz nə olacaq. Proqram təminatı isə müştərilərin ehtiyac və tələblərinə cavab vermir.

Bu, bizi növbəti prinsipimizə aparır, hansı ki, səhvin olmaması(Absence of Defects).
7 Software Testing Principles
Principle 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
7 Software Testing Principles
Principle 5 - Absence of Error – fallacy

Ola bilsin ki, 99% səhvsiz olan proqram hələ də istifadə edilə bilməz. Bu, sistem səhv tələb üçün
hərtərəfli sınaqdan keçirildikdə baş verə bilər. Proqram təminatının sınaqdan keçirilməsi sadəcə
qüsurları tapmaq deyil, həm də proqram təminatının biznes ehtiyaclarına cavab verdiyini
yoxlamaq üçündür. Xətanın olmaması səhvdir, yəni sistem qurulması yararsız olduqda və
istifadəçinin ehtiyac və tələblərini yerinə yetirmədikdə qüsurların tapılması və aradan
qaldırılması kömək etmir.

Bu problemi həll etmək üçün testin növbəti prinsipi Erkən Test olduğunu bildirir
7 Software Testing Principles
Principle 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
7 Software Testing Principles
Principle 6 - Early Testing

Erkən Test – Test Proqram təminatının İnkişafı Həyat Dövründə mümkün qədər tez başlamalıdır.
Beləliklə, tələblər və ya dizayn mərhələsindəki hər hansı qüsurlar erkən mərhələlərdə ələ
keçirilir. Testin ilkin mərhələsində qüsuru düzəltmək daha ucuz başa gəlir. Bəs sınağa nə qədər
tez başlamaq lazımdır? Tələblər müəyyən edildikdən sonra problemləri tapmağa başlamaq
tövsiyə olunur.
7 Software Testing Principles
Principle 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 Software Testing Principles
Principle 7 - Testing is context dependent

Test kontekstdən asılıdır, bu o deməkdir ki, e-ticarət saytını sınaqdan keçirmə üsulu rəfdən
kənar tətbiqi testindən fərqli olacaq. Bütün hazırlanmış proqram təminatı eyni deyil. Tətbiq
növündən asılı olaraq fərqli yanaşma, metodologiya, texnika və test növlərindən istifadə edə
bilərsiniz. Məsələn, pərakəndə satış mağazasındakı hər hansı bir POS sistemi bankomatın
sınaqdan keçirilməsindən fərqli olacaq.
7 Software Testing Principles
Principle 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.
Thanks!

You might also like