A2A
Principalmente: no.
Apple generalmente no usa TDD (desarrollo basado en pruebas). Hay un par de excepciones:
- ¿Cómo es usar ReactJS para iOS Native y desarrollo de Android?
- ¿Para qué se utiliza el programa Interface Builder en iOS?
- Cómo declarar una variable UIImage vacía en swift
- Tengo la intención de aprender el desarrollo de iOS en las vacaciones de verano desde cero y también desarrollar una aplicación y ponerla en la App Store. ¿Qué recursos debo usar para aprender los conceptos y el desarrollo de aplicaciones de una manera rápida y efectiva, y cómo debo usarlos?
- ¿Cómo funciona Crashlytics en iOS? ¿Cómo detectamos un bloqueo y obtenemos la pila para lo mismo?
- El equipo del compilador utilizó suites de validación del compilador; Sin embargo, esto es típicamente para C ++ y C, y no impulsa el desarrollo del compilador Swift con tanta fuerza.
- El equipo de Core OS, incluido el equipo de kernel, utiliza TDD con respecto a las pruebas de conformidad de UNIX, utilizando VSC, VSX, VSTH y otros. En la medida en que los comandos de la línea de comandos y las llamadas a la biblioteca C y al sistema del núcleo no pasan la prueba, se corrigen.
La mayoría del resto de Apple no es TDD.
BDD (desarrollo impulsado por el comportamiento) es aún menos probable que se aplique, ya que utiliza herramientas de alto nivel y especificaciones de comportamiento. Dichas herramientas son costosas, requieren una amplia capacitación y solo más o menos le garantizan que el software se desempeña según una especificación.
No conozco ningún equipo que aplique BDD en Apple cuando estuve allí, y de lo que sé actualmente, no se está aplicando en absoluto.
Casi todo el desarrollo de Apple con una interfaz de usuario se basa en el desarrollo de casos de uso y pruebas de usabilidad: no es suficiente tener un buen diseño o casos de prueba que el software pueda pasar, el software también debe ser utilizable.
La usabilidad es el foco principal de casi todo el desarrollo de Apple.
Además de esto, también hay personas que son “los árbitros del buen gusto”.
En el pasado, este era Steve: si no le gustaba algo, exigiría que lo arregles. Y lo arreglaste.
Hoy, esta es una función más distribuida, sin una visión unificadora o una persona unificadora; Steve nunca fue analizado hasta el punto de proporcionar un conjunto de principios rectores que generarían un buen resultado WWSD ( ¿Qué haría Steve? ).
Aunque excelente en principio, TDD es más aplicable cuando hay organismos de normalización que impulsan el cumplimiento de las normas internacionales.
BDD es bastante inútil (IMO), a menos que desee poder demostrarle al cliente que lo que entregó es lo que le pidieron que entregara. Es útil como estrategia de mitigación de riesgos, y generalmente lo emplean personas como IBM, HP, EDS, Arthur Anderson, etc.
Dado que lo que un cliente pide es tan infrecuentemente lo que el cliente realmente necesita, veo mucho de lo que BDD logra como una estrategia CYA (Cover your ass), que algo que es útil, a menos que lo esté aplicando a algo como un sistema de soporte vital . Incluso entonces, aún puedes terminar con cosas como las muertes de Therac-25.