TestMace. شروع سریع

TestMace. شروع سریع

سلام به همه. ما کم کم داریم از سایه ها بیرون می آییم و سری مقالات در مورد محصول خود را ادامه می دهیم. بعد از قبلی مقاله مروری، ما بازخوردهای زیادی (عمدتاً مثبت)، پیشنهادات و گزارش‌های اشکال دریافت کردیم. امروز نشان خواهیم داد TestMace در عمل و شما قادر خواهید بود از برخی از ویژگی های برنامه ما قدردانی کنید. برای غوطه وری کامل تر، به شما توصیه می کنم به مستندات ما در آدرس مراجعه کنید http://docs-ru.testmace.com. پس بزن بریم!

نصب

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

سناریوی آزمایشی

ما سناریوی استاندارد زیر را به عنوان موضوع آزمایشی خود انتخاب کردیم:

  • ورود: کاربر - مدیر، رمز عبور - رمز عبور
  • یک ورودی جدید اضافه کنید
  • بیایید بررسی کنیم که رکورد به درستی اضافه شده است

تست خواهیم کرد https://testmace-quick-start.herokuapp.com/. این طبیعی است json-server، برای آزمایش چنین برنامه هایی عالی است. ما فقط مجوز توسط توکن را به همه مسیرهای سرور json اضافه کردیم و یک روش ورود برای دریافت این نشانه ایجاد کردیم. ما به تدریج حرکت خواهیم کرد و به تدریج پروژه خود را بهبود خواهیم داد.

ایجاد یک پروژه و تلاش برای ایجاد یک موجودیت بدون مجوز

ابتدا بیایید یک پروژه جدید ایجاد کنیم (پرونده->پروژه جدید). اگر برای اولین بار برنامه را راه اندازی می کنید، یک پروژه جدید به طور خودکار باز می شود. ابتدا، بیایید سعی کنیم درخواستی برای ایجاد یک رکورد جدید ارائه کنیم (در صورتی که ایجاد رکوردها بدون مجوز در دسترس باشد). موارد را از منوی زمینه گره پروژه انتخاب کنید اضافه کردن گره -> RequestStep. نام گره را روی ایجاد پست. در نتیجه یک گره جدید در درخت ایجاد می شود و یک تب برای این گره باز می شود. بیایید پارامترهای درخواست زیر را تنظیم کنیم:

  • نوع درخواست: POST
  • آدرس: https://testmace-quick-start.herokuapp.com/posts
  • بدنه درخواست: json با مقدار {"title": "New testmace quick start post"}
    اگر همه کارها را به درستی انجام داده باشید، رابط کاربری به شکل زیر خواهد بود:

TestMace. شروع سریع

با این حال، اگر سعی کنیم درخواست را انجام دهیم، سرور یک کد 401 را برمی گرداند و بدون مجوز چیزی در این سرور دریافت نمی کنیم. خوب، به طور کلی، همانطور که انتظار می رود).

افزودن درخواست مجوز

همانطور که قبلاً گفته شد، ما یک نقطه پایانی POST داریم /login، که json را به عنوان بدنه درخواست فرم می گیرد: {"username": "<username>", "password": "<password>"}جایی که username и password (باز هم از پاراگراف مقدماتی بالا) معانی دارند admin и password به ترتیب. در پاسخ، این نقطه پایانی json like را برمی گرداند {"token": "<token>"}. ما از آن برای مجوز استفاده خواهیم کرد. بیایید ایجاد کنیم RequestStep گره با نام ورود، به عنوان یک جد عمل خواهد کرد پروژه گره با استفاده از کشیدن و رها کردن، یک گره داده شده در درخت را بالاتر از گره حرکت دهید ایجاد پست. بیایید پارامترهای زیر را برای درخواست ایجاد شده جدید تنظیم کنیم:

بیایید درخواست را اجرا کنیم و کد دو صدم را با توکن موجود در پاسخ دریافت کنیم. چیزی شبیه به این:

TestMace. شروع سریع

Refactoring: حذف دامنه تکراری

تاکنون درخواست‌ها به یک اسکریپت پیوند داده نشده‌اند. اما این تنها ایراد نیست. اگر دقت کنید متوجه می شوید که حداقل دامنه در هر دو درخواست تکراری است. خوب نیست. زمان آن رسیده است که این بخش از اسکریپت آینده را اصلاح کنیم و متغیرها در این مورد به ما کمک خواهند کرد.

در یک تقریب اول، متغیرها همان نقشی را ایفا می کنند که در سایر ابزارها و زبان های برنامه نویسی مشابه وجود دارد - حذف تکراری، افزایش خوانایی و غیره. می توانید در مورد متغیرها بیشتر بخوانید مستندات ما. در این صورت به متغیرهای کاربر نیاز خواهیم داشت.

