¿Apple usa TDD / BDD?

A2A

Principalmente: no.

Apple generalmente no usa TDD (desarrollo basado en pruebas). Hay un par de excepciones:

  • 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.

More Interesting

¿Cuáles son algunas buenas herramientas de comentarios que se pueden usar en la aplicación móvil para capturar comentarios de clientes / usuarios una vez que la aplicación ha sido publicada?

¿Por qué la aplicación de YouTube para iPhone está tan poco desarrollada?

¿No tendría sentido que Apple lance un iOS para dispositivos que no sean de Apple, vendiendo así más aplicaciones?

¿Cuál es el mejor software de prueba A / B para aplicaciones web móviles?

¿Cuánto debo dividir mi código en métodos / funciones separados más pequeños? A pesar de que ese fragmento de código solo se puede usar una vez y, como sabemos, siempre es posible que cada fragmento de código se pueda cambiar / editar en el futuro.

¿Cuál es la mejor manera de encontrar un desarrollador de aplicaciones confiable?

¿Es el último iOS personalizable como Android?

¿Dónde puedo encontrar entrenadores de desarrollo de aplicaciones iOS en Bangalore?

¿Es WordPress una opción viable como back-end para aplicaciones nativas de iOS?

Cómo hacer una aplicación para Android / iOS

¿Tiene sentido poner el código de mi aplicación iOS en GitHub?

Dado que las aplicaciones de iOS cuestan mucho hacer, ¿no sería más fácil aprender y hacerlo usted mismo?

¿Es NeoMAD una buena solución para el desarrollo multiplataforma?

¿Cuánto tiempo lleva aprender la codificación rápida desde cero (ninguna otra experiencia de programación) y poder crear una aplicación?

¿Es tan difícil usar iOS para un usuario de Android?