Hola Habr! Les presento la traducción del artículo
"WWDC19: Comenzando con el plan de prueba para XCTest" por Shashikant Jagtap.

En la última conferencia de la
WWDC , Apple mostró nuevas características interesantes para los desarrolladores. Xcode 11 también agrega algunas características increíbles. Puede leer sobre ellos en las
notas de la versión . Una de las herramientas más importantes anunciadas este año es el Plan de prueba para XCTest y Xcode UI. En este artículo, examinaremos en detalle cómo funcionará la funcionalidad de Test Plan con XCTest. Si desea conocer más detalles, mire el video de la sesión
"Pruebas en Xcode".Plan de prueba de Xcode
Antes de Xcode 11, la configuración de prueba era parte de los esquemas de Xcode. Si los desarrolladores querían configurar diferentes conjuntos de pruebas para diferentes condiciones, crearon un nuevo circuito o editaron uno existente para necesidades de prueba específicas. La configuración de prueba estaba estrechamente relacionada con los esquemas de Xcode, por lo que tuve que crear muchos esquemas para diferentes tareas durante las pruebas.
La nueva funcionalidad en Xcode 11 permite a los desarrolladores e ingenieros de control de calidad personalizar las pruebas para satisfacer sus necesidades. El Plan de prueba le permite determinar:
- qué pruebas ejecutar en la asamblea;
- cómo ejecutar estas pruebas (por ejemplo, en orden aleatorio o alfabético);
- Cómo administrar los artefactos de prueba (por ejemplo, archivos adjuntos y capturas de pantalla);
- cómo usar herramientas de tiempo de ejecución como parte de las pruebas.
Con Xcode Test Plan, puede configurar suites de prueba independientemente de los esquemas de Xcode. Esta es una mejora significativa en la tecnología de prueba que puede llevar sus pruebas al siguiente nivel. Ahora echemos un vistazo al plan de prueba de Xcode en acción.
El guión
Supongamos que creamos un plan de prueba para pruebas funcionales con los siguientes requisitos:
- Las pruebas funcionales deben incluir kits para pruebas de humo y regresión;
- Las pruebas de humo deben realizarse en Londres (Reino Unido) y las pruebas de regresión en San Francisco (EE. UU.);
- Las pruebas de humo deben ejecutarse en orden alfabético y las pruebas de regresión deben ejecutarse en orden aleatorio para detectar problemas entre pruebas.
Crearemos este plan de prueba para Xcode para varias plataformas de Apple.
Crear un plan de prueba en Xcode
Xcode 11 nos permite definir estos requisitos en el Plan de prueba. Xcode le permite crear un plan de prueba a partir de la configuración del esquema actual. Cuando edita el circuito y continúa con los pasos de prueba actuales, Xcode muestra una opción para crear un Plan de prueba. Puede crear un plan de prueba con la siguiente configuración:
- Plan de prueba en blanco : crea una plantilla vacía y le permite hacer su propio plan;
- Plan de prueba del esquema : toma una configuración de circuito y crea un plan de prueba;
- Elija un plan de prueba : si ya tiene un plan de prueba creado, puede seleccionarlo y agregarlo al gráfico.
Para familiarizarse, cree un Plan de prueba a partir de la configuración del circuito.

Debe nombrar el Plan de prueba y especificar el objetivo de prueba correcto. Cuando se crea un Plan de prueba, se adjunta al circuito. Sin embargo, el esquema puede anular cualquier plan de prueba creado después de usar el indicador al invocar el comando Xcodebuild. Después de crear un plan de prueba, puede adjuntarlo a un objetivo específico. Agreguemos el plan actual al objetivo con pruebas de IU y asígnele un nombre.

Encontrará un nuevo archivo con la extensión functional.xctestplan. Este es tu plan de prueba. Se puede editar si es necesario. Puede hacer un plan de prueba compuesto en el mismo objetivo, según las necesidades de las pruebas. En este punto, tenemos un Plan de prueba disponible para nuestro objetivo con pruebas de IU.
Archivo de plan de prueba
El archivo del Plan de prueba es un archivo de configuración simple similar a json que contiene información sobre cómo configurar sus pruebas para que se ejecuten independientemente de cualquier circuito. Aquí están los diversos ajustes de configuración de prueba disponibles en el Plan de prueba. El plan de prueba básico contiene tres elementos clave:
- Configuraciones
- Objetivos de prueba
- Configuraciones
Cada configuración en el Plan de prueba contiene un conjunto de pruebas vinculadas con diferentes configuraciones. De acuerdo con los requisitos de nuestro plan de prueba, necesitaremos dos configuraciones: una para las pruebas de humo y la otra para las pruebas de regresión.
Ahora abramos el archivo funcional.xctestplan en Xcode y cambiemos el nombre de configuration1 a smoke-uk, luego haga clic en el botón "+" en la parte superior del plan y agregue otra configuración de regresión-usa.
Ahora tenemos dos configuraciones en el Plan de prueba y el Plan de prueba ya está vinculado a un objetivo con pruebas de IU. Agregue algunas configuraciones a cada configuración. Cuando se selecciona la configuración de smoke-uk, podemos cambiar la ubicación a Londres y hacer otros cambios en la configuración. Del mismo modo, cambie la configuración de regression-usa. Así es como se verá el Plan de prueba para desencadenar una regresión:

