Saltar al contenido →

Test de Rendimiento con XCTest

Además de escribir pruebas que comprueben que nuestro código se comporta como debe en todo tipo de situaciones también debemos procurar que sea lo más eficiente (y rápido) posible.

Nuevamente el framework XCTest acude en nuestra ayuda en forma de método, concretamente de measureBlock.

Este método recibe como parámetro un block o closure con el código del que queremos medir el rendimiento. ¿Y cómo lo hace? Pues de una forma sencilla, ejecuta diez veces el código y te muestra los resultados obtenidos

A performance test takes a block of code that you want to evaluate and runs it ten times, collecting the average execution time and the standard deviation for the runs

Para nuestro ejemplo volveremos a usar el framework de acceso a Fanart.TV que puedes encontrar en este repositorio de github.

///
/// Prueba de rendimiento para la operacion
/// de recuperacion de datos para una serie de TV
///
func testShow()
{
    // Manhattan Love Story
    let showID: Int = 281624

    // Closure de rendimiento
    // Se ejecuta 10 veces
    self.measureBlock()
    {
        let expectation: XCTestExpectation = self.expectationWithDescription("Rendimiento de fanartForShow()")

        FanartClient.sharedInstance.fanartForShow(showID) { (show, error) -> (Void) in
            // Comprobamos errores en la llamadas
            XCTAssertNil(error, "Se ha producido un error en el framework")

            if let show = show
            {
                print("# \(show.showName)")
            }
            else
            {
                print("#El show no existe")
            }

            // Operacion asincrona terminada
            expectation.fulfill()
        }

        // Esperamos a que la operacion termine
        self.waitForExpectationsWithTimeout(10, handler: { (error: NSError?) -> Void in
            if let error = error
            {
                print("testError. \(error.localizedDescription)")
            }
        })
    }
}

Tras ejecutar el test podemos ver los resultados desde el editor de código fuente, el panel del navegador de test y desde el panel del navegador de informes. Haciendo click sobre uno de estos test podremos ver información detallada para cada una de las ejecuciones (10 en total) que han tenido lugar.

Xcode Test

Como se puede ver no es nada complicado hacer pequeños test de rendimiento en nuestros proyectos.

Publicado en Swift