测试人员

测试人员

Comme nous commençons à ajouter de plus en plus de fonctionnalités dans l'application, c'est probment le bon moment pour parler des tests。

有趣的事实: j'ai trouvé UN bogue en écrivant les tests de ce chapitre。

欧宝娱乐app下载地址Symfony s'appuie sur PHPUnit pour les tests unitaires。Installons-le:

1
欧宝娱乐app下载地址Symfony作曲家req phpunit—dev

Écrire des测试单元

SpamCheckerEst la première class se pour laquelle nous allons écrire des tests。Générez un test unitaire:

1
欧宝娱乐app下载地址Symfony控制台制作:测验TestCase SpamCheckerTest

Tester le SpamChecker est un défi car nous ne voulons cerement pas utiliser l'API Akismet。我们将嘲笑我被。

Écrivons un premier test pour le cas où l'API renverrai une error:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
——/测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ -2,12 +2,26 @@名称空间的应用程序\测试;+使用App \实体\评论;+使用App \ SpamChecker;使用PHPUnit) \ Framework \ TestCase;+使用Sy欧宝娱乐app下载地址mfony \ \ HttpClient \ MockHttpClient组件;+使用Sy欧宝娱乐app下载地址mfony \组件\ HttpClient \ \ MockResponse反应;+使用Sy欧宝娱乐app下载地址mfony \ \ HttpClient \ ResponseInterface合同;类SpamCheckerTest扩展TestCase {—公共函数testSomething(): void+公共函数testSpamScoreWithInvalidRequest(): void- $ this - > assertTrue(真正的);+ $comment = new comment ();+ $评论- > setCreatedAtValue ();+ $context = [];++ $client = new MockHttpClient([new MockResponse('invalid', ['response_headers' => ['x-akismet-debug-help: invalid key']])]);+ $checker = new SpamChecker($client, 'abcde');++ $ this - > expectException (\ RuntimeException::类);+ $this->expectExceptionMessage('无法检查垃圾邮件:无效(无效键).');+ $checker->getSpamScore($comment, $context);}}

洛杉矶的架势MockHttpClient永久模拟导入服务器HTTP。Elle prend un tableau d'instancesMockResponse内容le corps et les en-têtes de réponse与会者。

Ensuite, nous appelons la méthodegetSpamScore ()Et vérifions qu'une exception est levée via la méthodeexpectException ()PHPUnit)。

Lancez les tests pour vérifier qu'ils passent:

1
欧宝娱乐app下载地址Symfony PHP bin/phpunit

Ajoutons des tests pour les cas qui functional:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
——/测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ -24,4 +24,32 @@类SpamCheckerTest扩展TestCase $this->expectExceptionMessage('无法检查垃圾邮件:无效(无效键).');检查器- > getSpamScore(评论,上下文美元);}++ / * *+ * @dataProvider提供+ * /+公共函数testSpamScore(int $expectedScore, ResponseInterface $response, Comment $ Comment, array $context)+ {+ $client =新的MockHttpClient([$response]);+ $checker = new SpamChecker($client, 'abcde');++ $score = $checker->getSpamScore($comment, $context);+ $this->assertSame($expectedScore, $score);+}++公共静态函数provideComments(): iterable+ {+ $comment = new comment ();+ $评论- > setCreatedAtValue ();+ $context = [];++ $response = new MockResponse(", ['response_headers' => ['x-akismet-pro-tip: discard']]);+ yield 'blatant_spam' => [2, $response, $comment, $context];++ $response =新的MockResponse('true');+ yield 'spam' => [1, $response, $comment, $context];++ $response =新的MockResponse('false');+ yield 'ham' => [0, $response, $comment, $context];+}}

莱斯数据提供商de PHPUnit nouous permeent de réutiliser la même loggique de test pour plusieurs scénarios。

Écrire des测试函数倾注les contrôleurs

测试员contrôleurs est un peu différent de Tester une class PHP "ordinaire" car nous voulons les exécuter dans le context d'une requête HTTP。

Créez un test functionnel pour le contrôleur会议:

测试/控制器/ ConferenceControllerTest.php
12 3 4 5 6 7 8 9 10 11 12 13 14 15
名称空间应用程序测试控制器使用欧宝娱乐app下载地址FrameworkBundle测试WebTestCaseConferenceControllerTest扩展WebTestCase公共函数testIndex()客户端静态::createClient ();客户端->请求(“得到”,' / ');->assertResponseIsSuccessful ();->assertSelectorTextContains (“氢气”,“给出你的反馈”);}}

