Seven Principles of Software Testing

  • یوسف مهرداد بی‌بالان

While everyone knows the theoretical limitations of testing, in practice we devote considerable effort to this task, and would consider it foolish or downright dangerous to skip testing.
Other verification techniques, such as static analysis, model checking and proofs, have great potential, but it is unlikely they will ever fully remove the need for testing. In the meantime we need to understand the scope and limitations of tests, and perform them right.
The seven principles that follow emerged from experience of studying testing and developing automated testing tools (AutoTest, CDD) over the past few years.

Principle 1: Definition of software testing
To test a program is to try to make it fail.

Principle 2: Tests versus specs
Tests are no substitute for specifications. One can derive tests from specifications, not the other way around.

Principle 3: Regression testing
Any failed execution must yield a test case, to remain permanently part of the project’s test suite.

Principle 4: Applying oracles
Determining success or failure of tests must be an automatic process.

Principle 4 (variant): Contracts as oracles
Oracles should be part of the program text, in the form of contracts. Determining success or failure of tests should be an automatic process consisting of monitoring contract satisfaction during execution.

Principle 5: Manual and automatic
An effective testing process must include both manually and automatically produced test cases.

Principle 6: Empirical assessment of testing strategies
Evaluate any testing strategy, however attractive it may appear in principle, through objective assessment based on explicit criteria and a reproducible testing process.

Principle 7: Assessment criteria
The most important property of a testing strategy is the number of faults (or, if faults are not directly measurable, failures) it uncovers as a function of testing time.

Reference: Bertrand Meyer

Quote:
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler (Refactoring: Improving the Design of Existing Code)

دوره جديد

  • یوسف مهرداد بی‌بالان

به پیشنهاد آقای مهندس هادی تصميم گرفته‌ام تدريس دوره‌‌اي را در شركت فراتر از دانش شروع كنم.
اين دوره كه با عنوان “متدهاي چابك” (Agile Methods) برگزار خواهد شد به كاربرد و وجه تمايز اين دسته از متدها اختصاص خواهد داشت.
اهداف كلي و مياني، چارچوب، منابع، مطالب اصلي سيلابس،كليات موردهاي مطالعاتي و ابزارها مشخص شده است.

گزيده:

A common problem in many organizations is that undisciplined “ad-hoc” teams often claim to be agile, because they’ve read an article or two about agile development, and interpret agility to mean any cool, liberated form of undocumented software creativity. These ad-hoc teams often run into trouble, and give actual agile teams a bad name.
Scott Ambler

کم لطفی به سماموس

  • یوسف مهرداد بی‌بالان

سایت «ورگ» در نقد کتاب «گیلان» درباره بی‌مهری نویسندگان این کتاب به قله سماموس مطلبی را به رشته تحریر در آورده است. مقدمه نويسنده را در اينجا آورده‌ام. ضمن تشكر از نویسنده، سركار خانم مروت و آقا نيما پيشنهاد مي‌كنم كه مطلب مذكور را مطالعه فرماييد. اگر فرصت نمی‌كنيد يا علاقه‌مند نيستيد، ديدن عكس‌ها خالي از لطف نيست.

«اما در جلد چهارم این کتاب که به تازگی چاپ شده، در بخش اول، که ‌خلاصه‌ای از سیمای طبیعی و جغرافیایی استان ارائه شده، در قسمت کوه‌های گیلان جای خالی اسم بزرگی چون کوه سماموس به چشم می‌خورد. بنابراین با توجه به اهمیت کوه سماموس به عنوان مرتفع‌ترین کوه گیلان و تاثیرات ژرفی که این کوه در معیشت و فرهنگ مردم منطقه شرق گیلان و غرب مازندران دارد و چون تاکنون مطلبی درباره جغرافیای سماموس در منابع گیلان‌شناسی و جراید آن انتشار نیافته، یادداشت ذیل را که در رابطه جغرافیای طبیعی این کوه می‌باشد ارائه می‌نماید.»

گزیده:
گيلان، گيلان، هميشه بهاره گيلان
گيلان، گيلان، مي‌ دل قراره گيلان

