آموزش تست واحد برنامه موبایل سویفت

Unit Testing Swift Mobile App

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: اعمال فرآیند Test-Driven Development (TDD) برای توسعه اپلیکیشن موبایل iOS در Swift Unit Test برنامه موبایل iOS XCTest Framework ایجاد، اجرا و اشکال زدایی تست های واحد وابستگی های ساختگی استفاده از تست وابستگی تزریق وابستگی پیش نیازها:آشنایی با سیستم عامل Swift Mac OS و Xcode

تست واحد یک مهارت ضروری است و این دوره ویدیویی در مورد تست واحد کد سوئیفت است.

اگر این دوره ویدیویی را گذرانده اید، یاد خواهید گرفت که چگونه فرآیند توسعه T est D riven D را دنبال کنید تا یک ویژگی را برای یک برنامه موبایل iOS ساخته شده با Swift پیاده سازی کنید.

این دوره ویدیویی با مبانی تست واحد شروع می‌شود و با مجموعه‌ای از درس‌های بسیار کاربردی ادامه می‌یابد که نشان می‌دهد چگونه می‌توان یک فرآیند تست محور را برای پیاده‌سازی ویژگی ثبت نام کاربر در برنامه تلفن همراه M odel V iew P resenter دنبال کرد.

در پایان این دوره ویدیویی، درک بسیار واضحی از نحوه نوشتن Unit Tests و UI Tests برای برنامه تلفن همراه Swift خود خواهید داشت و قادر خواهید بود حتی کدهای Swift بسیار پیچیده را آزمایش کنید.

اگر یک توسعه‌دهنده مستقل هستید، ممکن است یادگیری نحوه واحد تست برنامه iOS را برای مدتی به تعویق بیندازید. اما اگر قصد دارید به یک تیم بزرگ‌تر بپیوندید، تست واحد برای شما یک مهارت ضروری است تا بتوانید روی ویژگی‌های مهم برنامه کار کنید.

برنامه درسی این دوره را نگاهی بیندازید تا ببینید چه چیزی را پوشش می دهد. چند نمونه درس ویدیویی را تماشا کنید. و اگر سوالی دارید، من همیشه اینجا هستم تا به شما کمک کنم.


سرفصل ها و درس ها

معرفی Introduction

  • کد منبع Source Code

  • معرفی Introduction

مبانی تست واحد در Xcode Basics of Unit Testing in Xcode

  • معرفی Introduction

  • هرم تست Testing Pyramid

  • اصل F.I.R.S.T The F.I.R.S.T Principle

  • چرخه عمر توسعه آزمایش محور Test-Driven Development Lifecycle

  • تست های واحد را در پروژه Xcode فعال کنید Enable Unit Tests in Xcode Project

  • کلاس مورد آزمون واحد پیش فرض توضیح داده شد The Default Unit Test Case Class Explained

  • addTeardownBlock() The addTeardownBlock()

  • ایجاد یک کلاس آزمایشی جدید Creating a New Test Case Class

  • راه هایی برای اجرای تست واحد در Xcode Ways to Run Unit Test in Xcode

  • ترتیب پیش‌فرض آزمون‌های واحد The Default Order of Unit Tests

  • الزامات نامگذاری آزمون واحد Unit Test Naming Requirements

  • راه های غیرفعال کردن یا رد شدن از تست واحد Ways to Disable or Skip Unit Test

  • مشاهده نتایج آزمون Viewing Test Results

  • پوشش کد Code Coverage

  • 100٪ پوشش کد 100% Code Coverage

  • ساختار کد روش آزمون. ترتیب، عمل، ادعا. Test Method Code Structure. Arrange, Act, Assert.

  • ادعاها Assertions

  • فعال کردن Failure Debugger Breakpoint Enabling the Failure Debugger Breakpoint

  • آزمایش توزیع موازی روی کلون های شبیه ساز چندگانه Parallel Distributed Testing on Multiple Simulator Clones