使用的欧宝娱乐app下载地址\包\ FrameworkBundle\测试\ WebTestCaseà la place dePHPUnit) \ \ TestCase的框架Comme class de pour nos tests nous fournit une abstraction bien pratique pour les tests functions。

变量美元的客户模拟联合国导航员。请求HTTP请求服务器请求指令应用Symfony。欧宝娱乐app下载地址Cette stratégie présente plusieurs优势:elle est beaucoup + rapide que les allers- reours entre le client et le server, mais elle permet aussi aux testing d'analyser l'état des services après chaque requête HTTP。

Ce premier test vérifie que la page d'accueil renvoie une réponse HTTP 200。

Des断言告诉queassertResponseIsSuccessfulsont ajoutées à PHPUnit pour faciliter votre travail。Plusieurs断言de ce type sont définies par Symfony。欧宝娱乐app下载地址

提示

Nous avons utilisé/pour l'URL au lieu de la générer avec le routeur。C'est volontaire,汽车测试仪les url telles qu'elles seront déployées事实党de ce que que voulons测试仪。Si vous la modifiez, les tests von échouer pour vous rappeler que vous devriez概率重定位器古老的URL vers la nouvelle, pour être gentil avec les moteurs de recherche et les sites web quivoent vers le vôtre。

测试环境配置

Par défaut, les测试PHPUnit sont exécutés丹斯l'环境Symfony欧宝娱乐app下载地址测验tel qu'il est défini dans le fichier de configuration de PHPUnit:

phpunit.xml.dist
1 2 3 4 5 6 7 8 9
<phpunit)><php><ini的名字“error_reporting”价值“1”/><服务器的名字“APP_ENV”价值“测试”“真正的”/><服务器的名字“SHELL_VERBOSITY”价值“1”/><服务器的名字“欧宝娱乐app下载地址SYMFONY_PHPUNIT_REMOVE”价值""/><服务器的名字“欧宝娱乐app下载地址SYMFONY_PHPUNIT_VERSION”价值“8.5”/>php>phpunit)>

Pour faire functionner les tests, nous devons définir la clé secrèteAKISMET_KEY倾注cet环境测验

1
欧宝娱乐app下载地址Symfony控制台的秘密:AKISMET_KEY——env =测验

利用une base de données de测试

Comme nous l'avons déjà vu, la command S欧宝娱乐app下载地址ymfony définit automatiquement la variable d' environmentDATABASE_URL.当APP_ENV等于测验, comme c'est le cas lors de l'exécution de PHPUnit, cela change le nom de la base de données de主要main_testPour que les test utilent leur propre base de données:

配置/包/ doctrine.yaml
1 2 3 4 5
when@test:原则:dbal:# "TEST_TOKEN"通常由ParaTest设置dbname_suffix:“_t % env(默认值::TEST_TOKEN) % '

Cela est très重要的汽车nouous aurons besoin d'un jeu de données稳定倒exécuter nos tests et nous ne voulons cerement pas écraser celui stocké dans la base de développement。

先锋派的pouvoir lancer les tests, nous devons "初始化器" la base de données测验(créez la base de données et jouez les migration):

1 2
欧宝娱乐app下载地址Symfony控制台原则:database:create——env=测验欧宝娱乐app下载地址Symfony控制台原则:迁移:migrate -n——env=测验

请注意

