EC-CUBE / ec-cube

EC-CUBE is the most popular e-commerce solution in Japan
https://www.ec-cube.net
Other
745 stars 648 forks source link

自動テストの実行状況の調査 #4541

Closed okazy closed 4 years ago

okazy commented 4 years ago

概要(Overview)

自動テストのfailureには「何回実行しても通らないもの」と「通ったり通らなかったりするもの」があります。 「何回実行しても通らないもの」については通るように修正をする必要があります。 「通ったり通らなかったりするもの」についても通るように修正する必要があるのですが、根治対応が難しいものもあります。

今回偶然落ちたのか、そもそも通らないのかがわからないとプルリクの受け入れの際に判断が難しいため、現状でよく落ちるテストがどれか調査をしました。

環境 (environment)

いずれも2020/05/25時点の調査である。

合計6回の調査

調査結果

1回も通らなかったテスト

1) EA07BasicinfoCest: Ea0708-uc01-t01 税率設定 #4540 で修正を確認 ``` 1) EA07BasicinfoCest: Ea0708-uc01-t01 税率設定 Test codeception/acceptance/EA07BasicinfoCest.php:basicinfo_税率設定 Step See "8%","#ex-tax_rule-1 > td.align-middle.text-right" Fail Failed asserting that any element by '#ex-tax_rule-1 > td.align-middle.text-right' on page /admin/setting/shop/tax Elements: + 10% contains text '8%' Scenario Steps: 7. $I->see("8%","#ex-tax_rule-1 > td.align-middle.text...") at codeception/acceptance/EA07BasicinfoCest.php:224 6. $I->see("税率設定","#page_admin_setting_shop_tax > div....") at codeception/acceptance/EA07BasicinfoCest.php:223 5. $I->see("税率設定店舗設定",".c-pageTitle") at codeception/_support/Page/Admin/AbstractAdminPageStyleGuide.php:27 4. $I->amOnPage("/admin/setting/shop/tax") at codeception/_support/Page/Admin/AbstractAdminPage.php:32 3. $I->see("ホーム",".c-contentsArea .c-pageTitle > .c-pa...") at codeception/_support/AcceptanceTester.php:60 2. $I->submitForm("#form1",{"login_id":"admin","passwo...}) at codeception/_support/AcceptanceTester.php:57 ```

通ったり通らなかったりしたテスト