TDD. پیاده سازی اعتبارسنجی مدل TDD. Implementing Model Validator

  • معرفی Introduction

  • تست کنید که نام کاربری معتبر است Test That User First Name is Valid

  • برای یک نام بسیار کوتاه تست کنید Test for a very short First Name

  • برای یک نام بسیار طولانی تست کنید Test for a very long First Name

  • چالش: از TDD برای اجرای اعتبارسنجی نام خانوادگی و آدرس ایمیل استفاده کنید Challenge: Apply TDD to Implement Validation of Last Name and Email Address

  • تست کنید آیا رمزهای عبور کاربر مطابقت دارند یا خیر Test if user passwords match

  • تست کنید که آیا پسوردهای کاربر مطابقت ندارند Test if user passwords do not match

کد تست به صورت مجزا Test Code in Isolation

  • معرفی Introduction

  • تزریق وابستگی Dependency Injection

  • استفاده از پروتکل ها Use of Protocols

  • میزهای تست - جعلی، ساختگی، خرد، ساختگی Test Toubles - Fake, Mock, Stub, Dummy

TDD. پیاده سازی کلاس خدمات شبکه. TDD. Implementing Network Service Class.

  • معرفی Introduction

  • کلاس تست واحد SignupWebServiceTests اولیه ایجاد کنید Create Initial SignupWebServiceTests Unit Test class

  • کلاس Signup WebService اولیه ایجاد کنید Create Initial SignupWebService Class

  • پیاده سازی SignupFormRequestModel Implementing SignupFormRequestModel

  • افزودن CompletionHandler به امضای روش ثبت نام Adding CompletionHandler to Signup Method Signature

  • پیاده سازی Initial SignupResponseModel Implementing the Initial SignupResponseModel

  • پیاده سازی Initial SignupErrors Enum Implementing the Initial SignupErrors Enum

  • پوشه های پروژه را سازماندهی کنید Organize Project Folders

  • ادعا کنید که وضعیت پاسخ برابر با "ok" است Assert that the Response Status is Equal to "ok"

  • اضافه کردن یک انتظار و یک روش انتظار ناهمزمان Adding an Expectation and an Asynchronous Wait Method

  • رشته URL را تزریق کنید Inject URL String

  • URL را آماده کنید Prepare URL

  • شی درخواست URL را آماده کنید Prepare URL Request Object

  • ایجاد DataTask Create DataTask

  • URLSession را تزریق کنید Inject URLSession

  • مدل پاسخ بازگشت Return Response Model

  • در حال امتحان کردن نحوه عملکرد آن با درخواست HTTP واقعی Trying how it works with Real HTTP Request

  • پروتکل URL ساختگی Mock URLProtocol

  • URLSession را از MockURLProtocol استفاده کنید Make URLSession use MockURLProtocol

  • مدل پاسخ JSON ناشناخته را کنترل کنید Handle Unknown JSON Response Model

  • وقتی URL خالی ارائه شد، یک پیام خطای خاص برگردانید When Empty URL Provided Return a Specific Error Message

  • Refactor SignupErrors Enum Refactor SignupErrors Enum

  • درخواست URL آزمایشی انجام نشد Test URL Request Failure

  • پوشش کد را بررسی کنید Check Code Coverage

