2. 2
Software Testing
Testing is the process of exercising a program with
the specific intent of finding errors prior to delivery
to the end user.
المستخدم إلى تسليمها قبل األخطاء إليجاد محددة نية مع برنامج ممارسة عملية هو االختبار
النهائي
3. 3
What Testing Shows
errors
requirements conformance
performance
an indication
of quality
اختبار يظهر ما
errors أخطاء
requirements conformance التوافق متطلبات
performance أداء
an indication مؤشر
of quality الجودة
4. Strategic Approach االستراتيجي النهج
■ To perform effective testing, you should
conduct effective technical reviews. By doing
this, many errors will be eliminated before
testing commences.
■ Testing begins at the component level and
works "outward" toward the integration of the
entire computer-based system.
■ Different testing techniques are appropriate
for different software engineering approaches
and at different points in time.
■ Testing is conducted by the developer of the
software and (for large projects) an
independent test group.
■ Testing and debugging are different activities,
but debugging must be accommodated in
any testing strategy.
•
،الفعلي االختبار ألداء
مراجعات إجراء يجب
الفعالة التقنية
.
وبذلك
،
العد على القضاء سيتم
يد
بدء قبل األخطاء من
االختبار
.
•
مست على االختبار يبدأ
وى
وتعمل ،العنصر
"
الخارج
"
القائم النظام تكامل نحو
بالكام الكمبيوتر على
ل
.
•
المخت االختبار تقنيات
لفة
النه لمختلف مناسبة هي
ج
وعند البرمجيات هندسة
الوقت في مختلفة نقاط
المناسب
.
•
قبل من اختبار ويجري
البرنامج مطور
و
(
الكبيرة للمشاريع
)
مستقلة اختبار مجموعة
.
•
والتصحيح االختبار
ال ولكن ،مختلفة وأنشطة
التصح استيعاب من بد
يح
استراتيجية أي في
االختبار
.
5. 5
V & V
■ Verification refers to the set of tasks that ensure that
software correctly implements a specific function.
■ Validation refers to a different set of tasks that ensure that
the software that has been built is traceable to customer
requirements. Boehm [Boe81] states this another way:
■ Verification: "Are we building the product right?"
■ Validation: "Are we building the right product?"
التحقق
.
صحيح بشكل محددة وظيفة ينفذ البرنامج هذا تضمن التي المهام من مجموعة إلى يشير
.
صحة من التحقق
العم لمتطلبات عزوها يمكن بناؤها تم التي البرامج أن تضمن التي المهام من مختلفة مجموعة إلى يشير
الء
.
بوهم
[
Boe81]
أخرى طريقة هذه دول
:
التحقق
:
"
المنتج؟ حق على بناء نحن هل
"
التحقق
الصحة من
:
"
المناسب؟ المنتج على بناء نحن هل
"
Software testing is part of group of activities called
verification and validation that are involved in software
quality
Verification (Are the algorithms coded correctly?)
The set of activities that ensure that software correctly
implements a specific function or algorithm
Verification and Validation
6. Who Tests the Software?
developer independent tester
Understands the system
but, will test "gently"
and, is driven by
"delivery"
Must learn about the system,
but, will attempt to break it
and, is driven by quality
اختبارات يعملون الذين من
البرنامج؟
النظام يدرك
واختبار ،ولكن
"
بلطف
"
يقودها ،و
"
التسليم
"
مستقل اختبار
مطور
تعلم أن يجب
،النظام حول
ومحاولة ،ولكن
كسرها
الجودة يقودها ،و
7. 7
Testing Strategy
االختبار استراتيجية
System engineering
هندسة
النظم
Analysis modeling
نماذج
تحليل
Design modeling
التصميم نماذج
Code generation
رمز
جيل
Unit test
اختبار
وحدة
Integration test
اختبار
التكامل
Validation test
صحة من التحقق اختبار
System test
النظام اختبار
Code generation
Design modeling
Analysis modeling
System Engineering
Unit Testing
Integration Testing
Validation Testing
System Testing
8. Testing Strategy
■ We begin by ‘testing-in-the-small’ and move toward ‘testing-
in-the-large’
■ For conventional software
■ The module (component) is our initial focus
■ Integration of modules
■ For OO software
■ our focus when “testing in the small” changes from an individual
module (the conventional view) to an OO class that encompasses
attributes and operations and implies communication and
collaboration
االختبار استراتيجية
نبدأ
"
صغيرة داخل في اختبار
'
نحو والتحرك
"
كبيرة داخل في اختبار
"
للحصول
التقليدي البرنامج على
وحدة
(
عنصر
)
األساسي تركيزنا هو
دمج
يتبع وحدات
للحصول
البرنامج على
OO
عند تركيزنا
"
الصغيرة في اختبار
"
فردية وحدة من التغييرات
(
التقليدية النظر وجهة
)
الدرجة إلى
OO
والعمليات الصفات تشمل التي
والتعاون التواصل ويعني
9. Strategic Issues القضايا
االستراتيجية
■ Specify product requirements in a quantifiable manner long before testing
commences.
■ State testing objectives explicitly.
■ Understand the users of the software and develop a profile for each user
category.
■ Develop a testing plan that emphasizes “rapid cycle testing.”
■ Build “robust” software that is designed to test itself
■ Use effective technical reviews as a filter prior to testing
■ Conduct technical reviews to assess the test strategy and test cases
themselves.
■ Develop a continuous improvement approach for the testing process.
•
االختبار يبدأ طويلة فترة قبل الكمي للقياس قابلة بطريقة المنتج متطلبات تحديد
.
•
صريح بشكل للدولة اختبار أهداف
.
•
المستخدم فئة لكل صورة ووضع للبرنامج المستخدمين فهم
.
•
تؤكد التي االختبارات خطة وضع
"
السريع دورة اختبار
."
•
بناء
"
قوي
"
نفسه الختبار تصميمها تم التي البرامج
•
االختبار قبل تصفية كعامل الفعالة الفنية االستعراضات استخدام
•
أنفسهم االختبار وحاالت اختبار استراتيجية لتقييم فنية استعراضات إجراء
.
•
االختبار لعملية المستمر التحسين نهج وضع
.
14. 14
Top Down Integration
top module is tested with
stubs
stubs are replaced one at
a time, "depth first"
as new modules are integrated,
some subset of tests is re-run
A
B
C
D E
F G
أسفل إلى أعلى تكامل
أعلى مع وحدة اختبار يتم
15. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 15
Bottom-Up Integration
drivers are replaced one at a
time, "depth first"
worker modules are grouped into
builds and integrated
A
B
C
D E
F G
cluster
16. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 16
Sandwich Testing
Top modules are
tested with stubs
Worker modules are grouped into
builds and integrated
A
B
C
D E
F G
cluster
17. 17
Regression Testing
■ Regression testing is the re-execution of some subset of tests that have
already been conducted to ensure that changes have not propagated
unintended side effects
■ Whenever software is corrected, some aspect of the software
configuration (the program, its documentation, or the data that support it)
is changed.
■ Regression testing helps to ensure that changes (due to testing or for
other reasons) do not introduce unintended behavior or additional errors.
■ Regression testing may be conducted manually, by re-executing a
subset of all test cases or using automated capture/playback tools.
االنحدار اختبار
•
االنحدار اختبار
ا أن لضمان بالفعل أجريت التي االختبارات من فرعية لبعض التنفيذ إعادة هو
لم لتغييرات
المقصودة غير الجانبية اآلثار نشر
•
التكوين برامج جوانب بعض تغيير يتم ،البرنامج تصحيح يتم كلما
(
ا أو ،وثائقها ،البرنامج
تدعم التي لبيانات
ذلك
.)
•
التغييرات أن ضمان على يساعد االنحدار اختبار
(
أخرى ألسباب أو اختبار بسبب
)
الس يعرض ال
غير لوك
إضافية أخطاء أو مقصودة
.
•
تنفيذ إعادة خالل من ،يدويا االنحدار اختبار إجراء ويمكن
-
أ االختبار حاالت جميع من فرعية مجموعة
و
على القبض أدوات باستخدام
/
اآللي تشغيل
.
18. 18
Smoke Testing
■ A common approach for creating “daily builds” for product software
■ Smoke testing steps:
■ Software components that have been translated into code are integrated into
a “build.”
• A build includes all data files, libraries, reusable modules, and engineered
components that are required to implement one or more product functions.
■ A series of tests is designed to expose errors that will keep the build from
properly performing its function.
• The intent should be to uncover “show stopper” errors that have the highest
likelihood of throwing the software project behind schedule.
■ The build is integrated with other builds and the entire product (in its current
form) is smoke tested daily.
• The integration approach may be top down or bottom up.
•
نهج
إلنشاء مشترك
"
يوميا يبني
"
المنتج للبرمجيات
•
الخطوات اختبار التدخين
:
•
إلى رمز إلى ترجمت التي البرامج مكونات تتكامل
"
بناء
."
•
لتن المطلوبة الهندسية والمكونات ،االستخدام إلعادة قابلة وحدات ،والمكتبات البيانات ملفات كافة بناء ويشمل
أكثر أو واحد فيذ
المنتج الوظائف من
.
•
صح بشكل وظيفتها أداء من البناء على الحفاظ شأنها من التي األخطاء لكشف االختبارات من سلسلة تصميم تم
يح
.
•
األخطاء عن للكشف القصد يكون أن وينبغي
"
سدادة عرض
"
ال وراء البرمجيات مشروع رمي احتمال أعلى لديها التي
جدول
الزمني
.
•
كامل والمنتج يبني بناء اآلخر مع ويتكامل
(
الحالي بشكله
)
يوميا الدخان اختبار هو
.
•
أعلى إلى أسفل من أو أسفل إلى أعلى التكامل نهج يكون قد
.
19. 19
General Testing Criteria
■ Interface integrity – internal and external module interfaces are tested as
each module or cluster is added to the software
■ Functional validity – test to uncover functional defects in the software
■ Information content – test for errors in local or global data structures
■ Performance – verify specified performance bounds are tested
عامة اختبار معايير
واجهة
سالمة
-
يضاف
البرمجيات من مجموعة أو وحدة كل أن حيث وخارجية داخلية وحدة واجهات اختبار يتم
-
وظيفي صحة
-
البرنامج في وظيفية عيوب عن للكشف اختبار
المعلومات محتوى
-
العالمية أو المحلية البيانات هياكل في األخطاء عن اختبار
محددة أداء حدود من التحقق اختبار ويتم
-
األداء
20. 20
Object-Oriented Testing الشيئية اختبار
■ begins by evaluating the correctness and
consistency of the analysis and design models
■ testing strategy changes
■ the concept of the ‘unit’ broadens due to encapsulation
■ integration focuses on classes and their execution
across a ‘thread’ or in the context of a usage scenario
■ validation uses conventional black box methods
■ test case design draws on conventional methods,
but also encompasses special features
•
النماذج وتصميم تحليل واتساق صحة تقييم يبدأ
•
اختبار استراتيجية تغييرات
•
مفهوم
'
وحدة
'
التغليف أن المقرر يوسع
•
عبر وتنفيذها الطبقات على التكامل ويركز
'
الموضوع
'
االستخدام سيناريو سياق في أو
•
التقليدية األسود الصندوق صحة من التحقق أساليب يستخدم
•
خاصة ميزات أيضا تشمل ولكنها ،التقليدية األساليب على يرسم اختبار حالة تصميم
21. 21
Broadening the View of “Testing”
It can be argued that the review of OO analysis and design models
is especially useful because the same semantic constructs (e.g.,
classes, attributes, operations, messages) appear at the analysis,
design, and code level. Therefore, a problem in the definition of
class attributes that is uncovered during analysis will circumvent
side effects that might occur if the problem were not discovered
until design or code (or even the next iteration of analysis).
نظر وجهة توسيع
"
اختبار
"
تحليل استعراض أن القول ويمكن
OO
الداللية البنى نفس ألن خصوصا مفيد تصميم ونماذج
(
سبي على
ل
الرسائل ،والعمليات ،والصفات ،والطبقات ،المثال
)
التع ومستوى ،والتصميم التحليل في تظهر
البرمجية ليمات
.
ال اآلثار وااللتفاف تحليل خالل كشفت التي الصفات الطبقة تعريف في المشكلة فإن ،ولذلك
تحدث قد التي جانبية
رمز أو تصميم حتى المشكلة اكتشاف يتم لم إذا
(
التحليل من التالي التكرار حتى أو
.)
22. 22
Testing the CRC Model
1. Revisit the CRC model and the object-relationship model.
2. Inspect the description of each CRC index card to determine if a delegated
responsibility is part of the collaborator’s definition.
3. Invert the connection to ensure that each collaborator that is asked for service
is receiving requests from a reasonable source.
4. Using the inverted connections examined in step 3, determine whether other
classes might be required or whether responsibilities are properly grouped
among the classes.
5. Determine whether widely requested responsibilities might be combined into
a single responsibility.
6. Steps 1 to 5 are applied iteratively to each class and through each evolution
of the analysis model.
نموذج اختبارCRC
1
.
العالقة كائن ونموذج الطفل حقوق اتفاقية نموذج في النظر إعادة
.
2
.
القياسي الرقم بطاقة كل وصف في فحص
CRC
و متعاون التعريف من جزء تفويض مسؤولية إذا ما لتحديد
.
3
.
معقول مصدر من طلبات يتلقى للخدمة يطلب أن متعاون كل أن لضمان االتصال عكس
.
4
.
الخطوة في درست مقلوب االتصاالت طريق عن
3
المسؤوليا تجميع يتم كان إذا ما أو مطلوبة تكون قد األخرى الطبقات كانت إذا ما تحديد ،
ت
الطبقات بين صحيح بشكل
.
5
.
واحدة مسؤولية دمجها يمكن واسع نطاق على المطلوبة المسؤوليات كانت إذا ما تحديد
.
6
.
خطوات
1
-
5
التحليل نموذج تطور كل وخالل فئة لكل متكرر بشكل تطبيقها يتم
.
23. OO Testing Strategy
■ class testing is the equivalent of unit testing
■ operations within the class are tested
■ the state behavior of the class is examined
■ integration applied three different strategies
■ thread-based testing—integrates the set of classes required to
respond to one input or event
■ use-based testing—integrates the set of classes required to respond
to one use case
■ cluster testing—integrates the set of classes required to demonstrate
one collaboration
وحدة اختبار يعادل ما هو الطبقة اختبار
الطبقة داخل عمليات اختبار ويتم
الطبقة من الدولة سلوك فحص يتم
مختلفة استراتيجيات ثالث تطبيق دمج
الحدث أو واحد مدخل على للرد المطلوبة الطبقات من مجموعة يدمج االختبار موضوع على القائم
واحد استخدام حالة على للرد المطلوبة الطبقات من مجموعة يدمج االختبار المستندة استخدام
احدة التعاون إلثبات المطلوبة الطبقات من مجموعة يدمج االختبار مجموعة
24. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 24
WebApp Testing - I
■ The content model for the WebApp is reviewed to
uncover errors.
■ The interface model is reviewed to ensure that all
use cases can be accommodated.
■ The design model for the WebApp is reviewed to
uncover navigation errors.
■ The user interface is tested to uncover errors in
presentation and/or navigation mechanics.
■ Each functional component is unit tested.
25. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 25
WebApp Testing - II
■ Navigation throughout the architecture is tested.
■ The WebApp is implemented in a variety of different
environmental configurations and is tested for compatibility
with each configuration.
■ Security tests are conducted in an attempt to exploit
vulnerabilities in the WebApp or within its environment.
■ Performance tests are conducted.
■ The WebApp is tested by a controlled and monitored
population of end-users. The results of their interaction with the
system are evaluated for content and navigation errors,
usability concerns, compatibility concerns, and WebApp
reliability and performance.
26. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 26
MobileApp Testing
■ User experience testing – ensuring app meets
stakeholder usability and accessibility expectations
■ Device compatibility testing – testing on multiple devices
■ Performance testing – testing non-functional
requirements
■ Connectivity testing – testing ability of app to connect
reliably
■ Security testing – ensuring app meets stakeholder
security expectations
■ Testing-in-the-wild – testing app on user devices in
actual user environments
■ Certification testing – app meets the distribution
standards
27. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 27
High Order Testing
■ Validation testing
■ Focus is on software requirements
■ System testing
■ Focus is on system integration
■ Alpha/Beta testing
■ Focus is on customer usage
■ Recovery testing
■ forces the software to fail in a variety of ways and verifies that recovery is
properly performed
■ Security testing
■ verifies that protection mechanisms built into a system will, in fact, protect it
from improper penetration
■ Stress testing
■ executes a system in a manner that demands resources in abnormal quantity,
frequency, or volume
■ Performance Testing
■ test the run-time performance of software within the context of an integrated
system
28. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 28
Debugging: A Diagnostic Process
29. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 29
The Debugging Process
30. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 30
Debugging Effort
time required
to diagnose the
symptom and
determine the
cause
time required
to correct the
error
and conduct
regression tests
31. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 31
Symptoms & Causes
symptom
cause
symptom and cause may be
geographically separated
symptom may disappear when
another problem is fixed
cause may be due to a
combination of non-errors
cause may be due to a system
or compiler error
cause may be due to
assumptions that everyone
believes
symptom may be intermittent
32. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 32
Consequences of Bugs
damage
mild
annoying
disturbing
serious
extreme
catastrophic
infectious
Bug Type
Bug Categories: function-related bugs,
system-related bugs, data bugs, coding bugs,
design bugs, documentation bugs, standards
violations, etc.
33. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 33
Debugging Techniques
brute force / testing
backtracking
induction
deduction
34. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 34
Correcting the Error
■ Is the cause of the bug reproduced in another part of the program? In
many situations, a program defect is caused by an erroneous pattern
of logic that may be reproduced elsewhere.
■ What "next bug" might be introduced by the fix I'm about to make?
Before the correction is made, the source code (or, better, the design)
should be evaluated to assess coupling of logic and data structures.
■ What could we have done to prevent this bug in the first place? This
question is the first step toward establishing a statistical software
quality assurance approach. If you correct the process as well as the
product, the bug will be removed from the current program and may
be eliminated from all future programs.
35. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e
(McGraw-Hill 2014). Slides copyright 2014 by Roger Pressman. 35
Final Thoughts
■ Think -- before you act to correct
■ Use tools to gain additional insight
■ If you’re at an impasse, get help from someone else
■ Once you correct the bug, use regression testing to
uncover any side effects