Salut Je veux vous dire comment les tests
fonctionnent dans le projet
Autotech , un service d'inspection automobile de VIN. Sous la coupe - sur les outils que nous utilisons pour tester les exigences, la planification du sprint, le fonctionnement du processus de test dans notre projet.

MindMap pour les tĂąches de toilettage
Nous utilisons Scrum dans l'Auto Center, car c'est la mĂ©thodologie la plus efficace pour nos tĂąches. Chaque semaine, nous organisons des rĂ©unions au cours desquelles nous hiĂ©rarchisons, dĂ©terminons la complexitĂ©, dĂ©composons les tĂąches du backlog et dĂ©finissons la dĂ©finition de prĂȘt et la dĂ©finition de terminĂ© pour chacune des tĂąches (vous pouvez en lire plus dans
ce merveilleux article ). Ce processus est appelé nettoyage du backlog.
Pour un nettoyage efficace, toutes les dĂ©pendances doivent ĂȘtre prises en compte. Savoir comment la mise en Ćuvre de la tĂąche peut affecter nĂ©gativement le projet. Comprenez quelles fonctionnalitĂ©s vous devez prendre en charge et lesquelles couper. Peut-ĂȘtre, dans le processus de mise en Ćuvre de la tĂąche, l'API pour les partenaires peut souffrir, ou vous devez simplement vous rappeler d'implĂ©menter des mesures permettant de comprendre l'efficacitĂ© de l'entreprise. Avec le dĂ©veloppement de tout projet, il y a de plus en plus de telles dĂ©pendances, et leur prise en compte devient de plus en plus difficile. C'est mauvais: il est important pour l'Ă©quipe d'assistance de dĂ©couvrir toutes les fonctionnalitĂ©s Ă temps. Et parfois, les innovations doivent ĂȘtre coordonnĂ©es avec le service marketing.
En conséquence, j'ai proposé une solution basée sur MindMap, qui reflétait presque toutes les dépendances pouvant affecter le DoD, le DoR et l'évaluation des tùches.

L'avantage de cette approche est une reprĂ©sentation visuelle de toutes les dĂ©pendances possibles dans un style hiĂ©rarchique, ainsi que des chignons supplĂ©mentaires sous forme d'icĂŽnes, de sĂ©lection de texte et de branches multicolores. Toute l'Ă©quipe a accĂšs Ă cette MindMap, qui vous permet de maintenir la map Ă jour. J'ai Ă©tendu le blanc d'une telle carte, qui peut ĂȘtre considĂ©rĂ©e comme un point de repĂšre, ici - le
melon . (Je réserverai tout de suite qu'il ne s'agit que d'une ligne directrice, et il est trÚs douteux d'utiliser cette carte pour vos tùches sans finaliser le projet.)
Analyse de code statique et linty pour Go
Dans notre projet, un assez grand nombre de code golang, et afin que le style de code réponde à certaines normes, il a été décidé d'appliquer une analyse de code statique. à propos de ce que c'est, il y a un excellent
article sur Habré.
Nous voulions intégrer l'analyseur dans le processus CI, de sorte qu'à chaque build du projet, l'analyseur démarre, et selon les résultats de la vérification, la build se poursuivait ou plantait avec des erreurs. En général, l'utilisation de gometalinter comme étape de build distincte dans Teamcity serait une bonne solution, mais l'affichage des erreurs dans les journaux de build n'est pas trÚs pratique.
Nous avons continué à rechercher et trouver le Linty Bot, développé dans le cadre du
hackathon Avito
par Artemy
Flaker Ryabinkov.

Il s'agit d'un bot qui surveille le code du projet dans notre systÚme de contrÎle de version et lance un analyseur de code diff à chaque demande d'extraction. Si une erreur se produit pendant l'analyse, le bot envoie un commentaire à ce PR à la ligne de code souhaitée. Ses avantages sont la vitesse de connexion au projet, la vitesse de travail, les commentaires sur les demandes de tirage et l'utilisation du linter Gometalinter plutÎt populaire, qui contient déjà par défaut toutes les vérifications nécessaires.
MockServer et comment obtenir des services pour donner ce dont ils ont besoin