TDD. پیاده سازی کلاس ارائه دهنده در برنامه MVP TDD. Implementing Presenter Class in MVP Application

  • معرفی Introduction

  • ایجاد کلاس آزمون واحد ارائه دهنده و روش آزمون Create Presenter Unit Test Class and Test Method

  • ساختار مدل فرم ثبت نام را ایجاد کنید Create Signup Form Model Struct

  • کلاس SignupPresenter و متد processUserSignup() ایجاد کنید Create SignupPresenter class and the processUserSignup() method

  • کلاس Initial MockSignupModelValidator ایجاد کنید Create Initial MockSignupModelValidator class

  • پروتکل Validator را ایجاد کنید Create Validator Protocol

  • Inject Validator Mock و اعتبار هر ویژگی Inject Validator Mock and validate each property

  • Refactor Refactor

  • تست واحد برای تایید signup() فراخوانی شد Unit Test to verify the signup() was called

  • کلاس ساختگی SignupWebService ایجاد کنید Create SignupWebService Mock Class

  • پروتکل خدمات وب ثبت نام کنید Signup Web Service Protocol

  • Inject Signup Web Service Mock in to Presenter Inject Signup Web Service Mock in to Presenter

  • تست واحد برای اثبات اینکه Presenter متدی را در View Delagate فراخوانی می کند Unit Test to assert that Presenter calls a method on View Delagate

  • پروتکل View Delegate و MockSignupViewDelegate را ایجاد کنید Create View Delegate Protocol and MockSignupViewDelegate

  • Inject View Delegate به Presenter Inject View Delegate into Presenter

  • شمارش تعداد دفعاتی که یک متد فراخوانی شده است Counting number of times a method was called

  • بررسی کنید که ()SuccessSignup فقط یک بار تماس گرفته باشد Verify that successfulSignup() called one time only

  • Refactor Refactor

  • چالش کدنویسی Coding Challenge

  • ادعا کنید که ارائه دهنده یک Error Handler را در View Delagate فراخوانی می کند Assert that Presenter calls a Error Handler on View Delagate

  • بررسی پوشش کد کلاس ارائه دهنده Review Code Coverage of Presenter Class

واحد تست نمایش کنترلر Unit Testing View Controller

  • معرفی Introduction

  • یک کلاس تست جدید و یک روش تست ایجاد کنید Create a New Test Class and a Test Method

  • آزمایش UITextFields در ابتدا خالی است Test UITextFields are initially empty

  • تست UITextField دارای یک خروجی مرجع است Test UITextField has a referencing outlet

  • Test UIButton دارای @IBAction به آن اختصاص داده شده است Test UIButton has @IBAction assigned to it

  • تست UIButton Action کد را در Presenter فراخوانی می کند Test UIButton Action invokes code in Presenter

  • کلاس MockSignupPresenter ایجاد کنید Create MockSignupPresenter class

  • MockSignupPresenter را به View Controller تزریق کنید Inject MockSignupPresenter into View Controller

تست کد قدیمی یا قدیمی Testing Old or Legacy Code

  • معرفی Introduction

  • کنترلرهای Refactor Massive View Refactor Massive View Controllers

  • از پروتکل ها و تزریق وابستگی استفاده کنید Use Protocols and Dependency Injection

  • افزودن کد به روش های موجود Adding code to existing methods

  • توابع بزرگ را به توابع کوچکتر تقسیم کنید Break large functions into smaller ones

  • بسته بندی کلاس های موجود الگوی دکوراتور. Wrapping existing classes. Decorator pattern.

مثال‌ها: راه‌های بارگذاری UIViewController در تست واحد Examples: Ways to Load UIViewController in a Unit Test

  • در حال بارگیری UIViewController که از Storyboard استفاده می کند Loading UIViewController that uses a Storyboard

  • در حال بارگیری UIViewController که از XIB استفاده می کند Loading UIViewController that uses XIB

  • UIViewController که Views را به صورت برنامه نویسی ایجاد می کند UIViewController that creates Views programmatically

مثال‌ها: روش‌های آزمایشی که خطا را ایجاد می‌کنند Examples: Testing methods that throw Error

  • مثال XCTAssertThrowsError XCTAssertThrowsError example

  • مثال XCTAssertNoThrow XCTAssertNoThrow example

  • نمونه ای از Do Try and Catch به جای XCTAssertThrowsError An example of Do Try and Catch instead of XCTAssertThrowsError

  • نمونه ای از Do Try and Catch به جای XCTAssertNoThrow An example of Do Try and Catch instead of XCTAssertNoThrow

مثال: واحد تست UITextField Attributes Examples: Unit Test UITextField Attributes

  • نمای کلی ویژگی های UITextField: نوع محتوا، نوع صفحه کلید، جای جای... Overview of UITextField Attributes: Content Type, Keyboard Type, Placeholer...

  • تست کنید که UITextField دارای مجموعه آدرس ایمیل UITextContentType باشد Test that UITextField has the Email Address UITextContentType set

  • تست کنید که UITextField دارای نوع صفحه کلید آدرس ایمیل تنظیم شده است Test that UITextField has Email Address keyboard type set

  • تست کنید که رمز عبور UITextField یک ورودی متن امن است Test that Password UITextField is a Secure Text Entry

