حرفه تست نرم افزار در حال تکامل است و جنبه های زیادی دارد. موقعیت ها در شرکت ها متنوع است و عناوین شغلی پروفایل های مختلفی را در بر می گیرد – تحلیلگران، طراحان، آزمایش کنندگان، مهندسان کنترل، مهندسان آزمایش، مهندسان کیفیت، آزمایش کنندگان چابک و غیره. – و گاهی اوقات همه ما درک متفاوتی از مسئولیتهایی داریم که پشت این نامگذاریها نهفته است.
اکثر مخاطبین من بلافاصله به ماهیت تکراری آزمایش دستی فکر می کنند، که تا حدی به دلیل دامنه و تنوع تست های انجام شده در طول توسعه است. شغل یک آزمایشگر در واقع اغلب (و به اشتباه) با وظایف خسته کننده و تکراری همراه است که شامل پیروی از رویه های مشخص شده توسط مدیر آزمون یا مدیر آزمون برای تهیه یک گزارش آزمون با وضعیت OK یا KO برای هر مورد آزمایشی است. یک رویکرد کاملاً دستی برای اعتبارسنجی، از جمله آزمایش بدون رگرسیون، در واقع (به نظر من – میدانم نظرات ممکن است متفاوت باشد) یک دیدگاه قدیمی از تست نرمافزار است، اگرچه هنوز مورد علاقه برخی است. این یک مدل بسیار خوب برای کسانی است که این سرویس را می فروشند، اما مزایای بسیار کمتری برای خریدار دارد!
این مدل چندین معایب دارد:
- غیر رگرسیون ذاتاً به این معنی است که به محض اینکه مرحله اعتبار سنجی (اغلب به اشتباه “دستور پخت” نامیده می شود) تمام شد و نسخه جدیدی منتشر شد، باید از نو شروع کنید! بنابراین، غیرممکن است که واقعاً در بلندمدت از سرمایه گذاری های خود درآمدزایی کنید.
- زمان اعتبار سنجی طولانی تر می شود و این امر تحویل را به تاخیر می اندازد. ممکن است به این نتیجه برسید که برای سرعت بخشیدن به کارها به آزمایشگرهای اضافی نیاز دارید، اما این یک تله است!
- جنبه انسانی را نباید نادیده گرفت: در دراز مدت، تعداد بسیار کمی از افراد با تکرار مکرر وظایف مشابه احساس رضایت خواهند کرد. در ضمن ماشین ها این کار را خیلی خوب و همیشه با لبخند انجام می دهند!
اگر نیاز خاص باشد، این فعالیتهای آزمایشی مرتبط باقی میمانند، مثلاً اگر نیاز دارید یک نسخه واحد از یک محصول را ایمن کنید یا کیفیت کلی پروژهای را که در حال اتمام است ارزیابی کنید. برعکس، ادغام این رویکرد به عنوان یک ناشر که دائماً در حال انتشار ویژگیهای جدید در سیستمهای نرمافزاری است که به طور فزایندهای پیچیده میشوند و خروجیهای آن به طور فزایندهای رایج است، دشوار است. در AT Internet ما ارزش تست دستی را تشخیص می دهیم، اما فقط در یک زمینه بسیار خاص که در این مقاله توضیح داده شده است (قبول).
به همین دلیل تصمیم گرفتم این مقاله را بنویسم: روشن کردن فعالیتهای روزانه یک “مهندس آزمایشی” در شرکت ما و مجموعه مهارتهای کمیاب مورد نیاز برای ایفای این نقش.
موقعیت تستر در AT Internet
برای درک موقعیت تستر، بهتر است به سادگی نقش تستر را همانطور که در شرکت ما تعریف شده است شرح دهیم:
“برای کمک به کیفیت محصولات ارائه شده به مشتریان از طریق اعتبارسنجی خودکار ویژگی های جدید و تشخیص مداوم رگرسیون در ویژگی های موجود.”
وظیفه فوق را می توان به تعدادی از فعالیت ها تقسیم کرد که عبارتند از:
- طراحی و اجرای تست (البته خودکار)
- ابزارها و محیط های تست را مدیریت کنید
- گزارش و ردیابی تمام ناهنجاری های شناسایی شده
… همه اینها با همکاری نزدیک با توسعه دهندگان. تسترها همچنین اعضای ضروری تیم های توسعه Agile هستند.
مستقل، سازنده و منتقد
مهمتر از همه، آزمایش کنندگان باید دارای مهارت های غیر فنی باشند. این مهارت های نرم بسیار مهم هستند.
- آنها باید باشند متفکران عینی و مستقلو حس بسیار خوبی از خدمات مشتری. یک باگ کشف شده اگر واقعاً تأثیر منفی در سطح مشتری داشته باشد، هرگز نمیتواند «عادی» در نظر گرفته شود!
- از آزمایش کنندگان نیز انتظار می رود ارتباط برقرار کنند با توسعه دهندگان خوب است از آنجایی که آنها اغلب حامل اخبار بد هستند، مهم است که اطمینان حاصل شود که یافته ها در الف گزارش می شوند ساختمان راه هدف نهایی بهبود محصول است. و هرگز از کد یک همکار انتقاد نکنید!
- با حفظ نگرش مثبت، آزمایشکنندگان باید همچنان به محصولی که در حال آزمایش است نزدیک شوند راه انتقادیو بالاتر از همه، هرگز به کد اعتماد نکنید – اشکالات همیشه در جایی پنهان می شوند و ترفند این است که آنها را پیدا کنید! این چیزی است که من آن را می نامم
“بدبینی حرفه ای” از تجارت: خوشبین بمانید در حالی که برنامه را به دقت تجزیه و تحلیل می کنید تا مشکلات و سایر مشکلات موجود در آن را پیدا کنید. این همیشه آسان نیست!
تست مهارت
برای همسویی با استراتژی شرکت ما، آزمایش کنندگان باید بدانند که چگونه آزمایش های اولیه را انجام دهند. صدور گواهینامه از طریق در دسترس است بنیاد ISTQB (اگرچه لازم نیست). مهارت های لازم آزمایش کنندگان را قادر می سازد تا به طور موثر تجزیه و تحلیل کنید ویژگی ها، مربوطه را پیدا کنید طرح های تست، طراحی و انجام دهد موارد تست خوب و اجتناب از تلههای معمولی تازه کار، مانند تنظیم تستهایی که به یکدیگر وابسته هستند، در نهایت یک چیز را آزمایش میکنند، یا عملکردهای زیادی را به طور همزمان انجام میدهند. آزمایش موثر را می توان با استفاده از تکنیک های شناخته شده در تجارت به دست آورد: به عنوان مثال، تجزیه و تحلیل مقادیر مرزی، کلاس های هم ارزی، پوشش مسیر و سایر جداول تصمیم گیری.
اما این همه ماجرا نیست…
باید اعتراف کنم که اینجاست که همه چیز برای ما دشوار می شود: آزمایشات ما باید به روش واقعی اجرا شوند. توسعه دهندگان! برای همگام شدن با ادغام مستمر محصول خود و با توجه به حجم و سرعت تحویل خود، نیاز شدیدی به تست خودکار داریم. به همین دلیل است که آزمایش کنندگان ما نیز توسعه دهندگان هستند. مهارتهای آنها به کیفیت محصول کمک میکند و با پیادهسازی ابزارهای مؤثر و مکانیسمهای بازخوردی که به آنها اجازه میدهد حس خوبی از کیفیت کدی که ایجاد میکنند حفظ کنند، به توسعهدهندگان دیگر خدمت میکنند.
هرکس نقشی را ایفا می کند
WE Deming گفت: “کیفیت کار همه است!” در واقع، همه در این موضوع نقشی دارند. این فقط حوزه آزمایش کنندگان یا یک تیم مجزا نیست که به طور خاص به این جنبه از محصولات ما اختصاص داده شده است (در واقع، ما چنین تیمی نداریم). همه باید شرکت کنند و نقش ها و مسئولیت ها بر اساس سطح آزمون تقسیم می شوند:
- تست واحد/یکپارچه سازی مؤلفه (اتوماتیک)
- تست سیستم/ادغام (خودکار)
- آزمایش کنندگان (یا توسعه دهندگان در صورت نیاز)
- تست پذیرش (یا “دستور پخت”) (دستی)
- نمایندگان محصول (صاحبان محصول، مدیران محصول)
در برخی موارد، تیمهای ما بهطور استراتژیک تصمیم میگیرند جلسات آزمایش دستی را با کارکنان مختلف سازماندهی کنند، به عنوان مثال، برای اطمینان از تحویل برنامهای که به اندازه کافی تحت پوشش تستهای خودکار قرار نگرفته است، یا ارائه ویژگیهایی با سطح بالایی از ریسک تجاری. در این موارد، بدون استفاده از سیستم های اعتبارسنجی بسیار پیچیده، به یک دستور العمل موقتی گسترده نیاز است.
چرا روی تست خودکار سرمایه گذاری کنیم؟
ما متعهد به روابط بلندمدت با مشتریان خود هستیم که نیاز به اعتماد دارد. بنابراین، ما باید مراقب کیفیت محصولات خود در میان مدت و بلندمدت باشیم و این شامل مدیریت بدهی فنی، افزایش آنتروپی سیستم ها و هزینه کل مالکیت (TCO) می شود که آزمایش کنندگان به خوبی می دانند.
همانطور که در این مقاله اشاره کردم، ما تصمیم گرفتهایم هزینههای مرتبط با کیفیت (یا بهتر بگوییم غیرکیفیت) خود را به سرمایهگذاری تبدیل کنیم که به تدریج به ما در دستیابی به اهداف زیر کمک میکند:
- صرفه جویی در زمان
- تضمین تامین
- افزایش سهولت توسعه
- بهبود برنامه ریزی ما
- صرفه جویی در پول
آزمایش کنندگان ما تخصص خود را وقف دستیابی به این اهداف می کنند و نیازهای ما در این زمینه قابل توجه است.
استخدام
استخدام همیشه آسان نیست، عمدتاً به دلیل عدم آموزش آزمون در میان فارغ التحصیلان اخیر. با وجود تقاضای فزاینده برای افراد ماهر در بین مشاغل، دورههای مربوط به تست و اتوماسیون در دانشکدههای مهندسی نادر است.
آزمایشکنندگان اغلب توسعهدهندگانی هستند که بهطور تصادفی وارد حوزه آزمایش شدهاند، یا برعکس، افرادی که در موقعیت تعامل با مشتری (پشتیبانی، عیبیابی…) شروع کردهاند و متعاقباً مهارتهای توسعه را کسب کردهاند.
از آنجایی که یافتن ترکیب کاملی از تستر، توسعهدهنده، تحلیلگر، متخصص اتوماسیون آسان نیست، ما بر مهارتهای نرم کاندیداها تمرکز میکنیم. آموزش اصول تست نرم افزار و اسکریپت نویسی به داوطلبانی که دارای اخلاق کاری قوی، مهارت های تحلیلی خوب و انگیزه قوی هستند، بسیار ساده تر از این است که سعی کنید این نوع سخت گیری را در توسعه دهندگان بی دقت القا کنید. با این حال، ما البته همیشه آماده ملاقات با توسعه دهندگان با حسن نیت هستیم که می خواهند از مهارت های اتوماسیون تست خود استفاده کنند! کجا همدیگر را می بینید؟