Testing Summary
Testing Summary
لو السوفت وير مش جودته كويسة ،ده بيأدي لمشاكل كتير زي زيادة األعطال ،ارتفاع تكاليف التطوير ،وتأخير إطالق السوفت
وير .علشان كده الزم نهتم بشوية صفات رئيسية:
.1الوظيفية (Functionality):يعني السوفت وير يقدر يعمل كل اللي مطلوب منه زي ما هو متوقع.
.2الموثوقية (Reliability):إن السوفت وير يشتغل من غير مشاكل أو أعطال لفترة طويلة.
.3سهولة االستخدام (Usability):السوفت وير يكون سهل للمستخدمين يفهموه ويشتغلوا عليه بسهولة.
.4الكفاءة (Efficiency):إنه يستخدم الموارد بشكل كويس ،يعني يشتغل بسرعة وما ياخدش مساحة أو طاقة كتير.
.5قابلية الصيانة (Maintainability):إنه يكون سهل لو حبينا نعدله أو نعمل صيانة وتحديثات.
.6قابلية النقل (Portability):إنه يشتغل على أجهزة وبيئات مختلفة من غير ما يحتاج تعديالت كبيرة.
-كل ما الشركة تحط Resourcesأكتر في ،Testingبتقل احتمالية حدوث ،Failuresبس في نفس الوقت تكلفة الـTesting
بتزيد.
-من ضمن الحاجات المهمة في Risk Managementهي إن الشركة تقارن بين تكلفة الـ Failureالمتوقعة وتكلفة الـ.Testing
وبيتم حساب التكلفة المتوقعة كالتالي:
)Expected Cost = (Risk of Failure) × (Cost of Failure
الكالم ده بيساعد الشركات إنها تاخد قرار صح بخصوص الموارد اللي هيحتاجوها في الـ ،Testingعشان يحققوا Balanceبين
تقليل الـ Risksوالتكاليف الكلية ،ويوصلوا للجودة اللي محتاجينها في الـ.Software
في أي ،Businessبيبقى فيه تكاليف على المدى القصير والبعيد مرتبطة بحدوث Failure.
التكاليف على المدى القصير غالبا ً بتكون مرتبطة بإصالح المشكلة ،لكن كمان ممكن تشمل خسارة Revenueلو تأخر •
Product Release.
التكاليف على المدى البعيد بتكون غالبا ً بسبب فقدان ،Reputationوكمان تأثيرها على Salesالمرتبطة. •
بمعني
لما يحصل **( **Failureيعني مشكلة في المنتج أو الخدمة) ،ده بيعمل تكاليف للشركة على نوعين:
** .1المدى القصير** :التكاليف دي بتكون عشان يصلحوا المشكلة اللي حصلت ،ولو المنتج اتأخر عن ميعاده بسبب المشكلة دي،
ممكن الشركة تخسر فلوس (أو ** )**Revenueألنها مبيعتش المنتج في الميعاد اللي الناس مستنياه فيه.
** .2المدى البعيد** :هنا التكاليف بتيجي من حاجة زي فقدان السمعة (** .)**Reputationلو المنتج فيه مشاكل كتير ،الناس
مش هتثق في الشركة تاني ،وده هيأثر على مبيعاتها (** )**Salesألن الناس هتبدأ تدور على بدائل تانية.
:**Mistakes** .1دي أخطاء بيعملها ** .**Software Developersبتكون موجودة في دماغهم وبتسبب عيوب أو
** **Faultsفي **developer >– .**Source Code
:**Faults** .2دي العيوب اللي بتبقى موجودة في ** ،**Source Codeوبتكون نتيجة لـواحد أو أكتر من **.**Mistakes
و** **Faultsممكن تؤدي لحدوث ** **Failuresأثناء تشغيل البرنامج.
→ tester
:**Failures** .3دي األعراض اللي بتظهر بسبب ** ،**Faultوبتكون عبارة عن سلوك غلط أو مخالف للمواصفات في
** .**Softwareولما ** **Softwareيكتشف ** ،**Failureغالبا ً بيظهر في شكل **.**Error Code
→ customer
Types of fault :
Algorithmic .1
Syntax .2
Documentation .4
Stress or Overload .5
7. Timing or Co-ordination
Throughput or Performance .8
Recovery .5
Static Verification (or Static Analysis) involves reviewing the code without executing it to find
faults.
It can be
A mathematical approach (symbolic execution).
A formal approach (symbolic verification).
Main Problems:
Time-consuming.
Only suitable for certain cases.
Summary in English:
وده ألن العملية دي بتتطلب مراجعة،Walk-through أو التفتيش على الكود بيعتبر أكثر شموالً من الـCode Reviews الـ
. أعمق للكود أو المواصفات
الـ Inspectionبتكون عملية رسمية ودقيقة أكتر ،وبتعتمد على فريق مكون من أربع أشخاص على األقل .كل شخص في الفريق ليه
دور مهم في المراجعة.
المشاركين الرئيسيين:
.1المصمم ):(Designer
.aهو الشخص اللي كتب الكود أو اللي صمم البرنامج.
.bمهمته إنه يشرح الكود لبقية الفريق ويفسر أي قرارات تم اتخاذها أثناء الكتابة.
.2المختبر ):(Tester
.aهو الشخص اللي دوره يضمن إن الكود ده متوافق مع معايير الجودة وبيعمل االختبارات الالزمة لضمان جودته.
.bبيبقى مسؤول عن التأكد إن الكود هينفذ الوظائف المطلوبة منه بدون ما يظهر أخطاء.
الـ Code Inspectionعادةً بتكون أكثر رسمية وبتكون فيها قائمة فحص ) (checklistمحددة علشان تضمن أن كل الجوانب
المهمة في الكود تم مالحظتها .
Summary in English:
الـ ) Inspectionتفتيش الكود( بيتكون من خمس مراحل رسمية ،كل مرحلة ليها هدف معين علشان نقدر نعمل فحص دقيق للكود أو
المواصفات .
في المرحلة دي ،الشخص المسؤول عن كتابة الكود أو التصميم ،اللي هو المصمم ) ،(Designerبيجهز وثيقة نظرة عامة •
عن المنتج.
الوثيقة دي بتحتوي على تفاصيل مهمة عن المواصفات أو التصميم أو الكود أو الخطة ،وهي بتكون األساس اللي هنعتمد عليه •
في الفحص.
الهدف هنا هو تقديم صورة عامة للمنتج عشان الفريق يقدر يبدأ يراجع الكود أو المواصفات بنا ًء على فكرة واضحة عن •
المنتج.
في المرحلة دي ،المختبر ) (Testerبيبدأ يقرأ الوثيقة بعناية ويفهمها بالتفصيل. •
الزم يكون عنده قائمة فحص ) (checklistتحتوي على أنواع األخطاء الشائعة في التفتيشات دي ،ويكون األخطاء دي •
مرتبة حسب التكرار.
الفكرة هنا هي إن المختبر يركز على األخطاء األكثر شيوعا ً ويحاول يكتشفها أثناء المراجعة. •
المرحلة ( Inspection :3التفتيش الفعلي)
في المرحلة دي بيحصل اجتماع بين الفريق ،وفيه بيتم عمل Walk-throughللوثيقة أو الكود المراجع. •
الهدف من االجتماع ده هو التأكد من إن كل بند في قائمة الفحص ) (checklistتم تغطيته بشكل كامل. •
كل شخص في الفريق بيدقق في النقاط المحددة في القائمة عشان يتأكد من إنها مطبقة بشكل صحيح. •
بعد االجتماع ،لو تم اكتشاف أخطاء أو قضايا خالل الـ ،Walk-throughالزم يتم حلها. •
في المرحلة دي ،الفريق يبدأ في إصالح كل األخطاء اللي تم تحديدها ،وده يشمل إعادة كتابة أجزاء من الكود أو تعديل •
المواصفات حسب الحاجة.
في المرحلة األخيرة ،قائد الفريق اللي بيقود التفتيش الزم يتأكد من إن كل القضايا تم حلها. •
الزم يتأكد من إنه مفيش حاجة مفتوحة أو ناقصة. •
وأيضاً ،بيجب عليه إعداد تقرير نهائي يعرض فيه كل األخطاء اللي تم اكتشافها وكيف تم حلها ،وأي تفاصيل تانية مهمة عن •
العملية.
Summary in English:
The Designer prepares an overview document detailing the product :Overview - Stage 1
or plan. ,code ,design ,specifications
The Tester must thoroughly understand the document and have a :Preparation - Stage 2
checklist of common fault types ranked by frequency to guide their focus during the review.
A meeting is held to walk through the document and ensure every item in :Inspection - Stage 3
the checklist is covered.
all identified faults and issues are resolved. ,After the meeting :Rework - Stage 4
The leader ensures all issues have been addressed and prepares a final :Follow-up - Stage 5
report.
الطرق الرسمية ) (Formal Methodsبتعتمد على أدوات رياضية لتحليل الكود والتصاميم عشان نقدر نثبت صحة الكود أو التصميم
بشكل دقيق .الهدف منها هو التأكد إن الكود أو التصميم بيحقق الخصائص المطلوبة وبيشتغل بالشكل الصحيح بدون أخطاء.
:#Microsoft’s Specده مثال على أداة رياضية من #Spec .Microsoftهي لغة برمجة تعتبر امتداد للغة ،#C •
الطرق دي بتعتبر دقيقة جداً ألنها مش بتعتمد على التجارب أو االختبارات التقليدية ،ولكن على إثباتات رياضية ،عشان نثبت إن الكود
بيشتغل بشكل صحيح في كل الحاالت الممكنة.
Summary in English:
Formal Methods use mathematical tools to prove the correctness of designs and •
source code.
Microsoft’s Spec# is a tool that extends C# :Example •
من منظور االختبار ،في نوعين أساسيين من الطرق الرسمية اللي بنستخدمها لتحليل الكود:
Program verificationبيتم بشكل ثابت عشان نتأكد إن البرنامج بيحقق المواصفات اللي تم تحديدها. •
فيه مستويين من التحقق: •
oالمستوى العالي ( :)High levelده بيتم علشان نتحقق من إن الطرق في البرنامج متناسقة مع بعض وإنها
تتفاعل بشكل صحيح علشان تحقق مواصفات الفئة (class specification).
oالمستوى المنخفض ( :)Low levelده بيتم علشان نتحقق من إن الكود الخاص بكل طريقة ()method
بيحقق المواصفات الخاصة بها.
Model checkingبيكون على تصميم مجرد ،بينما Program verificationبيكون على البرنامج نفسه لضمان •
تحقيقه للمواصفات.
Summary in English:
ensuring it ,Model Checking is used to verify the correctness of an abstract design .1
meets requirements.
:Program Verification checks that a program meets its specification .2
Ensures methods are consistent and interact correctly to meet class :High level .a
specifications.
Ensures the code for each method satisfies its specification. :Low level .b
شرح Advantages & Disadvantagesللمراجعة الثابتة )Static Verification) :
المزايا:
التحقق الثابت بيوفر فائدة كبيرة ألنه يثبت صحة البرنامج لجميع قيم المدخالت المحتملة ،مش بس المدخالت اللي تم •
اختيارها لالختبار.
ً
oيعني ،البرنامج لو اتحقق ثابتا ،هيكون صحيح في جميع الحاالت الممكنة ،سواء كانت حاالت اختبارات معينة أو
حاالت غير متوقعة .
العيوب:
Summary in English:
not just ,Static verification proves correctness for all possible input values :Advantages
selected test cases.
:Disadvantages
Some cases require assistance to complete proofs.
Not all program constructs are supported by most tools.
Tools tend to lag behind programming languages.
واحد من العمليات المحتملة هو استخدام أداة التحقق من البرنامج بدالً من أغلب اختبارات الوحدة ).(Unit Tests •
oالفكرة هنا إنك ممكن تعتمد على التحقق الثابت عشان تتأكد من صحة البرنامج في بداية مراحل التطوير بدالً من
االعتماد على اختبارات الوحدة التقليدية اللي بتختبر حاالت معينة من المدخالت.
oده ممكن يقلل من وقت االختبار ويزيد من موثوقية البرنامج ألنه بيغطي جميع الحاالت الممكنة.
Summary in English:
One possible process is using a program verifier in place of :Use in Software Development
most unit tests for ensuring correctness in early stages of development.
Dynamic Verificationأو اللي بنسميه اختبار البرمجيات ) (Software Testingبيهدف لتأكيد إن البرنامج •
بيشتغل بشكل صحيح.
ده بيتم عن طريق تنفيذ البرنامج فعليا ومالحظة النتائج عشان نتأكد إنها متوافقة مع اللي متوقعينه. •
إزاي بيتم؟
Summary in English:
Dynamic Verification (Software Testing) confirms the program’s correct operation by executing
it.
Test data (input and expected output values) is derived from a set of test cases.
الفرق بين Black-Boxو White-Box Testing:
Summary in English:
Tests without knowledge of the internal code; focuses on input and output. :Black-Box Testing
Tests with detailed knowledge of the internal code; focuses on code logic. :White-Box Testing
Applied to:
Black-Box Testing:
White-Box Testing:
Summary in English:
معناها :إن المطور ماعملش حاجة كان المفروض تتعمل ،زي إنه ينسى يضيف وظيفة معينة أو يسيب جزء من المواصفات •
مش منفذ.
المثال :في مشروع ،لو كان مطلوب إن البرنامج يضيف خاصية تسجيل دخول ومافيش أي كود ليها ،ده بيعتبر خطأ إغفال. •
العالقة بـ :White-box Testing •
oألن االختبار ده بيركز على الكود المكتوب ،ممكن ما يالحظش إن فيه حاجات ناقصة أو غير مكتملة في
المواصفات .
معناها :المطور عمل حاجة غلط أو أضاف حاجة زيادة عن المطلوب. •
المثال :لو البرنامج بيضيف خاصية مش موجودة في المواصفات ،أو لو الوظيفة المكتوبة بتخرج نتيجة مش صحيحة. •
العالقة بـ :Black-box Testing •
ً
oالنوع ده بيركز على التحقق من الوظائف مقارنة بالمواصفات ،وبالتالي ممكن ما يكتشفش المشاكل اللي جوا الكود
أو وجود حاجات زيادة عن اللزوم.
Errors of Omission: .1
Occur when required functionality is missing. .a
not ,Common in White-box Testing because it focuses on the written code .b
what’s missing.
Errors of Commission: .2
Occur when there is extra or incorrect functionality. .a
Common in Black-box Testing because it focuses on functionality without .b
delving into the internal code structure.
Key Weaknesses:
الجزء ده بيتكلم عن Test Approachesأو طرق االختبار اللي بنستخدمها لقياس جودة البرمجيات ،وبيوضح 3طرق أساسية في
االختبار:
الفكرة األساسية هنا إنك تختبر البرنامج بنا ًء على المواصفات )التعليمات أو المتطلبات( اللي مكتوبة من غير ما تشوف أو •
تدخل في تفاصيل الكود اللي مكتوب.
يعني باختصار ،بنعمل اختبارات على أساس "المواصفات" بتاعة البرنامج بس ،مش بنشوف الكود اللي بيشتغل من وراه . •
الهدف هنا هو التأكد من أن كل قيمة في المدخالت ) (inputsبتترجم بشكل صحيح وتدي نتائج صحيحة في المخرجات •
)outputs).
فيه شوية طرق لعمل االختبارات دي زي: •
oاالختبار ضد المواصفات :يعني بنشوف إذا كانت النتائج بتتوافق مع اللي مكتوب في المواصفات.
oاستخدام معايير تغطية اختبار بناء على المواصفات :بتتأكد إن كل حاجة مكتوبة في المواصفات معمولة بشكل
صحيح.
oتطوير حاالت اختبار مشتقة من المواصفات :يعني بنعمل اختبارات على أساس ما هو مكتوب في الوثائق.
العيب هنا: •
من الصعب قياس درجة التغطية الختبارات Black-Boxتلقائيًا .يعني صعب نعرف إذا كنا غطينا كل حاجة في o
المواصفات وال أل.
بنعتمد على جودة عمل الشخص اللي بيعمل االختبار بشكل كبير عشان نقدر نحقق نتائج دقيقة .لو االختبار مش o
مضبوط ،النتيجة هتكون مش دقيقة.
ده نوع آخر من االختبارات اللي بيركز على فحص الكود نفسه ،بمعنى إنك تختبر البرمجيات بنا ًء على التنفيذ الفعلي للكود. •
هنا بنشوف هل الكود بيشتغل صح وال أل ،وده بيضمن إن كل جزء من الكود اتنفذ بشكل صحيح. •
.
عملية تصميم االختبار ) (Test Design Processهي الخطوات اللي بنمشي عليها عشان نختبر السوفت وير بشكل فعال .الهدف
األساسي هو إننا نحدد البيانات اللي هنستخدمها في االختبار ) (Test Dataونحدد المدخالت ) (Inputsوالمخرجات المتوقعة
)Expected Outputs).
.1تحليل البرنامج اللي هنختبره )SUT): - Analysing the Software Under Test
.aالزم األول نعمل تحليل للبرنامج اللي هنختبره ،سواء كان عن طريق تحليل الكود المصدر ) (Source Codeأو
المواصفات )Specifications).
.bالتحليل ده بيطلع نتائج بنستخدمها في تحديد حاالت االختبار.
.2توليد حاالت االختبار ) Generating Test Cases):
.aحاالت االختبار هي الحاجات اللي المفروض "نتأكد منها" أثناء االختبار.
.bتوليد الحاالت بيشمل تحديد الحاالت دي ووصف االختبارات اللي تغطيها.
مالحظات:
:مالحظات إضافية
:(Unique Identifier) معرف فريد ّ كل حالة اختبار الزم يكون ليها •
"EP-001" ممكن نستخدم معرف زي،(Equivalence Partitioning) لو بنستخدم تقنية تقسيم التماثل: مثالo
.للحالة األولى
Test Cases).) البيانات المستخدمة في االختبار بتكون معتمدة على الحاالت اللي االختبار بيغطيها •
:(Normal Cases) للحاالت العاديةo
▪ االختبار الواحد المفروض يغطي أكبر عدد ممكن من الحاالت .
oللحاالت الخطأ ):(Error Cases
▪ االختبار الزم يغطي حالة واحدة فقط بالضبط.
الهدف األساسي هو التأكد إن كل حاالت االختبار مغطاة بالكامل . •
اختيار البيانات بطريقة تقلل عدد االختبارات المطلوبة يعتبر مهارة مهمة. •
االختبارات ممكن تتنفذ كـ كود ) (Automated Testsأو كـ إجراءات يدوية ).(Manual Tests •
:Unit Tests oداي ًما أوتوماتيكية.
:Integration Tests oغالبًا أوتوماتيكية.
:System Tests oأوتوماتيكية على قد ما نقدر.
في البرنامج لمجموعاتinput ( دي عبارة عن تقسيم القيم اللي ممكن تدخل كـEquivalence Partition (EP .1
. بحيث كل مجموعة بتتعامل بنفس الطريقة،(partitions)
:Equivalence Partitions القواعد اللي الزم نراعيها لما بنحدد الـ.2
.aكل قيمة ألي parameterالزم تكون ضمن Partitionمعين .
.bمفيش قيم بين الـ .Partitionsيعني ،يا إما القيمة تنتمي للـ ،Partitionيا إما أل.
.cالحدود العليا والسفلى للـ Partitionsبتكون بنا ًء على natural rangeالخاص بالـ parameterإال لو الـ
specificationحددت حاجة مختلفة.
Boundary Values:
Combinations of Values:
.1التحليل دا بيستخدم تقنيات زي Cause-Effect Graphsو Decision Tablesعشان نحصر كل تركيبات القيم
الممكنة اللي بتدخل للبرنامج ) (Input Causesوتأثيرها على المخرجات )Output Effects).
.2بنعمل جدول للحقيقة ) (Truth Tableعشان نحدد أقل عدد من التركيبات اللي يغطي كل السلوكيات المختلفة للبرنامج.
.3عدد التركيبات الممكنة = ،2N2^Nحيث NNهو عدد independent causes.
مالحظات:
Rules).) ( من خالل قواعدEffects) ( والتأثيراتCauses) جدول الحقيقة هو طريقة بنستخدمها لتوضيح العالقة بين األسباب
.( في الجدول بتمثل مجموعة معينة من األسباب اللي بتؤدي لمجموعة محددة من التأثيراتRule) كل قاعدة.1
input causes).) الجدول بيوضح الحاالت المختلفة اللي ممكن تحصل بنا ًء على القيم المدخلة.2
لو عندنا ميثود بتتحقق من حالة معينة بنا ًء على 3أسباب CC: ،BB ،AA
“Don’t Care” Conditionsبتشير إلى الحاالت اللي قيمة السبب ( )Causeفيها مش بتأثر على النتيجة ( .)Effectيعني
بغض النظر إذا كان السبب " "Trueأو " ،"Falseالنتيجة هتكون هي هي.
فكرة الـ “ :Don’t Care” Conditionsلما يكون السبب ملوش تأثير على النتيجة ،بنسميها "حالة ال تهمنا". •
oالهدف منها هو تقليل عدد القواعد ( )Rulesاللي الزم نختبرها.
oده بيقلل التعقيد في كتابة الـ Truth Tableواالختبارات.
المزايا:
.1الحاالت دي بتساعد إننا نركز على الحاالت اللي ليها تأثير فعلي على النتائج.
.2بتقلل عدد القواعد اللي بتتعامل معاها في Truth Tableلما يكون نفس النتيجة بتتكرر بغض النظر عن قيمة السبب.
في أسوأ السيناريوهات :لو مفيش وال حالة " ،"Don’t Careوكل األسباب مؤثرة ،عدد القواعد هيزيد بشكل أُسي:
Don’t care" conditions occur when a cause's value does not impact the " :Definition .1
effect.
Reduces the number of rules in a truth table by focusing only on relevant :Purpose .2
causes.
Helps minimize complexity when multiple causes lead to the same effect. :Reduction .3
N causes generate 2N2^N rules. ,Without "Don’t care" conditions :Worst Case .4
Represented by “*” in a truth table for irrelevant causes. :Representation .5
Candidate Truth Tablesهي عملية تطوير تدريجي لـ Truth Tablesلضمان إنها بتكون منظمة وسهلة الفهم ،ومش بتحتوي
على قواعد ) (Rulesمستحيلة أو غير ضرورية .الهدف منها هو تحسين الجدول بالتدريج للوصول ألبسط شكل ممكن .
مالحظات:
لما بنحذف القواعد المستحيلة ،بنستخدم الرمز “ ”-في عمود التأثيرات ) (Effectsعشان نوضح إن القاعدة دي غير ممكنة. •
بنستخدم حروف بدل أرقام للتمييز بين القواعد المؤقتة ) (Candidate Rulesوالقواعد النهائية ) ،(Final Rulesوده •
لتجنب أي التباس.
مثال عملي:
.1أول جدول هيشمل كل التوليفات الممكنة للسببين ) 4قواعد في الحالة دي،False/True ،True/False ،True/True :
False/False).
.2بعد كده ،هنحذف أي قاعدة غير ممكنة )مثالً ،لو في شرط منطقي مستحيل(.
.3في النهاية ،بنحدد األسباب اللي ملوش تأثير على النتيجة ،وبنستخدم “*” لتبسيط الجدول.
النقاط المهمة باإلنجليزي:
starting with ,Includes all possible combinations of causes systematically :Initial Table .1
all true and ending with all false.
”-“ marked with ,Eliminates any logically impossible rules :Remove Impossible Rules .2
in the effects column.
Simplifies the table by identifying and marking irrelevant :”Introduce “Don’t Care .3
causes with “*”.
Use letters for candidate rules instead of numbers to avoid :Candidate Rules .4
confusion with final rules.
Partial Truth Tablesهي طريقة لتقليل حجم الـ Truth Tablesعن طريق التركيز على جزء معين من األسباب )(Causes
بدل ما نشتغل على الجدول كله مرة واحدة .ده معناه إن الجدول هيحتوي بس على مجموعة فرعية من األسباب ،والباقي بيتم تحديد قيمته
كقيمة ثابتة ) Constant Value).
الفكرة األساسية:
بدل ما نعمل جدول كبير يحتوي على كل التوليفات الممكنة لكل األسباب ،بنختار بس مجموعة من األسباب اللي محتاجين •
ندرس تأثيرها.
األسباب اللي مش محتاجينها في الجدول ده بنحدد قيمتها كقيمة ثابتة )زي Trueأو False). •
المزايا:
مثال عملي:
بدالً من إنشاء جدول بـ 16 = 4^162=24قاعدة ،ممكن نركز على سببين فقط ونجعل السببَين اآلخرين ثابتين. •
على سبيل المثال: •
oالسبب C1=TrueC1 = True
oالسبب C2=FalseC2 = False
with the rest set to ,Partial truth tables only include a subset of the causes :Definition .1
constant values.
Reduce table size and simplify analysis by focusing on key causes. :Purpose .2
:Advantages .3
Saves time and effort. .a
Makes it easier to analyze the impact of specific causes. .b
you can ,instead of creating 24=162^4 = 16 rules ,If a function has 4 causes :Example .4
focus on 2 causes and keep the other 2 constant.