Configuraciones disponibles en el Plan de prueba:
- Argumentos: le permite anular los argumentos de lanzamiento y el entorno de lanzamiento para las pruebas;
- Localización: le permite configurar pruebas para diversas geolocalizaciones, configuraciones regionales e idiomas. Este es un entorno muy bueno para probar la internacionalización y la localización;
- Prueba de UI / Adjunto / Ejecución de prueba / Cobertura de código: opciones específicas para pruebas de UI y artefactos de prueba. Puede decidir si dejar artefactos o eliminarlos lo antes posible. También puede elegir el orden en que se ejecutan las pruebas y el cálculo de la cobertura del código;
- Herramientas de diagnóstico de código Xcode: varias herramientas Xcode para diagnosticar código, como Address Sanitizer o Thread Sanitizer, están disponibles para buscar errores de tiempo de ejecución. También puede usar otras opciones que lo ayuden a buscar pérdidas de memoria, etc.
Crear un plan de prueba desde cero
Si no desea crear un Plan de prueba utilizando el esquema Xcode, siempre puede crear un nuevo Plan de prueba a través de Xcode → Producto → Plan de prueba.

Habiendo creado el Plan de prueba de esta manera, lo adjuntaremos a algún objetivo de prueba agregándole pruebas. En el siguiente ejemplo, creamos un nuevo Plan de prueba y le agregamos pruebas.

Crear un plan de prueba desde la fuente
Como se mencionó anteriormente, Xcode Test Plan es solo un archivo de configuración, donde instalamos todas las configuraciones que definimos. En nuestro escenario, creamos funcional.xctestplan, y el código fuente para este se parece a esto:
{ "configurations" : [ { "name" : "smoke-uk", "options" : { "language" : "en-GB", "locationScenario" : { "identifier" : "London, England", "referenceType" : "built-in" }, "region" : "GB", "testExecutionOrdering" : "lexical" } }, { "name" : "Regression-usa", "options" : { "addressSanitizer" : { "enabled" : true }, "language" : "en", "locationScenario" : { "identifier" : "San Francisco, CA, USA", "referenceType" : "built-in" }, "region" : "US", "testExecutionOrdering" : "random" } } ], "defaultOptions" : { "codeCoverage" : false }, "testTargets" : [ { "target" : { "containerPath" : "container:XCTestPlan.xcodeproj", "identifier" : "9B0E393A22A6EB5400F666A1", "name" : "XCTestPlanUITests" } } ], "version" : 1 }
Puede crear la configuración de esta manera y guardarla en un archivo con la extensión .xctestplan en Xcode 11.
Plan de prueba de lanzamiento
Ahora entendemos el proceso de creación de un archivo de Plan de prueba en Xcode. Veamos cómo ejecutar el Plan de prueba y obtener informes en Xcode. Puede ejecutar pruebas a través de Xcode -> Producto -> Prueba como de costumbre, ejecutando los Planes de prueba adjuntos en el esquema. En nuestro caso, esto lanzará ambas configuraciones de prueba: humo y regresión.
Hay varias opciones de línea de comandos en Xcodebuild para ver y ejecutar Planes de prueba. Puede ejecutar el siguiente comando:
$ Xcodebuild -showTestPlans -scheme YOUR_SCEME
Mostrará todos los planes de prueba para el circuito actual. También puede ejecutar una prueba por separado:
$ Xcodebuild -project XCTestPlan.Xcodeproj/ -scheme XCTestPlan -destination 'platform=iOS Simulator,OS=13.0,name=iPhone XR' test -testPlan functional
Este script ejecutará la prueba utilizando la configuración del Plan de prueba.
Informes del plan de prueba
Después de ejecutar las pruebas para un plan de prueba específico, puede ver los buenos informes generados en Xcode. Los informes se generan por separado para cada configuración.

En Xcode, en la sección del navegador de prueba, puede filtrar informes por Planes de prueba. Los informes del Plan de prueba Xcode se pueden configurar en el servidor Xcode.
Código fuente de demostración disponible en Github: XCTestPlanPlan de prueba de Xcode: aplicación
Brevemente sobre dónde se puede usar el Plan de prueba de Xcode y cómo cambia dependiendo de la configuración del circuito. Estos son algunos ejemplos del uso del plan de prueba Xcode:
- Varios tipos de pruebas, como se mostró en la demostración: humo, regresión, etc.
- Probar la internacionalización y localización de la aplicación, por ejemplo, si desea probar su aplicación para varios idiomas, puede crear varias configuraciones;
- Ejecutar pruebas pesadas, como pruebas de rendimiento y estrés, y separarlas de las pruebas funcionales. Puede configurar pruebas para el trabajo junto con herramientas de diagnóstico de código u otras pruebas no funcionales.
También son posibles muchos otros escenarios en los que los planes de prueba de Xcode pueden ayudar a expandir el proceso de prueba.
Conclusión
Con el Plan de prueba de Xcode, XCTest se puede llevar al siguiente nivel con la capacidad de administrar su configuración y ejecutar sus pruebas. Xcode Test Plans le brinda un mejor control sobre la plataforma de pruebas basada en Apple.