1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_local (低確率でしか通らないテストのため注意) failure: 10/11 **低確率でしか通らないテストのため注意** ``` 1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_local Test codeception/acceptance/EA10PluginCest.php:test_install_enable_disable_update_enable_disable_remove_local Step Assert true false,"カラムがあるはず dtb_dash.new_column" Fail カラムがあるはず dtb_dash.new_column Failed asserting that false is true. Scenario Steps: 38. $I->assertTrue(false,"カラムがあるはず dtb_dash.new_column") at codeception/acceptance/EA10PluginCest.php:469 37. $I->assertTrue(true,"カラムがあるはず dtb_cart.dash_id") at codeception/acceptance/EA10PluginCest.php:469 36. $I->assertTrue(true,"カラムがあるはず dtb_cart.is_horizon") at codeception/acceptance/EA10PluginCest.php:469 35. $I->assertTrue(true,"テーブルがあるはず dtb_dash") at codeception/acceptance/EA10PluginCest.php:452 34. $I->see("アップデートしました。","#page_admin_store_plugin > ...") at codeception/_support/Page/Admin/PluginManagePage.php:135 33. $I->click({"xpath":"//*[@id="page_admin_store_plug...}) at codeception/_support/Page/Admin/PluginManagePage.php:134 ```
1) EA05CustomerCest: EA0502-UC02-T01 会員編集 failure: 1/6 ``` 1) EA05CustomerCest: EA0502-UC02-T01 会員編集 Test codeception/acceptance/EA05CustomerCest.php:customer_会員編集 Step See "ホーム",".c-contentsArea .c-pageTitle > .c-pageTitle__titles" Fail Element located either by name, CSS or XPath element with '.c-contentsArea .c-pageTitle > .c-pageTitle__titles' was not found. Scenario Steps: 3. $I->see("ホーム",".c-contentsArea .c-pageTitle > .c-pa...") at codeception/_support/AcceptanceTester.php:60 2. $I->submitForm("#form1",{"login_id":"admin","passwo...}) at codeception/_support/AcceptanceTester.php:57 1. $I->amOnPage("/admin") at codeception/_support/AcceptanceTester.php:81 /home/runner/work/ec-cube/ec-cube/vendor/codeception/phpunit-wrapper/src/Constraint/WebDriver.php:36 /home/runner/work/ec-cube/ec-cube/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:62 /home/runner/work/ec-cube/ec-cube/vendor/phpunit/phpunit/src/Framework/Assert.php:2116 /home/runner/work/ec-cube/ec-cube/vendor/codeception/codeception/src/Codeception/Util/Shared/Asserts.php:311 ```
1) EA05CustomerCest: EA0502-UC01-T02 会員登録_必須項目未入力 failure: 1/6 ``` 1) EA05CustomerCest: EA0502-UC01-T02 会員登録_必須項目未入力 Test codeception/acceptance/EA05CustomerCest.php:customer_会員登録_必須項目未入力 Step See "ホーム",".c-contentsArea .c-pageTitle > .c-pageTitle__titles" Fail Element located either by name, CSS or XPath element with '.c-contentsArea .c-pageTitle > .c-pageTitle__titles' was not found. Scenario Steps: 3. $I->see("ホーム",".c-contentsArea .c-pageTitle > .c-pa...") at codeception/_support/AcceptanceTester.php:60 2. $I->submitForm("#form1",{"login_id":"admin","passwo...}) at codeception/_support/AcceptanceTester.php:57 1. $I->amOnPage("/admin") at codeception/_support/AcceptanceTester.php:81 ```
1) EA08SysteminfoCest: Ea0804-uc01-t02 セキュリティ管理 - ディレクトリ名変更 failure: 1/6 ``` 1) EA08SysteminfoCest: Ea0804-uc01-t02 セキュリティ管理 - ディレクトリ名変更 Test codeception/acceptance/EA08SysteminfoCest.php:systeminfo_セキュリティ管理ディレクトリ名 Step See "セキュリティ管理システム設定","#page_admin_setting_system_security .c-pageTitle__titles" Fail Element located either by name, CSS or XPath element with '#page_admin_setting_system_security .c-pageTitle__titles' was not found. Scenario Steps: 5. $I->see("セキュリティ管理システム設定","#page_admin_setting_syste...") at codeception/acceptance/EA08SysteminfoCest.php:268 4. $I->amOnPage("/admin/setting/system/security") at codeception/acceptance/EA08SysteminfoCest.php:267 3. $I->see("ホーム",".c-contentsArea .c-pageTitle > .c-pa...") at codeception/_support/AcceptanceTester.php:60 2. $I->submitForm("#form1",{"login_id":"admin","passwo...}) at codeception/_support/AcceptanceTester.php:57 1. $I->amOnPage("/admin") at codeception/_support/AcceptanceTester.php:81 ```
1) ZZ99InstallerCest: Zz99 インストーラ 権限チェックのテスト failure: 1/6 ``` 1) ZZ99InstallerCest: Zz99 インストーラ 権限チェックのテスト Test codeception/acceptance/ZZ99InstallerCest.php:installer_CheckPermission Step See "以下のファイルまたはディレクトリに書き込み権限を付与してください","#main > div > div > div.container-fluid > div > div > textarea" Fail Element located either by name, CSS or XPath element with '#main > div > div > div.container-fluid > div > div > textarea' was not found. Scenario Steps: 25. $I->see("以下のファイルまたはディレクトリに...","#main > div > div...") at codeception/acceptance/ZZ99InstallerCest.php:64 24. $I->reloadPage() at codeception/_support/Page/Install/InstallPage.php:40 23. $I->see("var","#main > div > div > div.container-f...") at codeception/acceptance/ZZ99InstallerCest.php:65 22. $I->see("以下のファイルまたはディレクトリに...","#main > div > div...") at codeception/acceptance/ZZ99InstallerCest.php:64 21. $I->reloadPage() at codeception/_support/Page/Install/InstallPage.php:40 20. $I->see("html","#main > div > div > div.container-...") at codeception/acceptance/ZZ99InstallerCest.php:65 ```
1) ZZ99InstallerCest: Zz99 インストーラ 権限チェックのテスト failure: 1/6 ``` 1) ZZ99InstallerCest: Zz99 インストーラ 権限チェックのテスト Test codeception/acceptance/ZZ99InstallerCest.php:installer_CheckPermission Step See "以下のファイルまたはディレクトリに書き込み権限を付与してください","#main > div > div > div.container-fluid > div > div > textarea" Fail Element located either by name, CSS or XPath element with '#main > div > div > div.container-fluid > div > div > textarea' was not found. Scenario Steps: 25. $I->see("以下のファイルまたはディレクトリに...","#main > div > div...") at codeception/acceptance/ZZ99InstallerCest.php:64 24. $I->reloadPage() at codeception/_support/Page/Install/InstallPage.php:40 23. $I->see("var","#main > div > div > div.container-f...") at codeception/acceptance/ZZ99InstallerCest.php:65 22. $I->see("以下のファイルまたはディレクトリに...","#main > div > div...") at codeception/acceptance/ZZ99InstallerCest.php:64 21. $I->reloadPage() at codeception/_support/Page/Install/InstallPage.php:40 20. $I->see("html","#main > div > div > div.container-...") at codeception/acceptance/ZZ99InstallerCest.php:65 ```
1) EA10PluginCest: Test_install_enable_update_disable_remove_local failure: 2/6 ``` 1) EA10PluginCest: Test_install_enable_update_disable_remove_local Test codeception/acceptance/EA10PluginCest.php:test_install_enable_update_disable_remove_local Step Assert true false,"カラムがあるはず dtb_dash.new_column" Fail カラムがあるはず dtb_dash.new_column Failed asserting that false is true. Scenario Steps: 30. $I->assertTrue(false,"カラムがあるはず dtb_dash.new_column") at codeception/acceptance/EA10PluginCest.php:469 29. $I->assertTrue(true,"カラムがあるはず dtb_cart.dash_id") at codeception/acceptance/EA10PluginCest.php:469 28. $I->assertTrue(true,"カラムがあるはず dtb_cart.is_horizon") at codeception/acceptance/EA10PluginCest.php:469 27. $I->assertTrue(true,"テーブルがあるはず dtb_dash") at codeception/acceptance/EA10PluginCest.php:452 26. $I->see("アップデートしました。","#page_admin_store_plugin > ...") at codeception/_support/Page/Admin/PluginManagePage.php:135 25. $I->click({"xpath":"//*[@id="page_admin_store_plug...}) at codeception/_support/Page/Admin/PluginManagePage.php:134 ```
1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_local failure: 3/6 ``` 1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_local Test codeception/acceptance/EA10PluginCest.php:test_install_enable_disable_update_enable_disable_remove_local Step Assert true false,"カラムがあるはず dtb_dash.new_column" Fail カラムがあるはず dtb_dash.new_column Failed asserting that false is true. Scenario Steps: 38. $I->assertTrue(false,"カラムがあるはず dtb_dash.new_column") at codeception/acceptance/EA10PluginCest.php:469 37. $I->assertTrue(true,"カラムがあるはず dtb_cart.dash_id") at codeception/acceptance/EA10PluginCest.php:469 36. $I->assertTrue(true,"カラムがあるはず dtb_cart.is_horizon") at codeception/acceptance/EA10PluginCest.php:469 35. $I->assertTrue(true,"テーブルがあるはず dtb_dash") at codeception/acceptance/EA10PluginCest.php:452 34. $I->see("アップデートしました。","#page_admin_store_plugin > ...") at codeception/_support/Page/Admin/PluginManagePage.php:135 33. $I->click({"xpath":"//*[@id="page_admin_store_plug...}) at codeception/_support/Page/Admin/PluginManagePage.php:134 ```
1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_store failure: 1/6 ``` 1) EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_store Test codeception/acceptance/EA10PluginCest.php:test_install_enable_disable_update_enable_disable_remove_store Step See "インストールが完了しました。",{"css":"#installModal > div > div > div.modal-body > p"} Fail Failed asserting that any element by css '#installModal > div > div > div.modal-body > p' on page /admin/store/plugin/api/upgrade/1/confirm Elements: +

システムエラーが発生しました。 contains text 'インストールが完了しました。' Scenario Steps: 47. $I->see("インストールが完了しました。",{"css":"#installModal > d...}) at codeception/_support/Page/Admin/PluginStoreUpgradePage.php:41 46. $I->waitForElementVisible({"css":"#installModal...},60) at codeception/_support/Page/Admin/PluginStoreUpgradePage.php:40 45. $I->click({"id":"installBtn"}) at codeception/_support/Page/Admin/PluginStoreUpgradePage.php:39 44. $I->waitForElementVisible({"id":"installBtn"}) at codeception/_support/Page/Admin/PluginStoreUpgradePage.php:38 43. $I->click({"css":"#plugin-list > div.card-body > d...}) at codeception/_support/Page/Admin/PluginStoreUpgradePage.php:37 42. $I->see("アップデート オーナーズストア",".c-pageTitle") at codeception/_support/Page/Admin/AbstractAdminPageStyleGuide.php:27 ```

