Estrategia de testings unitarias, cobertura de código ideal Línea de base

Todavía no hay mucha información sobre las experiencias del mundo real de XCode7 y Swift 2.0 desde una perspectiva de evaluación de unidades y cobertura de códigos.

Si bien hay muchos tutoriales y guías básicas disponibles, me pregunto cuál es la experiencia y las statistics de cobertura típicas de los diferentes equipos de iOS que realmente trataron de lograr una cobertura razonable para sus aplicaciones iOS / Swift lanzadas. Me pregunto específicamente sobre esto:

1) mientras que el porcentaje de cobertura del código no representa la calidad general de la base del código, ¿se está utilizando esto como una métrica esencial en su equipo? Si no, ¿cuál es la otra forma medible de evaluar la calidad de su base de código?

2) Para una aplicación más robusta, ¿cuál es el porcentaje de cobertura de código actual? (solo fyi, tenemos dificultades para get más del 50% para nuestra base de código actual)

3) ¿Cómo testings cosas como:

  • Ciclo de vida de la aplicación, methods AppDelegate
  • Cualquier código relacionado con notifications push / locales, enlaces profundos
  • Prácticas de progtwigción defensivas, varios guardias seguros de piezas de la mente (casi reproducibles), event handling excepciones, etc.
  • Animaciones, transiciones, renderizado de controles personalizados (CG), etc.
  • Popups o Alertas que pueden include cualquier lógica adicional

Entiendo que algo de lo anterior es más un tema para las testings de interfaz de usuario reales, pero me hace pensar:

  • ¿Hay una manera razonable de probar lo anterior desde la perspectiva de UT? ¿Deberíamos tratar de satisfacer un porcentaje de cobertura de código mínimo arbitrario con UT para toda la base de códigos o deberíamos definir ese porcentaje de una cobertura razonablemente alcanzable dada la base de código de la aplicación?
  • ¿Es razonable hacer que la base de códigos sea más inflexible para lograr una mayor cobertura? (No estoy hablando de una aplicación médica donde la vida estaría en juego aquí)
  • ¿Existen buenas prácticas para probar todas las cosas mencionadas anteriormente, con exception de las testings de interfaz de usuario?

Esperando una discusión fructífera.