کتاب

  • یوسف مهرداد بی‌بالان

یکی از آرزوهای من، نوشتن تجربیات و آموخته هایم در قالب کتاب بوده و هست. انگیزه این کار با نقدهای عزیزانم در دوره ها که از نبود جزوه ای برای دوره گله مندند، بیشتر و بیشتر گردیده است.
حدود یک سال پیش با دو تن از دوستانم آقایان مهندس ایراف و شهبازیان و به پیشنهاد آنها نوشتن کتابی را شروع کردیم. با توجه به مراحل توسعه سیستمهای نرم افزاری ناگزیر از نیازمندی ها نرم افزاری شروع کردیم. تجربه بسیار آموزنده ای برایم بوده است. کاری که فکر می کردم بسیار ساده باشد، روز به روز به دشواری هایش افزوده می گردد.
اکنون پس از این مدت طولانی، دشوارترین بخش آن یعنی نوشتن بخش «نمونه پروژه» شروع شده است. عناوین بخشها و فصلها را در زیر آورده ام. خوشحال می شوم که نظرات و راهنمایی های خود را برایم ارسال فرمایید از جمله انتظارات خواننده.
بخش اول: مقدمه
فصل 1: اهميت نيازمنديها
فصل 2: تعريف نیازمندیها
بخش دوم: تحليل مسأله
فصل 3: تحليل مساله چیست
فصل 4: چالشهاي استخراج نيازمنديها
فصل 5: تكنيكهاي استخراج نيازمندي ها
فصل 6: قواعد كسب و كار
بخش 3: تعريف سيستم
فصل 7: موردهای كاربرد
فصل 8: روش تدوين مورد كاربرد
فصل 9: توصیف نيازمندي‌هاي تكميلي
بخش 4: نمونه پروژه

بخش 5: پیوست ها
پیوست 1: اشتباهات رایج
پیوست 2: چك ‌ليستها
پيوست 3: چکیده UML
پيوست 4: قالب مستندات
گزیده:
همیشه از خوبی‌های آدم‌ها برای خودت دیواری بساز. هر وقت در حق تو بدی کردند، فقط یک آجر از دیوار بردار! بی‌انصافیست اگر دیوار را خراب کنی.

آخرین سخنرانی

  • یوسف مهرداد بی‌بالان

در نوشته «خیلی ساده اتفاق افتاد» به کتاب «The Last Lecture» رندی پوش اشاره کرده بودم. ترجمه فارسی این کتاب را از نمایشگاه خريداري كردم. به پدرها و مادرها توصيه مي‌كنم كه حتماً اين كتاب را مطالعه كنند. به آقا و خانمي كه در غرفه بودند توصيه كردم حتماً فيلم سخنراني را ببيند چرا كه فوق‌العاده تأثيرگذار است.
مترجم كتاب «آخرین سخنرانی» خانم نفیسه معتکف و ناشر آن، انتشارات «هو» است. می‌توانيد ترجمه‌هاي ديگر را در اينجا ببينيد.


گزيده:
من فردي صادق را به فردي دانا ترجيح مي‌دهم، چون دانايي كوتاه مدت ولي صداقت دراز مدت است.
رندي پوش

پنج راه مخرب تغيير شغل

  • یوسف مهرداد بی‌بالان

متن زیر خلاصه‌اي است بسيار كوتاه از مقاله‌‌ي ارزشمند «پنج راه مخرب تغییر شغل» که در شماره ۱۰۵ ماه‌نامه‌ي «گزیده مدیریت» آمده است. خواندن این مقاله را اکیداْ توصیه می‌نمايم. هر چند اين مقاله در مورد تغيير شغل مديران است اما اين حقايق در مورد سايرين نيز صادق است.

خطای اول: انجام ندادن تحقیق
انجام ندادن مطالعه‌ي لازم براي پي‌بردن به واقعيت‌هاي بازار كار در رابطه با صنعت يا شغل خود.
عدم توجه كافي به ثبات مالي و جايگاه كارفرماي بالقوه در بازار
ناتواني در بررسي سازگاري با فرهنگ محيط جديد
گمان و باور نادرست كه عنوان رسمي شغل و شرح وظايف آن، بازتاب دقيق نقش آنها در سازمان است