在Linux和类似的操作系统上,您可以使用APP_ENV =测试而不是——env =测试

1
APP_ENV =测验欧宝娱乐app下载地址Symfony控制台原则:数据库:创建

Si vous lancez les测试维护者,PHPUnit n'interagira加上avec votre base de données de développement。倾其所能,尽其所能

1
欧宝娱乐app下载地址symfony php bin/phpunit tests/Controller/ConferenceControllerTest.php

提示

Lorsqu'un test échoue, il peut être utile d'analyser l'objet Response。Accédez-y grâce à客户端- > getResponse ()Et faites UN回声Pour voir à quoi il similar。

值des固定装置(données de test)

倒pouvoir测试仪la列表des评论,la分页等la soumission du formulaire, nous devons remplir la base de données avec quelques données。Nous voulons également que les données soient identiques entre les cycles de tests pour qu'ils réussissent。这些固定装置都是精确的。

安装合成学说装置:

1
欧宝娱乐app下载地址Symfony作曲家需要orm-fixture—dev

Un nouveau répertoiresrc / DataFixtures /été créé安装指南,可参考样例prête à être personnalisée。Ajoutez deux conférences et un commentaire pour le moment:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
——/ src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php@@ -2,6 +2,8 @@名称空间的应用程序\ DataFixtures;+使用App \实体\评论;+使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;@@ -9,8 +11,24 @@类AppFixtures扩展Fixture{公共函数加载(ObjectManager $manager):无效{- // $product = new product ();- // $manager->persist($product);+ $amsterdam =新会议();+ $阿姆斯特丹- > setCity(阿姆斯特丹);+ $阿姆斯特丹- > setYear (' 2019 ');+ $阿姆斯特丹- > setIsInternational(真正的);+ $经理- >保存(阿姆斯特丹);++ $paris = new Conference();+ $巴黎- > setCity(巴黎);+ $巴黎- > setYear (' 2020 ');+ $巴黎- > setIsInternational(假);+ $经理- >保存(巴黎);++ $comment1 = new Comment();+ $ comment1 - > setConference阿姆斯特丹($);+ $ comment1 - > setAuthor(“法”);+ $ comment1 - > setEmail (fabien@example.com);+ $comment1->setText('This was a great conference.');+ $经理- >保存($ comment1);经理- >冲洗();}

Lorsque nous chargerons les données de test, toutes les données présentes seront supprimées, y compris celles de l'admin。倒éviter cela,修改夹具:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
——/ src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php@@ -2,13 +2,20 @@名称空间的应用程序\ DataFixtures;+使用App \实体\管理;使用App \实体\评论;使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;+使用Sy欧宝娱乐app下载地址mfony \组件\ PasswordHasher \切肉机\ PasswordHasherFactoryInterface;类AppFixtures扩展Fixture {+公共函数__construct(+ private PasswordHasherFactoryInterface+) {+}+public function load(ObjectManager $manager): void {$amsterdam = new Conference();@@ -30,6 +37,12 @@类AppFixtures extends Fixture $comment1->setText('这是一个伟大的会议。');经理- >保存($ comment1);+ $admin = new admin ();+ $管理- > setRoles ([' ROLE_ADMIN ']);+ $管理- > setUsername(管理);+ $管理- >是不是setPassword ($ this - > passwordHasherFactory - > getPasswordHasher (admin::类)- >哈希('管理'));+ $经理- >保存(管理);+经理- >冲洗();}}

提示

我是你的纪念品,你是我的服务,你是我的朋友tâche donnée,我是你的朋友调试:自动装配Avec UN mot-clé:

1
欧宝娱乐app下载地址Symfony控制台调试:自动装配散列器

充电器des données de test

Chargez les données de test pour l' environment /la base de données de测验

1
欧宝娱乐app下载地址Symfony控制台原则:fixture:load——env=测验

Parcourir un site web avec des测试函数

Comme nous l'avons vu, le客户端HTTP utilisé dans les test simule un navigateur, afin que nous puisistion parcourir le site Comme si nous utilsions un navigateur。

关于新事物的测试关于页面conférence代表页面:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ /控制器/ ConferenceControllerTest.php测试+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -14,4 +14,19 @@类ConferenceControllerTest扩展WebTestCase $this->assertResponseIsSuccessful();$this->assertSelectorTextContains('h2', '给你的反馈');}++公共函数testConferencePage()+ {+ $client = static::createClient();+ $crawler = $client->request('GET', '/');++ $this->assertCount(2, $爬虫->过滤器('h4'));++客户端- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $this->assertSelectorTextContains('h2', '阿姆斯特丹2019');+ $this->assertSelectorExists('div:contains("有1个注释")');+}}