بیایید یک متغیر در سطح گره پروژه تعریف کنیم domain با معنی https://testmace-quick-start.herokuapp.com. برای این شما نیاز دارید

  • تب را با این گره باز کنید و روی نماد ماشین حساب در بالا سمت راست کلیک کنید
  • کلیک کنید + افزودن متغیر
  • نام و مقدار متغیر را وارد کنید
    در مورد ما، گفتگو با متغیر اضافه شده به این صورت خواهد بود:

TestMace. شروع سریع

خوب. حال به دلیل وراثت می توانیم از این متغیر در فرزندان هر سطح تودرتو استفاده کنیم. در مورد ما اینها گره هستند ورود и ایجاد پست. برای استفاده از یک متغیر در یک فیلد متنی، باید بنویسید ${<variable_name>}. به عنوان مثال، url ورود به سیستم تبدیل شده است ${domain}/login، به ترتیب برای ایجاد پست آدرس گره مانند خواهد بود ${domain}/posts.

بنابراین، با هدایت اصل DRY، سناریو را کمی بهبود بخشیده ایم.

توکن را در یک متغیر ذخیره کنید

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

ابتدا بیایید یک درخواست ورود انجام دهیم. در برگه تجزیه شده پاسخ دهید، مکان نما را روی نشانه حرکت دهید و در منوی زمینه (که با دکمه سمت راست ماوس یا با کلیک بر روی دکمه ... فراخوانی می شود) مورد را انتخاب کنید. به متغیر اختصاص دهید. یک گفتگو با فیلدهای زیر ظاهر می شود:

  • راه - کدام قسمت از پاسخ گرفته شده است (در مورد ما چنین است body.token)
  • ارزش فعلی - چه ارزشی در طول مسیر نهفته است (در مورد ما این مقدار رمز است)
  • نام متغیر - نام متغیر Where ارزش فعلی حفظ خواهد شد. در مورد ما خواهد بود token
  • گره - در کدام یک از اجداد متغیر ایجاد خواهد شد نام متغیر. بیایید Project را انتخاب کنیم

دیالوگ تکمیل شده به شکل زیر است:

TestMace. شروع سریع

حالا هر بار که گره اجرا می شود ورود متغیر پویا token با مقدار جدید از پاسخ به روز می شود. و این متغیر در آن ذخیره خواهد شد پروژه گره و به لطف وراثت، در دسترس فرزندان خواهد بود.

برای دسترسی به متغیرهای پویا باید استفاده کنید متغیر داخلی $dynamicVar. به عنوان مثال، برای دسترسی به یک توکن ذخیره شده، باید تماس بگیرید ${$dynamicVar.token}.

ما رمز مجوز را به درخواست ها منتقل می کنیم

در مراحل قبلی رمز مجوز را دریافت کردیم و تنها کاری که باید انجام دهیم این است که یک هدر اضافه کنیم Authorization با معنی Bearer <tokenValue> در تمام درخواست‌هایی که نیاز به مجوز دارند، از جمله ایجاد پست. راه های مختلفی برای این کار وجود دارد:

  1. رمز را به صورت دستی کپی کنید و یک هدر مجوز را به درخواست های مورد علاقه اضافه کنید. این روش کار می کند، اما استفاده از آن فقط به درخواست هایی از نوع "ساخت و دور ریخته شده" محدود می شود. برای اجرای مکرر اسکریپت ها مناسب نیست
  2. از قابلیت استفاده کنید مجوز.
  3. استفاده کنید سرصفحه های پیش فرض

استفاده از روش دوم بدیهی به نظر می رسد، اما در چارچوب این مقاله، این رویکرد ... جالب نیست. خوب، واقعاً: مکانیسم مجوز به علاوه منهای از ابزارهای دیگر برای شما آشنا است (حتی اگر مواردی مانند این داشته باشیم وراثت مجوز) و بعید است که سوالی را مطرح کند.

مورد دیگر هدرهای پیش فرض است! به طور خلاصه، هدرهای پیش فرض، هدرهای HTTP ارثی هستند که به طور پیش فرض به درخواست اضافه می شوند، مگر اینکه صراحتاً غیرفعال شوند. با استفاده از این قابلیت، به عنوان مثال، می توانید مجوز سفارشی را پیاده سازی کنید یا به سادگی از شر تکرار در اسکریپت ها خلاص شوید. بیایید از این ویژگی برای ارسال یک نشانه در هدرها استفاده کنیم.

