Architecture de framework & CI/CD · Leçon 2 sur 6

Les quatre patterns que les SDET utilisent vraiment

Il y a 23 design patterns célèbres. Bonne nouvelle — vous n'en avez besoin que de quatre pour l'automatisation de tests, et les nommer clairement est un signal fort en entretien.

Par Shahriyar · Mis à jour

L'idée, en une ligne

Un design pattern n'est qu'une façon nommée et réutilisable d'organiser le code. Quatre d'entre eux couvrent presque tout ce que vous construirez dans un framework de test.

Les quatre, et où chacun s'inscrit

▸ try it
# Factory: tests ask for a driver, stay browser-agnostic
def make_driver(kind):
    if kind == "chrome":
        return webdriver.Chrome()
    if kind == "remote":                 # points at Selenium Grid
        return webdriver.Remote(GRID_URL, options=ChromeOptions())
    raise ValueError(f"unknown driver: {kind}")

# Builder: start valid, override only what the test cares about
class UserBuilder:
    def __init__(self):
        self._u = {"name": "Ada", "role": "member", "active": True}
    def role(self, r):        # fluent override, returns self
        self._u["role"] = r
        return self
    def build(self):
        return dict(self._u)

admin = UserBuilder().role("admin").build()   # intent is obvious

Lisez-le de haut en bas : la factory renvoie « un driver » sans que le test se soucie du navigateur, et le builder produit un utilisateur admin en ne changeant que le seul champ qui compte.

Avancé — savoir quand ne pas le faire

Le geste senior n'est pas de dégainer des patterns partout — c'est de savoir quand les éviter. N'enveloppez pas un helper de deux lignes dans une factory. Un pattern mérite sa place quand il supprime une vraie douleur répétée, pas parce qu'il a un nom sophistiqué.

Basé sur la doc Page Object Model de Selenium et les patterns créationnels classiques du Gang of Four (factory, singleton, builder)

Toutes les leçons de Architecture de framework & CI/CD

  1. Concevoir un framework de zéro : les couches
  2. Les quatre patterns que les SDET utilisent vraiment
  3. Données de test : fixtures vs factories vs ensemencement
  4. CI avec GitHub Actions : exécuter UI + API à chaque push
  5. Docker & Selenium Grid : des environnements de test reproductibles
  6. Parallèle, réessais & quarantaine des tests instables