Décrivons ce qu 'il se passe dans ce测试:

  • Comme pour le premier test, nous allons sur la page d'accueil;
  • 方法请求()返回实例履带qui aide à trouver des éléments sur la page (comme des liens, des formulaires, ou tout que que vous pouvez atteindre avec des sélecteurs CSS ou XPath);
  • Grâce à un sélecteur CSS,双侧的常识conférences listées sur la page d'accueil;
  • 关于留置权集团的“观点”(关于留置权集团的“观点”的可能之处à这是自由的,自由的选择和权利的总理);欧宝娱乐app下载地址
  • Nous vérifions le titre de la page, la réponse et le< h2 >De la page pour être sûr d’être sur la bonne page (nous aurions aussi pu vérifier la route correspondante);
  • Enfin, nous vérifions qu'il y a 1 commentaire sur la page。div:包含()n'est pas un sélecteur CSS valide, mais 欧宝娱乐app下载地址Symfony a quelques ajouts intéressants, empruntés à jQuery。

Au lieu de cliquer sur le text(即:视图), nous aurions également pu sélectionner le lien grâce à un sélecteur CSS:

1
客户端->点击(履带->过滤器('h4 + p a'->链接());

Vérifiez que le nouveau测试通行证:

1
欧宝娱乐app下载地址symfony php bin/phpunit tests/Controller/ConferenceControllerTest.php

公式不能测试函数

你是我的过客supérieur ?随笔关于新评论的关于照片的关于conférence, à关于试验的,关于公式的模拟的。Cela semble ambitieux ?Regardez le code nécessaire: pas plus compliqué que ce que nous avons déjà écrit:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ /控制器/ ConferenceControllerTest.php测试+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -29,4 +29,19 @@ class ConferenceControllerTest extends WebTestCase $this->assertSelectorTextContains('h2', 'Amsterdam 2019');$this->assertSelectorExists('div:contains("有1个注释")');}++公共函数testCommentSubmission()+ {+ $client = static::createClient();+ $client->request('GET', '/conference/amsterdam-2019');+ $client->submitForm('提交',[+ 'comment_form[author]' => 'Fabien',+ 'comment_form[text]' => '自动功能测试的一些反馈',+ 'comment_form[email]' => 'me@automat.ed',+ 'comment_form[photo]' => dirname(__DIR__, 2).'/public/images/under-construction.gif',+));+ $ this - > assertResponseRedirects ();+客户端- > followRedirect ();+ $this->assertSelectorExists('div:contains("有2个注释")');+}}

倒soumettre un formulaire通过submitForm (),回忆起名字的冠军grâce aux outils de développement du导航员欧通过l'onglet形式du Symfony Profiler。欧宝娱乐app下载地址Notez la réutilisation pratique de l'image en construction !

Relancez les tests pour vérifier que tout est bon:

1
欧宝娱乐app下载地址symfony php bin/phpunit tests/Controller/ConferenceControllerTest.php

Si vous vouz vérifier le résultat dan un navigateur, arrêtez le server web et relancer le pour l' environment测验

1 2
欧宝娱乐app下载地址symfony服务器:停止APP_ENV =测验欧宝娱乐app下载地址Symfony服务器:start -d
/会议/阿姆斯特丹- 2019

