2010-03-04 3 views

Répondre

1

Il existe deux types de tests, est d'abord des essais techniques pour vous assurer que le code incarnant les fonctions de l'algorithme, en particulier dans les limites spécifiées par la conception, et en particulier au cas bord.

La deuxième forme est le test fonctionnel pour voir si les sorties créées par l'algorithme correspondent à l'intention de conception. Pour cela, vous n'avez pas nécessairement besoin de connaître la mise en œuvre et il y a un argument raisonnable à faire pour dire que c'est fait plus objectivement si vous ne le faites pas.

Bien sûr, si l'algorithme est trivial et tous les résultats possiblel peut être connu, teste alors il est tout simplement une question de produire des données d'essai qui exerçables les conditions aux limites.

Cependant, en fonction de l'algorithme, qui peut ne pas être possible. Dans les cas où l'algorithme analyse des données dans un espace qui n'est pas facilement visualisable (disons qu'il a 27 dimensions et des points de données 1M) alors seulement les cas triviaux peuvent être testés pour la précision fonctionnelle. Cela devient pire s'il n'y a pas de «bonne» réponse à partir de l'analyse, mais un ensemble de résultats plausibles. Dans ces cas, un analyste expérimenté est nécessaire pour examiner les résultats afin de voir s'ils ont un sens. Parfois, c'est la même personne qui implémente le code, parfois non. Dans ces cas, la mise en œuvre sera presque certainement remise en question en essayant de comprendre les résultats, qui seront eux-mêmes complexes.

Donc, réponse courte est oui, si possible, mais ce n'est pas toujours nécessaire de l'algorithme est tout à fait explicable.

1

Il existe deux types de tests unitaires différents:

  1. Blackbox
  2. Glassbox

sont à la fois extrêmement important. Les tests Blackbox doivent être écrits uniquement sur la base de la documentation de la fonction (ses entrées déclarées, ses conditions préalables, ses sorties déclarées, ses postconditions, ses cas d'erreur et son comportement/résultats dans le cas de telles erreurs). Les tests Glassbox tentent de s'assurer que toutes les branches de l'implémentation fonctionnent correctement et nécessitent de regarder l'implémentation. De tels tests fournissent généralement quelques exemples d'entrées pour chaque branche d'exécution. Quant à l'analyse ... généralement quand on parle d '"analyse algorithmique", il ne s'agit pas d'une implémentation particulière, mais plutôt d'une analyse théorique de l'algorithme, usant habituellement de son pseudo-code, et habituellement dans le but de prouver l'exactitude de l'algorithme et une limite supérieure sur son pire cas ou son temps d'exécution prévu. De telles analyses requièrent généralement le pseudo-code (ou au moins une autre description formelle du comportement de l'algorithme) afin de raisonner et d'en prouver les propriétés.

Questions connexes