Test_install_enable_update_disable_remove_local failure: 3/6 ``` 1) EA10PluginCest: Test_install_enable_update_disable_remove_local Test codeception/acceptance/EA10PluginCest.php:test_install_enable_update_disable_remove_local Step Assert true false,"カラムがあるはず dtb_dash.new_column" Fail カラムがあるはず dtb_dash.new_column Failed asserting that false is true. Scenario Steps: 30. $I->assertTrue(false,"カラムがあるはず dtb_dash.new_column") at codeception/acceptance/EA10PluginCest.php:469 29. $I->assertTrue(true,"カラムがあるはず dtb_cart.dash_id") at codeception/acceptance/EA10PluginCest.php:469 28. $I->assertTrue(true,"カラムがあるはず dtb_cart.is_horizon") at codeception/acceptance/EA10PluginCest.php:469 27. $I->assertTrue(true,"テーブルがあるはず dtb_dash") at codeception/acceptance/EA10PluginCest.php:452 26. $I->see("アップデートしました。","#page_admin_store_plugin > ...") at codeception/_support/Page/Admin/PluginManagePage.php:135 25. $I->click({"xpath":"//*[@id="page_admin_store_plug...}) at codeception/_support/Page/Admin/PluginManagePage.php:134 ```
1) EA10PluginCest: Test_extend_same_table_disabled_remove_local failure: 1/6 ``` 1) EA10PluginCest: Test_extend_same_table_disabled_remove_local Test codeception/acceptance/EA10PluginCest.php:test_extend_same_table_disabled_remove_local Step See "インストールプラグイン一覧オーナーズストア",".c-pageTitle" Fail Element located either by name, CSS or XPath element with '.c-pageTitle' was not found. Scenario Steps: 36. $I->see("インストールプラグイン一覧オーナーズストア",".c-pageTitle") at codeception/_support/Page/Admin/AbstractAdminPageStyleGuide.php:27 35. $I->click({"css":"#upload-form > div > div > div >...}) at codeception/_support/Page/Admin/PluginLocalInstallPage.php:33 34. $I->attachFile({"id":"plugin_l...},"plugins/Boomer...") at codeception/_support/Page/Admin/PluginLocalInstallPage.php:32 33. $I->see("独自プラグインのアップロードオーナーズストア",".c-pageTitle") at codeception/_support/Page/Admin/AbstractAdminPageStyleGuide.php:27 32. $I->amOnPage("/admin/store/plugin/install") at codeception/_support/Page/Admin/AbstractAdminPage.php:32 31. $I->assertFalse(false,"無効化されている") at codeception/acceptance/EA10PluginCest.php:748 ```
1) EA10PluginCest: Test_extend_same_table_crossed_local failure: 2/6 ``` 1) EA10PluginCest: Test_extend_same_table_crossed_local Test codeception/acceptance/EA10PluginCest.php:test_extend_same_table_crossed_local [Facebook\WebDriver\Exception\UnrecognizedExceptionException] invalid argument: 'text' is empty (Session info: chrome=81.0.4044.138) (Driver info: chromedriver=81.0.4044.138 (8c6c7ba89cc9453625af54f11fd83179e23450fa-refs/branch-heads/4044@{#999}),platform=Linux 5.3.0-1020-azure x86_64) Scenario Steps: 6. $I->attachFile({"id":"plugin_l...},"plugins/Horizo...") at codeception/_support/Page/Admin/PluginLocalInstallPage.php:32 5. $I->see("独自プラグインのアップロードオーナーズストア",".c-pageTitle") at codeception/_support/Page/Admin/AbstractAdminPageStyleGuide.php:27 4. $I->amOnPage("/admin/store/plugin/install") at codeception/_support/Page/Admin/AbstractAdminPage.php:32 3. $I->see("ホーム",".c-contentsArea .c-pageTitle > .c-pa...") at codeception/_support/AcceptanceTester.php:60 2. $I->submitForm("#form1",{"login_id":"admin","passwo...}) at codeception/_support/AcceptanceTester.php:57 1. $I->amOnPage("/admin") at codeception/_support/AcceptanceTester.php:81 ```
failure: 0/6 ``` ```

