Sobes.tech
Middle

WebSocket testləri ilə qarşılaşdınızmı?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, olub. WebSocket testləri bağlantının qurulmasını, mesajların göndərilməsi və alınmasını, səhvlərin idarə olunmasını və performansı yoxlamağı əhatə edir.

Test yanaşmaları:

  • Modul testləri: WebSocket ilə işləyən ayrı-ayrı komponentlərin testləri (məsələn, mesajların parsinqi, hadisələrin idarə olunması).
  • İnteqrasiya testləri: Müştəri ilə WebSocket serverinin qarşılıqlı əlaqəsinin yoxlanması.
  • Yük testləri: Çox sayda eyni vaxtda olan müştərilərlə WebSocket əlaqəsinin performansının qiymətləndirilməsi.
  • Təhlükəsizlik testləri: Kodu daxil etmə və ya xidmətin rədd edilməsi kimi zəifliklərin yoxlanması.

Alətlər:

  • Postman: WebSocket əlaqələrini test etməyə, mesaj göndərməyə və almaya imkan verir.
  • Websocket.org (Echo Test): WebSocket-in əsas funksionallığını yoxlamaq üçün sadə onlayn alət.
  • XCUITest: iOS tətbiqlərinin UI testləri üçün çərçivə, WebSocket ilə əlaqəli istifadəçi fəaliyyətlərinin simulyasiyası üçün istifadə edilə bilər.
  • Xüsusi kitabxanalar: Məsələn, Starscream və ya SocketIO test ssenarilərində.

WebSocket bağlantısının qurulmasını yoxlamaq üçün nümunə:

// Test üçün Starscream istifadə nümunəsi
import Starscream
import XCTest

class WebSocketTests: XCTestCase {

    var socket: WebSocket!
    var didConnectExpectation: XCTestExpectation!

    override func setUpWithError() throws {
        // Gözləmə obyektini qururuq
        didConnectExpectation = expectation(description: "WebSocket bağlıdır")
        // Test WebSocket serverinin ünvanını dəyişirik
        socket = WebSocket(request: URLRequest(url: URL(string: "ws://echo.websocket.org")!))
        socket.delegate = self
    }

    override func tearDownWithError() throws {
        // Hər testdən sonra socket-i bağlayırıq
        socket.disconnect()
        socket = nil
        didConnectExpectation = nil
    }

    func testWebSocketConnection() throws {
        // WebSocket serverinə qoşuluruq
        socket.connect()

        // Məhdud vaxt ərzində gözləyirik
        wait(for: [didConnectExpectation], timeout: 10.0)

        // Əlavə yoxlamalar əlavə oluna bilər, məsələn, socket-in vəziyyətini yoxlamaq
        XCTAssertTrue(socket.isConnected, "WebSocket bağlı olmalıdır")
    }
}

// WebSocket delegate üçün genişlənmə
extension WebSocketTests: WebSocketDelegate {
    func didReceive(event: WebSocketEvent, client: WebSocket) {
        switch event {
        case .connected(_):
            print("WebSocket bağlıdır")
            // Uğurlu qoşulma zamanı gözləməni yerinə yetiririk
            didConnectExpectation.fulfill()
        case .disconnected(let reason, let code):
            print("WebSocket bağlantısı kəsildi: \(reason) kod: \(code)")
        case .text(let string):
            print("Mətn alındı: \(string)")
        case .binary(let data):
            print("İkili məlumat alındı: \(data.count) bayt")
        case .ping(_):
            print("Ping alındı")
        case .pong(_):
            print("Pong alındı")
        case .viabilityChanged(_):
            print("İmkan dəyişdi")
        case .reconnectSuggested(_):
            print("Yenidən qoşulma təklif edildi")
        case .cancelled:
            print("WebSocket ləğv edildi")
        case .error(let error):
            print("WebSocket xətası: \(error?.localizedDescription ?? "")")
            XCTFail("WebSocket xəta ilə qarşılaşdı: \(error?.localizedDescription ?? "")")
        }
    }
}