مبادله

ساخت وبلاگ

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

در این راهنما خواهیم فهمید که برخی از معاملات چه چیزی هستند - و به طور خاص چگونه می توانید در اطراف آنها کار کنید.

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

معاملات دائمی:

  • سرو یک ابزار اتوماسیون هدف کلی نیست.
  • دستورات سرو در داخل مرورگر اجرا می شود.
  • هرگز پشتیبانی از زبانه های مرورگر متعدد وجود نخواهد داشت.
  • شما نمی توانید از Cypress برای رانندگی همزمان دو مرورگر استفاده کنید.
  • هر آزمون به یک فوق العاده فوق العاده محدود می شود. با استفاده از دستور cy. origin می توان ناوبری متقاطع را در داخل آزمایشات فعال کرد. لطفاً راهنمای تست Cross Origin ما را بخوانید.

معاملات موقت:

ما مسائل باز داریم که می توانید لیست کاملی از مواردی را که Cypress در نهایت به آن می پردازید ، پیدا کنید ، ما می خواستیم برخی از محدودیت های مهم موقت را که Cypress در نهایت به آن می پردازیم ، برجسته کنیم. روابط عمومی خوش آمدید ؛-)

بسیاری از این موارد در حال حاضر روی نقشه راه ما کار می کنند یا در نقشه راه ما قرار دارند.

معاملات دائمی

محدودیت اتوماسیون

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

  • نمایه سازی وب
  • پیوندهای عنکبوت
  • ازمایش عملکرد
  • اسکریپت سایت های 3 حزب

ابزارهای عالی دیگری نیز وجود دارد که برای انجام هر مورد ذکر شده در بالا بهینه شده است.

از نقطه شیرین سرو به عنوان ابزاری برای آزمایش برنامه شخصی خود در هنگام ساخت آن استفاده می شود. این برنامه برای توسعه دهندگان و مهندسان QA ساخته شده است ، نه آزمایش کننده دستی یا آزمایش اکتشافی.

داخل مرورگر

در صورتی که قبلاً آن را از دست ندهید - تست های سرو در داخل مرورگر اجرا می شود! این بدان معنی است که ما می توانیم کارهایی را انجام دهیم که هیچ کس دیگری نمی تواند. هیچ سریال سازی شیء یا پروتکل های سیم JSON وجود ندارد. شما دسترسی واقعی و بومی به همه چیز موجود در برنامه خود را تحت آزمون دارید. عناصر "از دست" برای سرو غیرممکن است و همیشه لحظه ای را می داند که برنامه شما هر نوع واقعه را آتش می زند.

اما این بدان معنی است که کد آزمون شما در داخل مرورگر ارزیابی می شود. کد آزمون در گره یا هر زبان جانبی سرور دیگر ارزیابی نمی شود. تنها زبانی که تا به حال از آن پشتیبانی خواهیم کرد زبان وب است: JavaScript.

این تجارت به این معنی است که برقراری ارتباط با انتهای عقب - مانند سرور یا بانک اطلاعاتی شما ، کمی سخت تر می شود. شما قادر به اتصال یا وارد کردن آن کتابخانه ها یا ماژول های سمت سرور نخواهید بود. اگرچه می توانید به node_modules نیاز داشته باشید که می تواند در مرورگر استفاده شود. علاوه بر این ، شما توانایی استفاده از گره را برای وارد کردن یا صحبت مستقیم با اسکریپت های انتهای خود با استفاده از افزونه های API یا Cy. task () دارید.

برای صحبت با پایگاه داده یا سرور خود ، باید از دستورات Cy. exec () ، Cy. Task () یا Cy. Request () استفاده کنید. این بدان معناست که شما باید راهی برای بذر و تنظیم پایگاه داده خود در معرض دید قرار دهید. این واقعاً چندان سخت نیست ، اما ممکن است کمی چربی آرنج بیشتر از سایر ابزارهای آزمایشی باشد که به زبان انتهای شما نوشته شده است.

تجارت در اینجا این است که انجام همه کارها در مرورگر (اساساً تمام آزمایشات شما) تجربه بسیار بهتری در سرو است. اما انجام کارها در خارج از مرورگر ممکن است کمی کار اضافی انجام دهد.

