qc

البرمجيات قطة:
qc
تفاصيل البرنامج:
الإصدار: 0.1
تاريخ إيداع: 14 Apr 15
المطور: Peter Scott
ترخيص: حرر
شعبية: 139

Rating: 4.0/5 (Total Votes: 2)

ومراقبة الجودة هي أداة الاختبار التي تمكنك من إرسال الخصائص التي تتوقعها لعقد صحيح، والسماح للكمبيوتر توليد حالات الاختبار عشوائية للتأكد من أن هذه الخصائص تعقد في الواقع على & nbsp؛ على سبيل المثال، إذا كنت قد كتبت ضغط وضغط وظائف ل بعض البرامج ضغط البيانات، خاصية واضحة للاختبار هو أن ضغط وتخفيف ضغط سلسلة يعيد السلسلة الأصلية. وإليك كيف يمكن التعبير عن ذلك:
unittest استيراد
مراقبة الجودة الواردات
الطبقة TestCompression (unittest.TestCase):
على & nbsp؛ @ qc.property
على & nbsp؛ مواطنه test_compress_decompress (النفس):
على & nbsp؛ "" ". الاختبار أن ضغط وتخفيف ضغط بإرجاع البيانات الأصلية" ""
على & nbsp؛ البيانات = qc.str () # سلسلة مثالية التعسفية. والعشوائية القيم.
على & nbsp؛ self.assertEqual (البيانات، فك ضغط (ضغط (البيانات))، repr (البيانات))
هذا هو اختبار العاديين مع المدمج في إطار unittest بايثون (وهذا هو السبب هناك الكثير من النمطي). بالتناوب، هل يمكن أن تفعل نفس الشيء بالضبط مع إطار الاختبار المختلفة، مثل مطول الحد الأدنى، والأنف لطيفا جدا. والديكور @ qc.property يعمل وظيفة زينت عدة مرات، وفي كل مرة القيم التي يتم إرجاعها بواسطة وظائف مثل qc.string () مختلفة. وبعبارة أخرى، QuickCheck متوافق مع حد كبير كل إطار اختبار وحدة من هناك؛ انها ليست يطالبون بشكل خاص.
وظائف مثل qc.str ()، qc.int ()، وهلم جرا، وتوليد القيم التعسفية من نوع معين. في المثال أعلاه، نحن مؤكدا أن الخاصية ينطبق على كافة السلاسل. عند تشغيل الاختبارات، سوف QuickCheck توليد السلاسل العشوائية للاختبار.
ستلاحظ أن قلت "عشوائية"، وليس "عشوائي". هذا هو مقصود. وأنب توزيع القيم لتشمل القيم مثيرة للاهتمام، مثل السلاسل الفارغة، أو سلاسل مع شخصيات NUL في الوسط، أو السلاسل التي تحتوي على النص الانكليزي. بشكل عام، يحاول QuickCheck لإعطاء مزيج جيد من القيم صعبة ذكية والعشوائية. هذا هو أساسا ما كنت تفعل، إذا كان لديك لكتابة حالات الاختبار شاملة حقا من جهة، إلا أنه لم يكن لديك للقيام بذلك. في الممارسة العملية، الكمبيوتر لديه عدد أقل من الأفكار المسبقة حول ماهية البيانات عاقل، لذلك فإنه غالبا ما تجد الأخطاء التي لن حدثت لك لكتابة حالات الاختبار ل. أنها لا تعرف كيفية تجنب شعوريا البق.
كنت لا تقتصر على وظائف قيمة التعسفية المضمنة. يمكنك استخدامها عن بناء كتل لتوليد بنفسك. على سبيل المثال:
الطبقة نقطة (كائن):
على & nbsp؛ مواطنه __init __ (النفس، س، ص):
على & nbsp؛ self.x، self.y = تعويم (خ)، تعويم (ذ)
النقطة صفر ():
وnbsp؛ "كرة" "الحصول على نقطة وتعسفية." ""
على & nbsp؛ س = qc.int (-20، 20)
على & nbsp؛ ذ = qc.int (-34، 50)
على & nbsp؛ العودة نقطة (س، ص)
ثم يمكنك استخدام هذا لتوليد القيم نقطة عشوائية في خصائص. وهنا اختبار على غرار الأنف:
@ qc.property
test_triangle_inequality مواطنه ():
على & nbsp؛ حزب العمال = نقطة ()
على & nbsp؛ تأكيد القيمة المطلقة (pt.x) + ABS (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2)، (pt.x، pt.y)
عند تشغيل هذا، شيء سحري يحدث: سوف QuickCheck محاولة لتوليد القيم صعبة لكل من X و Y المتغيرات في فئة نقطة، معا، لذلك سترى نقاط مثل (0، 0)، (1، 1)، ( 0، 1)، (385904، 0)، وكذلك منها بشكل عشوائي تماما مثل (584، -35809648). وبعبارة أخرى، بدلا من مجرد رسم x و قيم ص من تيار من أرقام عشوائية مع بعض القيم صعبة في ذلك، وسوف QuickCheck محاولة فعلا لتوليد مجموعات صعبة من إحداثيات س وص.
وظائف للحصول على البيانات التعسفي
- كثافة العمليات (منخفضة، عالية) ويعطي [إينتس]، بين حدود اختياري المنخفضة والعالية.
- منذ فترة طويلة (منخفضة، عالية) يعطي صفقات الشراء، وبين حدود اختياري المنخفضة والعالية.
- تعويم (منخفضة، عالية) ويعطي العوامات، بين حدود اختياري المنخفضة والعالية. لا علامات ما لا نهاية أو نان القيم.
على & nbsp؛ شارع (طول = بلا، MAXLEN = لا يوجد) يعطي السلاسل، من نوع شارع. الترميز هو UTF-8. إذا أعطيت طول، فإن سلاسل يكون بالضبط هذا الوقت الطويل. إذا أعطيت MAXLEN، فإن طول السلسلة يكون حرفا على الأكثر MAXLEN.
- يونيكود (طول = بلا، MAXLEN = لا يوجد) يعطي سلاسل يونيكود، من نوع يونيكود. إذا أعطيت طول، فإن سلاسل يكون بالضبط هذا الوقت الطويل. إذا أعطيت MAXLEN، فإن طول السلسلة يكون حرفا على الأكثر MAXLEN.
- اسم () يعطي أسماء، في Unicode. هذه مجموعة من ركيك، مثل "جون سميث"، إلى الغريبة - أسماء تحتوي على غير كسر-مسافات، أو عناوين البريد الإلكتروني، أو أحرف Unicode خارج الأساسية طائرة متعددة اللغات. وهذا هو، إذا كان أي شيء، أقل الضارة من أسماء سترى في مجموعة كبيرة بما فيه الكفاية من بيانات الإنترنت.
- nameUtf8 () هو نفس اسم () ترميز ('UTF8').
- fromList (البنود) إرجاع العناصر العشوائية من قائمة. وهذا مفيد في الغالب لخلق الخاصة التعسفية وظائف مولد البيانات الخاصة بك.
- randstr (طول = بلا، MAXLEN = sys.maxint) يعطي سلاسل من وحدات البايت عشوائية. إذا أعطيت طول، فإن سلاسل يكون بالضبط هذا الوقت الطويل. إذا أعطيت MAXLEN، فإن طول السلسلة تكون على الأكثر MAXLEN بايت.
وعشوائية السلاسل التي تنتجها شارع ويونيكود، ولكن تم وضع بعض الجهد في جعلها الضارة بما فيه الكفاية للكشف عن الخلل في مجموعة كبيرة من التعليمات البرمجية معالجة السلسلة. وتستند القائمة اسم فضفاضة على الذكريات المروعة من رؤية تحطم كود تجهيز الاسم على البيانات في العالم الحقيقي، مرارا ومرارا وتكرارا، لأنه أصبح أكثر وضوحا من أي وقت مضى أن العالم هو جنون، ومحكوم علينا حقا. (وهذا شعور يمر بمجرد الحصول على ما يكفي تغطية الاختبار والأشياء وقف أخيرا تحطمها. هناك أمل!)
قد تكون البيانات الاسم والمثال سلسلة في qc.arbitrary اهتمام كمصدر للمزيد من البيانات حالة اختبار deteministic. لا تتردد في اقتراض أي من ذلك. الأجزاء الداخلية هي سحرية، ولكن من الأجزاء الداخلية سحرية، وأكثرها إثارة للاهتمام هي في qc.arbitrary ومراقبة الجودة

المتطلبات:.

بيثون

برامج مماثلة

pytest-quickcheck
pytest-quickcheck

14 Apr 15

Peon
Peon

20 Feb 15

Sipbomber
Sipbomber

3 Jun 15

تعليقات ل qc

لم يتم العثور على التعليقات
إضافة تعليق
بدوره على الصور!