La section suivante concerne la stabilitĂ© du test. Un concessionnaire automobile est extrĂȘmement dĂ©pendant des sources de donnĂ©es (elles proviennent de concessionnaires, de services gouvernementaux, de stations-service, de compagnies d'assurance et d'autres partenaires), mais leur inopĂ©rabilitĂ© ne peut pas ĂȘtre la base pour refuser de rĂ©aliser des tests.
Nous devons vĂ©rifier l'assemblage des rapports Ă la fois aux sources de travail et Ă leur inopĂ©rabilitĂ©. Jusqu'Ă rĂ©cemment, nous utilisions de vraies sources de donnĂ©es dans l'environnement de dĂ©veloppement et, en consĂ©quence, dĂ©pendions de leur Ă©tat. Il s'est avĂ©rĂ© que nous avons indirectement vĂ©rifiĂ© ces sources dans les tests d'interface utilisateur. En consĂ©quence, ils ont eu des tests instables qui sont tombĂ©s avec les sources et attendent une enquĂȘte sur les sources de donnĂ©es, ce qui n'a pas contribuĂ© Ă la vitesse de rĂ©ussite des tests automatiques.
J'ai eu l'idée d'écrire ma propre maquette et de remplacer ainsi les sources d'Autotech. Mais à la fin, une solution plus simple a été trouvée - le
MockServer prĂȘt Ă l'
emploi , le développement open source en Java.
Le principe de son travail:
- créer des attentes
- correspondre aux demandes entrantes,
- si une correspondance est trouvée - envoyez une réponse.
Un exemple de création d'une attente à l'aide d'un client java:
new MockServerClient("localhost", 1080) .when( request() .withMethod("POST") .withPath("/login") .withBody("{username: 'foo', password: 'bar'}") ) .respond( response() .withStatusCode(302) .withCookie( "sessionId", "2By8LOhBmaW5nZXJwcmludCIlMDAzMW" ) .withHeader( "Location", "https://www.mock-server.com" ) );
Comme vous pouvez le voir dans l'exemple, nous décrivons la demande que nous enverrons et la réponse que nous voulons recevoir. MockServer reçoit la demande, essaie de la comparer avec celles qui ont été créées et s'il y a des correspondances, il renvoie une réponse. Si la demande n'échoue pas, nous obtenons 404.
Pour MockServer, il existe des clients pour Java et JavaScript, une excellente documentation et des exemples d'utilisation. Il y a la possibilitĂ© de faire correspondre les demandes sur RegExp, la journalisation dĂ©taillĂ©e sur le serveur et tout un tas de puces. Pour nos besoins, c'Ă©tait un candidat idĂ©al. Le processus de lancement est dĂ©crit en dĂ©tail sur le site, donc le raconter ici ne voit pas l'intĂ©rĂȘt. Le seul moment, la derniĂšre version Ă©tait une fuite de mĂ©moire, nous utilisons donc la version 5.2.3. Soyez prudent. Un autre inconvĂ©nient est que Mockserver n'a pas de prise en charge SOAP prĂȘte Ă l'emploi.
à l'heure actuelle, MockServer travaille avec nous depuis environ trois mois. En conséquence, la stabilité des tests, la vitesse de leur exécution et la capacité de recevoir des données sur un environnement de développement ont augmenté. Et en conséquence, il y a plus de possibilités de test.
Ăpilogue
Ces technologies sont les principales choses dont je voudrais parler dans cet article. Sinon, nous utilisons les outils de test habituels: tests d'API avec le paquet Kotlin + JUnit + RestAssured, Postman pour la commodité d'accéder à l'API. Dans cet article de revue, je n'ai pas parlé de notre approche des tests d'interface utilisateur. Nous utilisons MBT et
graphwalker . Nous prévoyons de préparer un article avec des collÚgues à ce sujet.
Si vous avez des questions, posez-les dans les commentaires, j'essaierai d'y répondre. J'espÚre que cet article sera utile aux équipes de développement. (Soit dit en passant, alors qu'elle se préparait pour la sortie, un travail de
dĂ©veloppeur QA est apparu dans notre Ă©quipe, montre Ă ceux qui pourraient ĂȘtre intĂ©ressĂ©s).