خطاي دوم: ترك سازمان به خاطر پول
مديرانِ در صدد تغيير شغل، درآمد را در مرتبه چهارم يا پنجم اهميت قرار مي‌دهند، اما در زمان تصميم‌گيري آن را به صدر جدول مي‌آورند.
يك مدير: پيشنهاد نقش مشابهي را در مقابل دريافت بيش از ده‌هزار دلار بيش‌تر از درآمد فعلي‌ام داشتم. بررسي همه جانبه كار نشان داد كه درآمد بيشتر ارزش از دست دادن روابط و ارتباطي را كه در حال حاضر داشتم، نداشت.

خطاي سوم: رفتن «از» به جای رفتن «به»
كارجويان آن قدر از وضع موجود ناراضی هستند که می‌خواهند به هر قيمتي كه شده،‌ سازمان فعلي را ترك كنند. تنها هدف آنها خلاص شدن از شرايط فعلي است (افتادن از چاله به چاه).

خطاي چهارم: خود بزرگ‌بيني
معمولاً كارجويان از مهارت‌ها، دورنماها و گاهي از كاستي‌هاي خود تصوري غيرواقعي دارند.

خطاي پنجم: كوتاه مدت فكر كردن

گزيده:
در زندگی افرادی هستند كه مثل قطار شهربازی هستند، از بودن با آنها لذت می‌بری ولی با آنها به جایی نمی‌رسی.

ده روش غلط مديريت ناكارآمد

  • یوسف مهرداد بی‌بالان

1) وقتي كاركنان، خوب كار مي‌كنند، مديران اصلاً توجه نمي‌كنند، ولي در صورت خطا، آنها را سرزنش و بعضاً تنبيه مي‌كنند.
2) مديران ناكارآمد، واقعيت‌ها را براي كاركنان بازگو نمي‌كنند. آنها در حالي كه اخبار خوشايند را بزك كرده و به شكل بزرگنمايي شده به كاركنان خود نشان مي‌دهند، سعي مي‌كنند اخبار ناگوار را كوچك يا پنهان كنند.
3) ارزيابي عملكرد افراد را عموماً براساس عملكرد انفرادي آنان محاسبه مي‌كنند، ولي براي سينرژي و فرهنگ توان افزايي و هم افزايي ارزشي قائل نيستند.
4) با افراد باكاركرد ناچيز و كاركرد برجسته، يكسان برخورد مي‌كنند. اين برخورد باعث مي‌شود كاركناني با موقعيت اول هميشه در حال تمسخر و پوزخند و كاركناني با موقعيت دوم، هميشه بي‌انگيزه باشند.
5) با اجراي سياست تفرقه ‌بينداز و حكومت كن، بر تيرگي روابط افراد سازمان دامن مي‌ز‌نند.
6) كارهاي كوچك را به آدم‌هاي بزرگ و شايسته و كارهاي بزرگ را به آدم‌هاي نالايق مي‌سپارند.
7) با ديكته كردن قدم به قدم فعاليت‌ها، ابتكار عمل و خلاقيت را از كاركنانشان سلب مي‌كنند.
8) با عدم انعطاف‌پذيري و عدم استقبال از انتقادات با روي باز، شجاعت و جسارت در نظريات و بيان عقايد را از كاركنان سلب مي‌كنند.
9) به دليل عدم تشخيص فرصت‌ها و تهديدها،‌ از انجام به موقع و حركت‌هاي توام با ريسك معذور است.
10) نداشتن برنامه ريزي استراتژيك و چشم‌اندازهاي لازم، سبب ناتواني در برداشتن موانع از سر راه و در نتيجه بزرگ شدن مشكلات مي‌شود.

مرجع: از میان نامه‌هاي دوست خوبم غلام‌رضا

گزيده:
دو سال طول می‌کشد تا حرف‌زدن بیاموزیم و پنجاه سال طول می‌کشد سکوت‌کردن را فرا گیریم.
ارنست همینگوی

برای خروج از جستجو کلید ESC را بفشارید