توضیحات · سه

چگونه آزمایش می‌کنیم، به‌طور کامل

ما مقایسه‌هایی با نرم‌افزار دیگران منتشر می‌کنیم، پس روش باید وارسی‌پذیر باشد. این تمام آن است: ماشین‌ها، محتوا، تنظیماتی که هر برنامه می‌گیرد، و قاعده‌هایی که تعیین می‌کنند یک اجرا نتیجه به حساب می‌آید یا دور ریخته می‌شود.

بستر آزمون

همان ماشین، همان خط، همان محتوا

هر برنامه در یک مقایسه روی یک ماشین اجرا می‌شود، در برابر همان ارائه‌دهنده‌ها، روی همان محتوا، در همان دور. هیچ چیز از روز پیش منتقل نمی‌شود.

قاعده‌ای که همه‌چیز را تعیین می‌کند

دربارهٔ یک برنامه بر پایهٔ فایل داوری می‌شود، نه بر پایهٔ پیام وضعیت خودش

این تنها مهم‌ترین چیز در این صفحه است. هر دور با یافتن بزرگ‌ترین فایلی که برنامه تولید کرده، هرجای خروجی‌اش که باشد، و درهم‌سازی آن در برابر نسخه‌ای معلوم‌الصحه پایان می‌یابد. اندازه و MD5، در هر دور، نه روی نمونه.

این کار را می‌کنیم چون گزارش موفقیتِ خودِ یک برنامه شاهد قابل اتکایی نیست. برنامه‌ای را اندازه گرفته‌ایم که برای کاری با پوشهٔ خروجی خالی done گزارش می‌داد. دیگری را اندازه گرفته‌ایم که Completed گزارش می‌داد در حالی که جلدهای خام بایگانی را تحویل داده بود و هرگز بازشان نکرده بود. ابزار ترمیمی پرکاربرد پس از ترمیم موفق با کد خطا خارج می‌شود. هیچ‌کدام از این برنامه‌ها دروغ نمی‌گفتند؛ رشته‌های وضعیت برای نویسندگان مختلف صرفاً معناهای مختلفی دارند، و محکی که به آن‌ها اعتماد کند واژگان را می‌سنجد نه رفتار را.

پس خط پایان برای همه یکی است: محتوا وجود دارد، با اندازهٔ درست، با درهم‌سازی درست. اگر برنامه‌ای پیش از آن بایستد زمانی نمی‌گیرد، و کل ستون به‌جای حذف خاموش نشانه‌گذاری می‌شود. برنامهٔ کندی که تمام می‌کند بهتر عمل کرده تا برنامهٔ تندی که تمام نمی‌کند، و جدول باید این را بگوید.

نتیجهٔ منطقی‌اش این است که تمام‌نکردن یک نتیجه است، نه خطایی از سوی ما. وقتی چنین چیزی منتشر می‌کنیم وضعیت پایانی را با واژه‌های ساده وصف می‌کنیم، از جمله هر چیزی که نشان دهد ویژهٔ همان کار است نه عمومی، و می‌گوییم برنامه به‌جای تمام‌کردن چه کرد.

ترتیب و تکرار

چرا دورها یک‌درمیان‌اند، و چرا اجراهای تکی منتشر نمی‌شوند

توان‌گذر ارائه‌دهنده‌ها دقیقه‌به‌دقیقه تغییر می‌کند، گاهی به اندازهٔ دو یا سه برابر. هر دو اندازه‌گیری که در زمان‌های متفاوت گرفته شوند تا حدی هوا را می‌سنجند.

پس برنامه‌ها پشت سر هم و درهم‌بافته اجرا می‌شوند، و ترتیب میان تکرارها وارونه می‌شود تا هیچ برنامه‌ای همیشه اولین کسی نباشد که وارد خطی گرم یا سرد می‌شود. نتیجه الگوی سراسر تکرارهاست، نه بهترین اجرا. وقتی پراکندگی زیاد است بازه را منتشر می‌کنیم نه میانگینی که آن را پنهان کند، و اگر ندانیم چرا اعداد یک برنامه پراکنده‌اند، همین را می‌گوییم نه اینکه علتی بتراشیم.

تا جای ممکن از مقایسه میان دورهای متفاوت پرهیز می‌کنیم. اگر ادعایی به دو عدد نیاز داشته باشد، ترجیح می‌دهیم هر دو را در یک دور از نو مسابقه دهیم تا اینکه عدد یک روز را از عدد روز دیگر کم کنیم، چون وضعیت بستر، شرایط ارائه‌دهنده‌ها و نسخه‌های برنامه همه دستخوش تغییرند. وقتی دو نسخهٔ خودمان را مقایسه می‌کنیم، هر دو در یک دور، یک‌درمیان، روی همان محتوا اجرا می‌شوند.

وارسی‌های بی‌زرق‌وبرق

پیش از هر دور و در حین آن چه اجرا می‌شود

بیشترشان از آن رو هستند که خرابی‌ای خاموش یک بار عددی سالم‌نما، انتشارپذیر و نادرست تولید کرد. حالا هرکدام خودکار اجرا می‌شوند و به‌جای هشدار دادن، دور را متوقف می‌کنند.

جایی که برنامه‌ای برای عملکرد خوب به تنظیماتی خاص نیاز دارد، آن‌ها را می‌گیرد، و دور می‌گوید کدام‌ها. نمونه‌ها: روشن‌کردن خط‌لولهٔ درخواست‌ها جایی که برنامه آن را خاموش عرضه می‌کند، خاموش‌کردن بررسی تکراری‌ها وقتی همان کار بارها دانلود می‌شود، و برداشتن کمکی‌های بازکردن از بستهٔ خودِ برنامه به‌جای نسخهٔ سیستم. هدف این است که هر برنامه در بهترین حالتش سنجیده شود نه در تنظیمات پیش‌فرضش، چون تنظیمات پیش‌فرض بحثی جدا از توانایی است.

کاری که نخواهیم کرد

مرزهای این اعداد