関連情報 (Ref)

5/26追記

test_install_enable_disable_update_enable_disable_remove_local についてはPHPのバージョンなど変更して追加調査をしました。 11回目のテストにて通ることがあることを確認しました。

okazy commented 4 years ago

PHP7.4で実行して見ましたが EA10PluginCest: Test_install_enable_disable_update_enable_disable_remove_local の改善は見られず

https://github.com/okazy/ec-cube/pull/21/checks?check_run_id=707778583 https://github.com/okazy/ec-cube/pull/22/checks?check_run_id=707779843

okazy commented 4 years ago

test_install_enable_disable_update_enable_disable_remove_local のテストはPHP, DBの組み合わせで通ることもがあることがわかりました。 https://github.com/nanasess/ec-cube/actions/runs/115271267

通ったり通らなかったりしたテストの方に移動させます。

調査協力をいただきました @nanasess さんありがとうございます。

nanasess commented 4 years ago

4564 で、エラーになっているE2Eテストのログやスクリーンショットが取得できるようになりましたので調べたところ、すべて以下のようなシステムエラーが原因になっていました。

システムエラーが発生しました。
--> - 'Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/lib/php/sessions) failed: Permission denied (13)'
--> - /home/runner/work/ec-cube/ec-cube/src/Eccube/Session/Storage/Handler/SameSiteNoneCompatSessionHandler.php

セッションハンドラが /var/lib/php/sessions を見にいってエラーになっているようです。 以下の対策が考えられます

okazy commented 4 years ago

4569 にてテストが落ちてしまう現象がほぼ解決するかと思いますので、本Issueはクローズします。