Swift Academy · पाठ

Async टेस्ट और प्रदर्शन मापन

async/await से async फ़ंक्शन का परीक्षण करें और XCTMeasureOptions से मापन करें।

पाठ 4, कुल 4 में से13 चरण

Async टेस्ट और प्रदर्शन मापन, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

असिंक्रोनस फ़ंक्शन का परीक्षण

परीक्षण बॉडी के भीतर अतिरिक्त अनावश्यक कोड के बिना सीधे await का उपयोग करने के लिए परीक्षण विधियों को async throws के रूप में घोषित करें।

final class FetcherTests: XCTestCase {
  func testFetchReturnsUser() async throws {
    let user = try await UserService().fetchUser(id: 1)
    XCTAssertEqual(user.name, "Alice")
  }
}

असिंक्रोनस setUp और tearDown

प्रत्येक परीक्षण से पहले असिंक्रोनस आरंभीकरण करने के लिए setUp() async throws को ओवरराइड करें।

override func setUp() async throws {
  try await super.setUp()
  sut = await AsyncService.make()
}

कॉलबैक API के लिए XCTestExpectation

async/await के बजाय कॉलबैक का उपयोग करने वाले API के लिए XCTestExpectation और wait(for:timeout:) का उपयोग करें।

func testCallback() {
  let exp = expectation(description: "data received")
  service.fetchWithCallback { data in
    XCTAssertNotNil(data)
    exp.fulfill()
  }
  wait(for: [exp], timeout: 5.0)
}

अपेक्षाओं को उलटना

उलटी हुई अपेक्षा तब विफल होती है जब वह पूरी होती है—यह अभिकथन करने के लिए उपयोगी है कि कॉलबैक को कॉल नहीं किया गया है।

let noCall = expectation(description: "should not fire")
noCall.isInverted = true
cancelledTask.onComplete { noCall.fulfill() }
wait(for: [noCall], timeout: 1.0)

प्रदर्शन के लिए XCTMeasure

measure {} अपने ब्लॉक को 10 बार चलाता है और औसत समय, मानक विचलन तथा आधाररेखा से तुलना की रिपोर्ट देता है।

func testSortPerformance() {
  let data = Array(0..<10_000).shuffled()
  measure {
    _ = data.sorted()
  }
}

XCTMeasureOptions

पुनरावृत्तियों की संख्या और मापे जाने वाले मेट्रिक—समय, मेमोरी या CPU—को कॉन्फ़िगर करें।

func testParsePerformance() {
  let options = XCTMeasureOptions()
  options.iterationCount = 5
  measure(options: options) {
    _ = try? JSONDecoder().decode([Item].self, from: largeJSON)
  }
}

असिंक्रोनस प्रदर्शन मापन

असिंक्रोनस ऑपरेशन का प्रदर्शन मापने के लिए असिंक्रोनस ब्लॉक के साथ measure(metrics:options:block:) का उपयोग करें।

func testAsyncFetchPerformance() {
  measure {
    let exp = expectation(description: "done")
    Task {
      _ = try? await service.fetchAll()
      exp.fulfill()
    }
    wait(for: [exp], timeout: 10)
  }
}

आधाररेखाएँ

मापन परीक्षण चलाने के बाद Xcode में आधाररेखा सेट करें। यदि भविष्य के रन में प्रदर्शन निर्धारित सीमा से अधिक घटता है, तो वे विफल हो जाएँगे।

// Xcode: click the grey icon next to the measure test
// → "Set Baseline" to record the current average
// Subsequent runs compare against the baseline

एक्टर-पृथक कोड का परीक्षण

await का उपयोग करके परीक्षणों से एक्टर-पृथक स्थिति तक पहुँचें।

actor Counter { var value = 0; func increment() { value += 1 } }
final class CounterTests: XCTestCase {
  func testIncrement() async {
    let counter = Counter()
    await counter.increment()
    let val = await counter.value
    XCTAssertEqual(val, 1)
  }
}

Swift Testing फ़्रेमवर्क (Swift 6)

Swift 6 में @Test, #expect और @Suite वाला नया Testing फ़्रेमवर्क शामिल है, जो XCTest का आधुनिक विकल्प है।

import Testing

@Suite struct MathTests {
  @Test func addition() {
    #expect(2 + 2 == 4)
  }
}

XCTest और Swift Testing को मिलाकर उपयोग करना

XCTest से Swift Testing में स्थानांतरण के दौरान दोनों फ़्रेमवर्क एक ही परीक्षण लक्ष्य में साथ-साथ रह सकते हैं।

import XCTest
import Testing
// Legacy XCTestCase tests alongside @Test functions
// Both run when the test target is executed

त्वरित जाँच

कौन-सा XCTest API किसी कोड ब्लॉक के प्रदर्शन को मापता है और उसकी तुलना संग्रहीत आधाररेखा से करता है?

पाठ का पुनरावलोकन

सीधे await का उपयोग करने के लिए परीक्षण विधियों को async throws के रूप में चिह्नित करें। कॉलबैक-आधारित एपीआई के लिए XCTestExpectation का उपयोग करें। measure {} से माप लें और प्रतिगमन का पता लगाने के लिए आधार-मान निर्धारित करें। await के साथ ऐक्टर का परीक्षण करें। आधुनिक परीक्षणों के लिए Swift Testing के @Test और #expect का उपयोग करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “Async टेस्ट और प्रदर्शन मापन” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Async टेस्ट और प्रदर्शन मापन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Async टेस्ट और प्रदर्शन मापन” में मैं क्या सीखूँगा?

async/await से async फ़ंक्शन का परीक्षण करें और XCTMeasureOptions से मापन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Async टेस्ट और प्रदर्शन मापन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. XCTestCase सेटअप, टियरडाउन और टेस्ट विधियाँ
  2. XCTAssert परिवार और थ्रो करने वाले अभिकथन
  3. प्रोटोकॉल-आधारित मॉकिंग और निर्भरता इंजेक्शन
  4. Async टेस्ट और प्रदर्शन मापन
← Swift Academy पर वापस जाएँ