充电les données de test

有效测试deuxième fois, ils devraient échouer。维护人员加评论人données,评论人的名义vérifie erronée。Nous devons réinitialiser l'état de la base de données entre chque exécution, en chargeant les données de test avant chacune d'elles:

1 2
欧宝娱乐app下载地址Symfony控制台原则:fixture:load——env=测验欧宝娱乐app下载地址symfony php bin/phpunit tests/Controller/ConferenceControllerTest.php

自动投票工作流avec un Makefile

Il est assez pénible d'avoir à se souvenir d'une séquence de commands pour exécuter les tests。Cela devrait au moins être documenté, même si ceette欧宝体育电话 documentation ne devrait être consultée qu'en dernier recours。Et si on automatisait plutôt les opérations récurrentes ?Cela servirait aussi de文欧宝体育电话档快速可访问aux autres, et rendrait le développement加上方便等加上productif。

L 'utilisation用品MakefileEst une façon d'automatiser les commands:

Makefile
1 2 3 4 5 6 7 8 9
SHELL:= /bin/bash测试:欧宝娱乐app下载地址Symfony控制台原则:database:drop——force——env=test || true Symfony控制台原则:database:create——env=test Symfony控制台原则:migrations:migrate -n——env=test Symfony控制台原则:fixture:load -n——env=test Symfony PHP bin/phpunit@.PHONY:测试

警告

Dans une règle Makefile, l'缩进doitêtre une seule制表和非空间。

Notez l 'option- n根据命令主义;c'est une选项标准sur les命令Symfony qui les rend非交欧宝娱乐app下载地址互式。

chque fois que vous vouz exécuter les tests, utilisez做测试

1
做测试

Réinitialiser la base de données après chque test

Réinitialiser la base de données après chque test c'est bien, mais avoir des tests vairment indépendants c'est encore mieux。nuous ne voulons pas qu'un test s'appuie sur les résultats des précédents。改变测试秩序的方法résultat。Comme nous allons le découvrir maintenant, ce n'est pas as pour le moment。

Déplacez le testtestConferencePage然后testCommentSubmission

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
——/ /控制器/ ConferenceControllerTest.php测试+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -15,21 +15,6 @@ class ConferenceControllerTest extends WebTestCase $this->assertSelectorTextContains('h2', '给出您的反馈');}-公共函数testConferencePage()——{- $client = static::createClient();- $crawler = $client->request('GET', '/');-- $this->assertCount(2, $爬虫->过滤器('h4'));--客户- > clickLink美元(“视图”);-- $ this - > assertPageTitleContains(阿姆斯特丹);- $ this - > assertResponseIsSuccessful ();- $this->assertSelectorTextContains('h2', '阿姆斯特丹2019');- $this->assertSelectorExists('div:contains("有1条评论")');- - - - - -}-公共函数testCommentSubmission() {$client = static::createClient();@@ -44,4 +29,19 @@ class ConferenceControllerTest extends WebTestCase $client->followRedirect();$this->assertSelectorExists('div:contains("有2个注释")');}++公共函数testConferencePage()+ {+ $client = static::createClient();+ $crawler = $client->request('GET', '/');++ $this->assertCount(2, $爬虫->过滤器('h4'));++客户端- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $this->assertSelectorTextContains('h2', '阿姆斯特丹2019');+ $this->assertSelectorExists('div:contains("有1个注释")');+}}

Les测试échouent维护者。

倒réinitialiser la base de données entre les tests,安装DoctrineTestBundle:

1
欧宝娱乐app下载地址Symfony作曲家配置extra.symfony.allow-contrib真正的
1
欧宝娱乐app下载地址交响乐作曲家要求“dama / doctrine-test-bundle: ^ 6”——开发

Vous devrez confirmer l'application de la recette (car il ne s'agit pas d'un bundle“officiellement”supporté):