مثال: تست ناوبری. فشار به پشته ناوبری. Examples: Testing Navigation. Push to Navigation Stack.

  • نمای کلی پروژه Project overview

  • UIViewController را به UINavigationController فشار دهید. منتظر انتظارات باشید Push UIViewController into UINavigationController. Wait for expectations.

  • تست فشار ناوبری. راه جایگزین Test Push Navigation. Alternative way.

  • تست Push Navigation با کلاس Spy Test Push Navigation with Spy class

تست رابط کاربری UI Testing

  • معرفی Introduction

  • دسترسی به عناصر UI Accessing UI Elements

  • هدف تست های رابط کاربری را به پروژه اضافه کنید Add UI Tests target to a project

  • یک کلاس UI Test Case جدید ایجاد کنید Create a new UI Test case class

  • ضبط تست های رابط کاربری یک مقدمه Recording UI Tests. An introduction

  • ضبط تست های رابط کاربری تست کنید آیا UITextFields فعال است یا خیر Recording UI Tests. Test if UITextFields are enabled

  • تست با متغیرهایی UITextField Testing with UITextField placeholders

  • برای بررسی فعال بودن UITextFields، اظهارات را آزمایش کنید Test Assertions to check if UITextFields are enabled

  • افزودن شناسه های دسترسی به UITextFields Adding accessibility identifiers to UITextFields

  • یافتن عناصر رابط کاربری Finding UI elements

  • یک روش آزمایشی برای تأیید اینکه یک هشدار خطا ارائه شده است A Test method to assert that an error alert is presented

  • ساخت UIViewController display UIAlertController Making UIViewController display UIAlertController

  • Refactor Refactor

  • Refactor Refactor

  • گفتگوی هشدار موفقیت تست Test for Success Alert Dialog

  • صبر کنید تا View Controller ظاهر شود Wait for View Controller to appear

  • اقدامات و حرکات XCUIElement XCUIElement Actions and Gestures

تست رابط کاربری اسکرین شات ها و پیوست ها UI Testing. Screenshots & Attachments.

  • معرفی Introduction

  • تولید و پیش نمایش اسکرین شات ها Generating and Previewing Screenshots

  • فعال و غیرفعال کردن اسکرین شات های خودکار Enabling and Disabling Automatic Screenshots

  • گرفتن اسکرین شات از عنصر UI خاص Taking Screenshot of Specific UI Element

  • یک اسکرین شات از صفحه نمایش دستگاه فعلی بگیرید Take a Screenshot of Current Device Screen

تست رابط کاربری Arguments را راه اندازی کنید. UI Testing. Launch Arguments.

  • معرفی Introduction

  • پاس کردن و خواندن آرگومان های راه اندازی Passing and Reading Launch Arguments

  • پاس کردن و خواندن ارزش‌های محیطی راه‌اندازی Passing and Reading Launch Environment Values

تست رابط کاربری طرح های تست UI Testing. Test Plans.

  • معرفی Introduction

  • معرفی Introduction

  • ایجاد یک طرح آزمایشی جدید Creating a new Test plan

  • ایجاد پیکربندی طرح آزمایشی جدید Creating new test plan configuration

  • یک طرح آزمایشی جداگانه برای تست‌های UI، تست‌های واحد و همه تست‌ها A separate Test Plan for UI Tests, Unit Tests and All Tests

  • محلی سازی اسکرین شات های نمایشی Localization screenshots demo

بخش پاداش Bonus section

  • سخنرانی پاداش Bonus lecture

نمایش نظرات

آموزش تست واحد برنامه موبایل سویفت
جزییات دوره
8.5 hours
136
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
6,682
4.6 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Sergey Kargopolov Sergey Kargopolov

توسعه دهنده نرم افزار