نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برای تست نرم‌افزار از دیتای واقعی استفاده کنید


پیش از هر گونه توضیحی، سناریویی تعریف می‌کنیم تا ببینیم برای چند درصد از ما آشنایی دارد؛ نرم افزاری نوشته‌ایم -مثلا یک وب اپلیکیشن- حال نیاز است تا یکسری دیتای اولیه وارد دیتابیس کرده تا بتوانیم تست نهایی را انجام دهیم. پیش از هر چیز، چند یوزر می بایست تعریف کنیم؛ برای این کار، از نام کاربری‌هایی همچون ali1, ali2 و ali3 استفاده می کنیم. اکنون تک تک این یوزرها را می بایست به یک گروه کاربری ربط دهیم. مثلاً گروه‌های کاربری ادمین، کاربر معمولی و کاربر میهمان (در ضمن، برای ثبت نام در سایت، برای انتخاب نام کاربری حتماً می بایست هشت کاراکتر وارد کرد اما چون در مرحله ی تست است و قصد داریم برای ثبت نام و مهم‌تر از آن لاگین کردن، تعداد کاراکتر کمتری را وارد کنیم، بخشی از کد که مسئول چک کردن تعداد کاراکترهای نام کاربری است که کامنت می کنیم.)

به علاوه این که آقا/خانم برنامه نویس برای تست یک اینپوت فرم -مثلا ناحیه یی برای وارد کردن نام خانوادگی- عبارت jfldjf'sdjfsjf یا چیزی شبیه به آن را وارد می کند! سناریو را بیش از این ادامه نمی‌دهیم اما پر واضح است که مثال‌های زیادی از این نوع رفتارهای توسعه دهندگان می‌توان زد به این صورت که از آنجا که ایشان فکر می‌کنند در مرحله ی تست هیچ‌ کس کد ایشان را نمی بیند، از دیتای غیر واقعی و … استفاده می کنند. 

وقتی ما به عنوان یک توسعه دهنده و گاهی اوقات هم تست کننده ی نرم افزار اقدام به تست می کنیم، تحت هیچ عنوان نمی بایست از نام های کاربری همانند آنچه در بالا گفته شد برای ثبت نام استفاده کنیم؛ علاوه بر این، برای تست کردن فرم ها و ... حتما می بایست دیتای واقعی وارد کنیم چرا که آدم های واقعی قرار است که این نرم افزار را مورد استفاده قرار دهند و در غیر این صورت، احتمال زیادی وجود دارد که به هدف نهایی خود که همان ارائه ی یک محصول باکیفیت و بدون باگ است نرسیم.

خیلی از اوقات پیش می آید زمانی که برای تست نرم افزار خود بخشی از کد را کامنت می کنیم -از روی تنبلی- زمانی که می خواهیم محصول نهایی را Deploy (دیپلوی یا منتشر) کنیم، فراموش می کنیم که بخش مد نظر را از کامنت خارج کنیم و این می تواند تبعات بسیاری مخربی داشته باشد!

خلاصه ی کلام این که تست کردن به این روش می‌تواند آینده ی اپلیکیشن را تحت الشعاع قرار دهد. همواره سعی کنید در فرایند تست محصول نهایی، از دیتای شبیه به واقعی استفاده کنید چرا که در بسیاری از مواقع، دیتای تستی -به صورت ناخواسته- منتشر شده و در اختیار End-user ها قرار می‌گیرد و نیاز به توضیح نیست که امروزه با وجود شبکه‌های اجتماعی، هر گونه «کم کاری» از طرف تیم برنامه نویسی شما می تواند در معرض دید هزاران کاربر بالقوه قرار گرفته و آبروی تیم برنامه نویسی شما را به کلی تحت تأثیر قرار دهد.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
۱۳۹۷/۰۱/۲۱
test and debug یکی از مراحل با اهمیت در چرخه حیات اپلیکیشن به حساب میاد و این موضوع که فردی که تست رو انجام می ده باید از داخل تیم برنامه نویسی باشه یا خارج از اون و در این صورت از تیم مشتری باشه یا کاربری بی طرف همیشه یکی از مباحث چالش برانگیز در موضوع تست هست
اما چیزی که باید توجه کرد اینه که فردی که تست رو انجام می ده باید با این موضوع آشنا باشه و سابقه انجام این کار رو داشته باشه،یعنی یک کاربر عادی ممکنه نتونه با سناریویی که انجام می ده ایرادات موجود رو به صورت کامل پیدا کنه
اما فردی که سمت test داره به خوبی می دونه که باید چه سناریوهایی روی اپلیکیشن اجرا کنه و بازخورد رو با دقت بررسی کنه
همینطور ثبت و نگهداری نتایج تست ها انجام شده هم اهمیت زیادی داره که در دراز مدت می تونه برای دیباگ کردن و موارد پشتیبانی از اون ها استفاده بشه
امروزه یک پوزیشن شغلی برای تست برنامه ها در شرکت های خوب وجود داره که به اون "کارشناس تست نرم‌افزار (Software Test Specialist)" می گن
معمولا مسئولیت و نیازمندهای این فرد: آشنایی با انواع تست ها،نوشتن Automation Test برای امکانات سیستممستندسازی سناریوهای تست و کاربری سیستم و... هست
Insight
Insight
۱۳۹۷/۰۱/۲۱
یکی از فواید استفاده از داده های واقعی برای برنامه نویس‌ها اینه که اکسپشن هایی که ممکنه در ورودی های کاربران وجود داشته باشه رو در همون مراحل تست و ارزیابی پیدا کنن و راهی برای مدیریت کردنشون در نظر بگیرن.
برنامه نویس‌ها معمولا آرمانی فکر میکنن و تصورشون اینه که کاربر هم مثل اونها فکر میکنه. ورودی های کاملا درست میده، منتظر نتیجه میمونه و خروجی رو تحویل میگیره. اما در بسیاری از موارد اینجوری نیست.
خیلی خوبه که توسعه دهنده خودش رو جای یک کاربر معمولی بذاره و از منظر اون با برنامه کار کنه و ورودی بده. این طرز تفکر به برنامه نویس در طراحی و پیاده سازی برنامه کمک میکنه.