Software Testing Lecture 6 PDF
Document Details
Uploaded by FeatureRichHurdyGurdy
Tags
Summary
This document presents lecture notes on software testing, covering topics such as object class testing, weather station testing, automated testing, and component integration testing. The lecture provides examples and strategies for testing different aspects of software components.
Full Transcript
Software Testing 1 Object class testing design tests to provide coverage of all of the features of the object. Complete test coverage of a class involves Testing all operations associated with an object Setting and checking all object attributes Exercising the...
Software Testing 1 Object class testing design tests to provide coverage of all of the features of the object. Complete test coverage of a class involves Testing all operations associated with an object Setting and checking all object attributes Exercising the object in all possible states. This means that you should simulate all events that cause a state change. Inheritance makes it more difficult to design object class tests as the information to be tested is not localised. The operation that is inherited may make assumptions about other operations and attributes test the inherited operation in all of the contexts where it is used. 2 اختبار فئة الكائن اختبارات التصميم لتوفير تغطية لجميع ميزات الكائن. تشمل تغطية االختبار الكاملة للفصل اختبار جميع العمليات المرتبطة بجسم ما ضبط وفحص جميع سمات الكائن تمرين الكائن في جميع الحاالت الممكنة.هذا يعني أنه يجب عليك محاكاة جميع األحداث التي تسبب تغيير الحالة. يجعل الوراثة من الصعب تصميم اختبارات فئة الكائن ألن المعلومات المراد اختبارها ليست مترجمة. العملية الموروثة قد تضع افتراضات حول العمليات والسمات األخرى اختبار العملية الموروثة في جميع السياقات حيث يتم استخدامها. 3 The weather station object interface 4 Weather station testing Need to define test cases for reportWeather, calibrate, test, startup and shutdown. Using a state model, identify sequences of state transitions to be tested and the event sequences to cause these transitions For example: Shutdown -> Running-> Shutdown Configuring-> Running-> Testing -> Transmitting -> Running Running-> Collecting-> Running-> Summarizing -> Transmitting -> Running 5 اختبار محطة الطقس تحتاج إلى تحديد حاالت االختبار لتقرير الطقس والمعايرة واالختبار وبدء التشغيل واإلغالق. باستخدام نموذج الحالة ،حدد تسلسل انتقاالت الحالة المراد اختبارها وتسلسالت األحداث التي تسبب هذه التحوالت على سبيل المثال: االغالق >-قيد التشغيل >-االغالق تكوين >-تشغيل >-اختبار >-إرسال >-تشغيل قيد التشغيل> التجميع> الجري> التلخيص> اإلرسال> تشغيل 6 Automated testing Whenever possible, unit testing should be automated so that tests are run and checked without manual intervention. In automated unit testing, you make use of a test automation framework (such as JUnit) to write and run your program tests. Unit testing frameworks provide generic test classes that you extend to create specific test cases. They can then run all of the tests that you have implemented and report, often through some GUI, on the success of otherwise of the tests. 7 االختبار اآللي كلما كان ذلك ممكنًا ،يجب أتمتة اختبار الوحدة بحيث يتم تشغيل االختبارات وفحصها دون تدخل يدوي. في اختبار الوحدة اآللي ،يمكنك االستفادة من إطار عمل أتمتة االختبار (مثل )JUnitلكتابة اختبارات البرنامج وتشغيلها. توفر أطر عمل اختبار الوحدة فئات اختبار عامة تقوم بتوسيعها إلنشاء حاالت اختبار محددة.يمكنهم بعد ذلك إجراء جميع االختبارات التي قمت بتنفيذها واإلبالغ ،غالبًا من خالل بعض واجهة المستخدم الرسومية ،عن نجاح االختبارات بخالف ذلك. 8 Automated test components A setup part, where you initialize the system with the test case, namely the inputs and expected outputs. A call part, where you call the object or method to be tested. An assertion part where you compare the result of the call with the expected result. If the assertion evaluates to true, the test has been successful if false, then it has failed. 9 مكونات االختبار اآللي جزء اإلعداد ،حيث تقوم بتهيئة النظام بحالة االختبار ،وهي المدخالت والمخرجات المتوقعة. جزء استدعاء ،حيث تقوم باستدعاء الكائن أو الطريقة المراد اختبارها. جزء التأكيد حيث تقارن نتيجة المكالمة بالنتيجة المتوقعة.إذا تم تقييم التأكيد إلى "صواب" ، فهذا يعني أن االختبار كان ناج ًحا إذا كان خاطئًا ،فهذا يعني أنه قد فشل. 10 Choosing unit test cases The test cases should show that, when used as expected, the component that you are testing does what it is supposed to do. If there are defects in the component, these should be revealed by test cases. This leads to two types of unit test case: The first of these should reflect normal operation of a program and should show that the component works as expected. The other kind of test case should be based on testing experience of where common problems arise. It should use abnormal inputs to check that these are properly processed and do not crash the component. 11 Choosing unit test cases يجب أن تُظهر حاالت االختبار أنه عند استخدامه كما هو متوقع ،فإن المكون الذي تختبره يقوم بما يفترض أن يفعله. إذا كانت هناك عيوب في المكون ،فيجب الكشف عنها من خالل حاالت االختبار. يؤدي هذا إلى نوعين من حالة اختبار الوحدة: يجب أن يعكس أولها التشغيل العادي للبرنامج ويجب أن يوضح أن المكون يعمل كما هو متوقع. يجب أن يعتمد النوع اآلخر من حاالت االختبار على تجربة االختبار الخاصة بالمكان الذي تنشأ فيه المشكالت الشائعة.يجب أن يستخدم مدخالت غير طبيعية للتحقق من أن هذه تتم معالجتها بشكل صحيح وال تتسبب في تعطل المكون. 12 Testing strategies There are possible strategies here that can be effective in choosing test cases. Partition testing, where you identify groups of inputs that have common characteristics and should be processed in the same way. You should choose tests from within each of these groups. Guideline-based testing, where you use testing guidelines to choose test cases. These guidelines reflect previous experience of the kinds of errors that programmers often make when developing components. 13 استراتيجيات االختبار هناك استراتيجيات ممكنة هنا يمكن أن تكون فعالة في اختيار حاالت االختبار. اختبار التقسيم ،حيث تحدد مجموعات المدخالت التي لها خصائص مشتركة ويجب معالجتها بنفس الطريقة. يجب عليك اختيار االختبارات من داخل كل مجموعة من هذه المجموعات. االختبار المستند إلى اإلرشادات ،حيث تستخدم إرشادات االختبار الختيار حاالت االختبار. تعكس هذه اإلرشادات الخبرة السابقة ألنواع األخطاء التي يرتكبها المبرمجون غالبًا عند تطوير المكونات. 14 Input data and output results often fall into different classes where all members of a class are related. Each of these classes is an equivalence partition or domain where the program behaves in an equivalent way for each class member. Test cases should be chosen from each partition. 15 اختبار التقسيم غالبًا ما تقع بيانات اإلدخال ونتائج المخرجات في فئات مختلفة حيث يرتبط جميع أعضاء الفصل. كل فئة من هذه الفئات عبارة عن قسم أو مجال معادل حيث يتصرف البرنامج بطريقة مكافئة لكل عضو في الفصل. يجب اختيار حاالت االختبار من كل قسم. 16 Equivalence partitions 17 Testing guidelines (sequences) Test software with sequences which have only a single value. Use sequences of different sizes in different tests. Derive tests so that the first, middle and last elements of the sequence are accessed. Test with sequences of zero length. 18 إرشادات االختبار (تسلسل) اختبر البرنامج بتسلسالت لها قيمة واحدة فقط. استخدم تسلسالت بأحجام مختلفة في اختبارات مختلفة. اشتق االختبارات بحيث يتم الوصول إلى العناصر األولى والمتوسطة واألخيرة من التسلسل. اختبر مع متواليات طولها صفر. 19 General testing guidelines Choose inputs that force the system to generate all error messages Design inputs that cause input buffers to overflow Repeat the same input or series of inputs numerous times Force invalid outputs to be generated Force computation results to be too large or too small. 20 إرشادات االختبار العامة اختر المدخالت التي تجبر النظام على إنشاء جميع رسائل الخطأ تصميم مدخالت التي تتسبب في تجاوز المخازن المؤقتة لإلدخال كرر نفس اإلدخال أو سلسلة المدخالت عدة مرات فرض نواتج غير صالحة ليتم إنشاؤها فرض نتائج الحساب لتكون كبيرة جدًا أو صغيرة جدًا. 21 Component Integration testing Software components are often composite components that are made up of several interacting objects. For example, in the weather station system, the reconfiguration component includes objects that deal with each aspect of the reconfiguration. You access the functionality of these objects through the defined component interface. Testing composite components should therefore focus on showing that the component interface behaves according to its specification. You can assume that unit tests on the individual objects within the component have been completed. 22 اختبار تكامل المكونات غالبًا ما تكون مكونات البرامج مكونات مركبة تتكون من عدة كائنات متفاعلة. على سبيل المثال ،في نظام محطة الطقس ،يشتمل مكون إعادة التكوين على كائنات تتعامل مع كل جانب من جوانب إعادة التكوين. يمكنك الوصول إلى وظائف هذه الكائنات من خالل واجهة المكون المحددة. لذلك يجب أن يركز اختبار المكونات المركبة على إظهار أن واجهة المكون تتصرف وفقًا لمواصفاتها. يمكنك افتراض أن اختبارات الوحدة على الكائنات الفردية داخل المكون قد اكتملت. 23 Component Integration testing (cont.) Assume that components A, B, and C have been integrated to create a larger component or subsystem. The test cases are not applied to the individual components but rather to the interface of the composite component created by combining these components. Interface errors in the composite component may not be detectable by testing the individual objects because these errors result from interactions between the objects in the component. It is done after unit testing. 24 اختبار تكامل المكونات (تكملة) افترض أن المكونات Aو Bو Cقد تم دمجها إلنشاء مكون أو نظام فرعي أكبر.ال يتم تطبيق حاالت االختبار على المكونات الفردية بل على واجهة المكون المركب الذي تم إنشاؤه من خالل الجمع بين هذه المكونات.قد ال يمكن اكتشاف أخطاء الواجهة في المكون المركب عن طريق اختبار الكائنات الفردية ألن هذه األخطاء ناتجة عن التفاعالت بين الكائنات الموجودة في المكون .يتم ذلك بعد اختبار الوحدة. 25 Integration Testing Strategies Options: the “big bang” approach an incremental construction strategy :خيارات " نهج "االنفجار الكبير 26 إستراتيجية بناء تدريجية Top Down Integration A top module is tested with stubs B F G stubs are replaced one at a time, "depth first" C as new modules are integrated, some subset of tests is re-run D E 27 Bottom-Up Integration A B F G drivers are replaced one at a time, "depth first" C worker modules are grouped into builds and integrated D E cluster 28