در آینده ما برنامه هایی برای انتشار آداپتورهای انتهایی برای سایر زبانها داریم.

زبانه های چندگانه

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

برای برداشتن این یک قدم بیشتر - ما اعتقاد نداریم که مورد استفاده برای آزمایش رفتار بومی مرورگر وجود دارد. شما باید از خود بپرسید که چرا در حال تست هستید که کلیک روی یک برگه جدید را باز می کند. شما از قبل می دانید که این مرورگر برای انجام این کار طراحی شده است و می دانید که توسط ویژگی Target = "_ Blank" ایجاد شده است.

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

این اصل در مورد همه چیز موجود در سرو اعمال می شود. آنچه را که نیازی به آزمایش ندارد آزمایش نکنید. کند ، شکننده است و مقدار صفر را اضافه می کند. فقط چیز اساسی را که باعث رفتاری می شود ، آزمایش کنید.

مرورگرهای متعدد در همان زمان باز می شوند

دقیقاً مانند چندین زبانه - Cypress از کنترل بیش از 1 مرورگر باز در یک زمان پشتیبانی نمی کند.

با این وجود می توان Cypress را با یک فرآیند پشتی دیگر همگام سازی کرد - خواه این سلنیوم باشد یا عروسک پپتین برای رانندگی یک مرورگر 2 باز. ما در واقع این کار را با هم کاملاً زیبا دیده ایم!

با این گفته ، به جز در شرایط غیرمعمول ترین و نادر ، شما هنوز هم می توانید بیشترین رفتار کاربردی را بدون باز کردن مرورگرهای متعدد به طور همزمان آزمایش کنید.

ممکن است در مورد این عملکرد مانند این سؤال کنید:

من سعی می کنم یک برنامه چت را آزمایش کنم. آیا می توانم بیش از یک مرورگر را به طور همزمان با Cypress اجرا کنم؟

این که آیا شما در حال آزمایش یک برنامه گپ یا هر چیز دیگری هستید - آنچه واقعاً از شما می پرسید ، آزمایش همکاری است. اما ، برای آزمایش همکاری با 100 ٪ پوشش ، نیازی به بازآفرینی کل محیط ندارید.

انجام این کار از این طریق می تواند سریعتر ، دقیق تر و مقیاس پذیر تر باشد.

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

1. فقط از مرورگر استفاده کنید:

از سرور خودداری کنید ، از تماس های JavaScript خود به صورت دستی استفاده کنید و از این طریق آنچه را که هنگام ورود "اعلان ها وارد می شوند" اتفاق می افتد ، یا "کاربران چت را ترک می کنند" صرفاً در مرورگر.

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

2. اتصال دیگر را خرد کنید:

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

به طور معمول این الگوی شما را قادر می سازد تا از ایجاد یک اتصال ثانویه WebSocket خودداری کنید و هنوز هم مرورگر دو طرفه و قرارداد سرور را برآورده می کند. این بدان معنی است که شما همچنین می توانید موارد لبه (قطع ارتباط و غیره) را آزمایش کنید بدون اینکه در واقع اتصالات واقعی انجام شود.

3: ارتباط دیگری را معرفی کنید:

برای انجام این کار - شما به یک فرایند پس زمینه در خارج از مرورگر نیاز دارید تا اتصال زیربنایی WebSocket را ایجاد کنید که بتوانید با آن ارتباط برقرار کرده و کنترل کنید.

شما می توانید این کار را از بسیاری جهات انجام دهید و در اینجا نمونه ای از استفاده از سرور HTTP برای عمل به عنوان مشتری و در معرض رابط REST است که ما را قادر می سازد تا آن را کنترل کنیم.

و کد سرور HTTP چیزی شبیه به این است.

این امر از نیاز به مرورگر باز دوم جلوگیری می کند ، اما هنوز هم یک آزمایش پایان به پایان می دهد که اطمینان 100 ٪ اطمینان حاصل می کند که این دو مشتری می توانند با یکدیگر ارتباط برقرار کنند.

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : مهدی اسدی بازدید : <-PostHit-> تاريخ : يکشنبه 4 تير 1402 ساعت: 19:06