1 2 3 4 5 6 7 8 9 10 11
欧宝娱乐app下载地址Symfony操作:1 recipe (a5c79a9ff21bc3ae26d9bb25f1262ed7) - WARNING dama/doctrin -test-bundle (>=4.0): From github.com/symfony/recipes-contrib:master此包的recipe来自“contrib”存储库,该存储库向社区开放。欧宝下载链接在https://github.com/symfony/recipes-cont欧宝娱乐app下载地址rib/tree/master/dama/doctrine-test-bundle/4.0上查看食谱,你想要执行这个食谱吗?[y]是[n]否[a]对所有包都是,仅对当前安装会话是[p]永久是,永远不再要求此项目(默认为n): p

Activez勒侦听器de PHPUnit:

12 3 4 5 6 7 8 9 10 11 12 13
——/ phpunit.xml.dist+ + + b / phpunit.xml.dist@@ -29,6 +29,10 @@< /包括> < / >报道+ <扩展>+ + < /扩展>+   .

瞧。Toute修改apportée吊坠les测试测试自动化annulée à la fin de chque测试。

Les tests devraient传球者à nouveau:

1
做测试

利用unvrai navigateur pour les测试功能

Les testing functionnels utilent un navigateur spécial qui applle direction la couche Sym欧宝娱乐app下载地址fony。Mais vous pouvez aussi utiliser un vrai navigateur et la vrae couche HTTP grâce à S欧宝娱乐app下载地址ymfony Panther:

1
欧宝娱乐app下载地址Symfony作曲家req panther—dev

Vous pouvez ensuite écrire des tests qui utilent un vrai navigateur谷歌Chrome avec les修改suivantes:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
——/ /控制器/ ConferenceControllerTest.php测试+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -2,13 +2,13 @@名称空间应用\ \测试控制器;用Symf欧宝娱乐app下载地址ony \包\ FrameworkBundle \ \ WebTestCase测试;+使用Sy欧宝娱乐app下载地址mfony \ \豹\ PantherTestCase组件;-class ConferenceControllerTest扩展WebTestCase+类ConferenceControllerTest扩展PantherTestCase{公共函数testIndex() {- $client = static::createClient();+ $client = static::createPantherClient(['external_base_uri' => $_SERVER['欧宝娱乐app下载地址SYMFONY_PROJECT_DEFAULT_ROUTE_URL']]);客户端- >请求(‘得到’,‘/’);$ this - > assertResponseIsSuccessful ();

可变环境欧宝娱乐app下载地址SYMFONY_PROJECT_DEFAULT_ROUTE_URLcontinental l'URL du server web local。

我的朋友,我的测试

Nous avons créé trois type de tests jusqu'à维护者。Bien que nous n'ayons utilisé le bundle maker que pour générer des tests unitaires, nous aurions tout aussi Bien pu l'utiliser pour générer les classes des aures tests:

1 2 3
欧宝娱乐app下载地址Symfony控制台制作:测验\ \ ConferenceController WebTestCase控制器欧宝娱乐app下载地址Symfony控制台制作:测验\ \ ConferenceController PantherTestCase控制器

Le bundle maker支持la génération des types de tests suivants en function de la manière don vous voulez tester votre应用程序:

  • TestCase:测试PHPUnit基础;
  • KernelTestCase:测试basques ayant accès aux services Symfon欧宝娱乐app下载地址y;
  • WebTestCase:倒exécuter des scénarios à la manière d’un navigateur, mais sans exécution du code JavaScript;
  • ApiTestCase: Pour jouer des scénarios orientés API;
  • PantherTestCase: Pour jouer des scénarios e2e, en utilant un vrai navigateur ou client HTTP et un vrai server web。

Exécuter des测试函数de boîte noire avec黑火

Une autre façon d'effectuer des testing function est d'utiliser lelecteur黑焰.En plus de de que vous pouvez faire avec les测试功能,il peut également性能测试效果。

Lisez l 'etape性能“Pour en savoir plus。

此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。