¿Cuál es la configuración de desarrollo de prueba para la aplicación iOS en las principales empresas de nueva creación?

Cuando configuro nuevos proyectos, mi conjunto de herramientas actual es:

  • Gestión de dependencias utilizando CocoaPods.
  • Pruebas de unidad (y algo de integración) con Kiwi o Cedar. Actual Me gusta la integración de Kiwi con Xcode y una estructura de destino más simple, pero Cedar tiene mejores informes de prueba.
  • OCMock para simulacros / trozos / expectativas si Kiwi no puede proporcionar el comportamiento que quiero.
  • CI ejecutándose en Jenkins o TeamCity. He estado usando scripts de shell o tareas de rastrillo para realizar compilaciones a través de llamadas de línea de comandos, pero ambas herramientas de CI ahora tienen complementos que deberían poder hacer lo mismo y admitir la configuración desde sus IU web (http://confluence.jetbrains.net/ … y https://wiki.jenkins-ci.org/disp…).
  • CI proporciona instalaciones inalámbricas de las compilaciones de desarrollo actuales a través de un servicio externo (como HockeyApp o TestFlight) o un servidor web interno que aloja las instalaciones de OTA. En la mayoría de los casos, este es un conjunto de varias compilaciones (con diferentes identificadores de aplicación) que se conectan a diferentes backends para que podamos ejecutar una combinación de entornos de desarrollo, aceptación, puesta en escena y producción según sea necesario.
  • Pruebas funcionales con Frank, KIF o UIAutomation pero solo si resultan necesarias para el proyecto. Hasta ahora, he encontrado que las pruebas de unidad / integración pueden brindar una cobertura adecuada en la mayoría de los casos y, como resultado, la sobrecarga de configurar, escribir y ejecutar pruebas funcionales generalmente no vale la pena. Me gustaría ver una buena configuración para TDD externo de aplicaciones iOS, pero aún no he encontrado una.

Otras herramientas:

  • Objeción por inyección de dependencia.
  • AppCode para un mejor soporte de refactorización, generación de código y formato de código que Xcode ofrece actualmente, pero todavía no es un reemplazo completo para Xcode.

Intento evitar la necesidad de acoplar las compilaciones de aplicaciones de iOS a las compilaciones de los servidores de sus API mediante el uso de API versionadas y no es necesario tener un servidor en ejecución para ejecutar las pruebas. Siendo realistas, a veces necesitamos impulsar cambios coordinados, pero con los mismos desarrolladores trabajando tanto en el cliente como en el servidor, generalmente es fácil impulsar un cambio de servidor y luego impulsar una nueva versión del cliente.

More Interesting

¿Cuál es la arquitectura de software de las grandes aplicaciones de iOS?

¿Cuál es la forma más rápida y fácil de obtener datos meteorológicos con Swift?

¿Puedo instalar la versión beta de iOS 11 ahora?

¿El libro de cuentos infantiles de iTunes para iPad está sobresaturado? ¿Todavía hay dinero por hacer?

¿Cuáles son las ventajas de usar elementos UIKit en lugar de elementos personalizados?

¿Cuánto costó desarrollar las aplicaciones móviles para MyFitnessPal?

No tengo conocimientos de codificación y quiero aprender a escribir aplicaciones para iOS y OS X. ¿Puedo desarrollar aplicaciones para iOS / OS X solo con Swift o tendré que saber otros idiomas?

¿Cuánto cuesta desarrollar una aplicación de noticias para iOS en Swift?

¿Deberían los creadores del juego Threes liberarlo por un tiempo limitado?

¿Qué es una pila repetitiva para un desarrollador de iOS?

¿Qué grandes empresas utilizan principalmente Swift para el desarrollo de aplicaciones iOS en 2016?

¿Es posible que un programador experimentado no entienda el desarrollo de iOS?

Quiero convertirme en un desarrollador de iOS, así que he estado invirtiendo entre seis y ocho horas todos los días. ¿Es una mala idea teniendo en cuenta que puede afectar mis calificaciones como estudiante universitario?

¿Cuáles son algunos ejemplos concretos de los beneficios del dinamismo en Objective-C?

Cómo construir una aplicación de chat en tiempo real que sea nativa para Andriod, iOS, Windows y Mac