قبلاً، توکن را با احتیاط در یک متغیر پویا ذخیره کردیم $dynamicVar.token در سطح گره پروژه تنها کاری که باقی می ماند این است که موارد زیر را انجام دهید:

  1. عنوان پیش فرض را تعریف کنید Authorization با معنی Bearer ${$dynamicVar.token} در سطح گره پروژه برای انجام این کار، در رابط پروژه گره باید یک دیالوگ با عناوین پیش فرض باز کنید (دکمه سرآیندهای در گوشه سمت راست بالا) و عنوان مربوطه را اضافه کنید. گفتگو با مقادیر پر شده به صورت زیر خواهد بود:
    TestMace. شروع سریع
  2. این هدر را از درخواست ورود غیرفعال کنید. این قابل درک است: در زمان ورود، ما هنوز توکن نداریم و با این درخواست آن را نصب خواهیم کرد. بنابراین، در رابط ورود به سیستم درخواست در تب سرآیندهای در محدوده ی به ارث برده تیک هدر Authorization را بردارید.

همین. اکنون هدر مجوز به تمام درخواست هایی که فرزندان گره پروژه هستند اضافه می شود، به جز گره ورود. به نظر می رسد که در این مرحله ما یک اسکریپت آماده داریم و تنها کاری که باید انجام دهیم این است که آن را راه اندازی کنیم. با انتخاب می توانید اسکریپت را اجرا کنید دویدن در منوی زمینه گره پروژه.

بررسی صحت ایجاد پست

در این مرحله، اسکریپت ما می تواند وارد شده و با استفاده از یک نشانه مجوز، یک پست ایجاد کند. با این حال، باید مطمئن شویم که پست جدید ایجاد شده نام صحیحی دارد. یعنی در اصل تنها چیزی که باقی می ماند این است که موارد زیر را انجام دهید:

  • ارسال درخواست برای دریافت پست با شناسه،
  • بررسی کنید که نام دریافتی از سرور با نام ارسالی هنگام ایجاد پست مطابقت داشته باشد

بیایید به مرحله اول نگاه کنیم. از آنجایی که مقدار id در حین اجرای اسکریپت تعیین می شود، باید یک متغیر پویا ایجاد کنید (بیایید آن را صدا کنیم postId) از گره ایجاد پست در سطح گره پروژه ما قبلاً می دانیم که چگونه این کار را انجام دهیم، فقط به بخش مراجعه کنید توکن را در یک متغیر ذخیره کنید. تنها چیزی که باقی می ماند ایجاد یک درخواست برای دریافت پست با استفاده از این شناسه است. برای انجام این کار، اجازه دهید یک RequestStep ایجاد کنیم دریافت پست با پارامترهای زیر:

  • نوع درخواست: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

برای اجرای مرحله دوم باید با آن آشنا شویم ادعا گره. گره Assertion گره ای است که به شما امکان می دهد برای درخواست های خاص چک بنویسید. هر گره Assertion می تواند حاوی چندین ادعا (چک) باشد. شما می توانید در مورد انواع ادعاها از ما بیشتر بخوانید مستندات. ما استفاده خواهیم کرد Compare ادعا با اپراتور equal. چندین روش برای ایجاد ادعا وجود دارد:

  1. طولانی. به صورت دستی یک گره Assertion را از منوی زمینه گره RequestStep ایجاد کنید. در گره Assertion ایجاد شده، اظهار علاقه را اضافه کنید و فیلدها را پر کنید.
  2. سریع. با استفاده از منوی زمینه، یک گره Assertion به همراه یک ادعا از پاسخ گره RequestStep ایجاد کنید.

بیایید از روش دوم استفاده کنیم. این همان چیزی است که برای پرونده ما به نظر می رسد.

TestMace. شروع سریع

برای کسانی که متوجه نمی شوند، این چیزی است که اتفاق می افتد:

  1. در گره درخواست بدهید دریافت پست
  2. در برگه تجزیه شده پاسخ دهید، با منوی زمینه تماس بگیرید و انتخاب کنید ادعا ایجاد کنید -> مقايسه كردن -> برابر

تبریک می گوییم، ما اولین آزمون خود را ایجاد کردیم! ساده است، اینطور نیست؟ حالا می توانید اسکریپت را به طور کامل اجرا کنید و از نتیجه لذت ببرید. تنها چیزی که باقی می ماند این است که آن را کمی اصلاح کنیم و بیرون بیاوریم title در یک متغیر جداگانه اما ما این را به عنوان تکلیف برای شما می گذاریم)

نتیجه

در این راهنما، ما یک سناریوی کامل ایجاد کردیم و در عین حال برخی از ویژگی های محصول خود را بررسی کردیم. البته ما از تمامی قابلیت ها استفاده نکردیم و در مقالات بعدی به بررسی کامل قابلیت های TestMace خواهیم پرداخت. گوش به زنگ باشید!

PS برای کسانی که برای بازتولید تمام مراحل تنبل هستند، لطفاً ضبط کرده ایم مخزن با پروژه از مقاله می توانید آن را با پرونده -> پروژه باز و پوشه Project را انتخاب کنید.

منبع: www.habr.com

اضافه کردن نظر