ASP.NETアプリケヌションの自動統合テスト

この蚘事では、Webアプリケヌションを統合テストするためのむンフラストラクチャを䜜成した経隓を共有したいず思いたす。 アプリケヌションは.Netプラットフォヌム䞊に構築され、ASP.NET MVCアプリケヌションずMSSQLのデヌタベヌスで構成されたす。



統合テストタスクは次のように定匏化されたした。アプリケヌションのむンストヌルずナヌザヌむンタヌフェむスのテストを自動化しお、むンストヌルされたバヌゞョンのアプリケヌションが必芁なテストシナリオをすべお正垞に実行するこずをすばやく確認できるようにしたす。



぀たり、新しいバヌゞョンを顧客にむンストヌルしお䜜業を開始するずどうなるかをすばやく確認する必芁がありたす。 これらのテストの結果は䜜成されたアプリケヌションの品質の指暙であるため、アプリケヌションの品質、したがっお珟圚の状況を垞に知るこずができたす。



統合テストではナヌザヌアクションをシミュレヌトできるため、ToRの特定のポむントが正垞に完了したずいう事実を怜蚌できるず蚀えたす。 TORの各項目のテストを䜜成しプログラムずテスト方法論-PMIを取埗、それらを自動化する堎合、正垞に完了したテストの数は、TKが䜕パヌセント完了したかに関する実際の情報を意味したす。 それ以倖の堎合、システムの状態の評䟡は次のようになりたす。

「たあ、䞀蚀で蚀えば、今日のシステムはどうですか」

「䞀蚀で蚀えば、...それは機胜したす。」

-そしお、簡単に蚀えば

-簡単に蚀えば、機胜したせん。



そのようなテスト䞭に確認する必芁があるもの

-アプリケヌションのコンパむルずアセンブリ

-アプリケヌションをむンストヌルたたは曎新する手順

-新芏デヌタベヌスのむンストヌルたたは既存のデヌタベヌスの曎新

-新しいASP.NETアプリケヌションのむンストヌル

-それぞれのテストシナリオの実行

-システムはスクリプトを実行する準備ができおいたす。 各シナリオには前提条件があるため、システムをこれらの条件に適合させる必芁がありたす。 たずえば、ナヌザヌがシステムで3぀の泚文を䜜成する必芁があるシナリオの堎合、ナヌザヌデヌタベヌスで䜕らかの方法で3぀の泚文を取埗する必芁がありたす。

-テストスクリプトは、ブラりザヌでのナヌザヌアクションの゚ミュレヌションを通じお実行されたす。

-システムは、スクリプトが実行される前の状態、実際にはアプリケヌションをむンストヌルした盎埌の状態に戻りたす

-アプリケヌション品質の報告

-品質がわかっおいるアプリケヌションを含むむンストヌルパッケヌゞのアセンブリ。







このプロセスを䞋の図に瀺したす。



このスキヌムにより、曎新されたアプリケヌションのむンストヌル䞭およびむンストヌル埌に産業環境で実行されるのず同じアクションを開発者のマシンずContinues Integration Serverで再珟できるこずに泚意しおください。



基本構成



以䞋に、統合テストおよび産業甚䜿甚䞭に異なる環境に構成を展開する方法を瀺したす。 すべおの環境でのアプリケヌションずの盞互䜜甚は同じであるこずにすぐに泚意したす。 アプリケヌションずの察話はブラりザを介しお行われ、デヌタベヌスはデヌタベヌス曎新スクリプトの圢匏で曎新され、ASP.NETアプリケヌションは暙準の展開を介しお曎新されたす。



Developer Machineでの構成




開発者の構成では、Visual Studioがメむンツヌルずしお䜿甚されたす。



この構成では、開発者のマシンでDBMSを䜿甚するこずになっおいたす。 このオプションは、すべおの開発者が1぀の共通デヌタベヌスを䜿甚する堎合のオプションよりも優れおいるず思いたす。 䞀方では、共通のデヌタベヌスは維持費が安く、すべおの開発者は垞にデヌタベヌスの最新バヌゞョンを持っおいたす。 しかし䞀方で、そのようなデヌタベヌスでは、開発者が䜕らかの怜蚌を行うのを忘れたため、たずえば、いく぀かの誀った泚文を入力できるなど、デヌタの敎合性の違反を簡単に取埗できたす。 もちろん、圌は埌で怜蚌を行い、より倚くの䞍正な泚文がシステムに䜜成されるこずはありたせん。 しかし、別の開発者は、間違った順序で機胜をデバッグし続け、倚くの隠れた゚ラヌを匕き起こす可胜性がありたす。



個人甚デヌタ​​ベヌスの堎合、完党なデヌタを䜜成するタスクは、明瀺的で簡単に解決できたす。 これに぀いおは、「リトルトリック」セクションで説明したす。



統合テストの前に、開発者は䜜業甚デヌタベヌスを産業甚サヌバヌから統合テストDBMSに埩元する必芁がありたす。 もちろん、産業甚スタンドから䜜業甚デヌタベヌスを取埗するのは非珟実的ですが、デヌタベヌスの曎新プロセスを正しく確認するには、可胜な限り近いデヌタベヌスが必芁です。 オプションずしお、䜜業甚デヌタベヌスの匿名化を行うこずができたす。぀たり、䜜業甚デヌタベヌスのコピヌを䜜成しおから、顧客の名前ず契玄の量を倉曎しお、商甚情報が開発者やテスタヌに​​届かないようにしたす。



テストの最初の段階は、デヌタベヌスの展開を怜蚌するこずです。぀たり、開発者はデヌタベヌスを公開したす。 これを行うには、開発者がデヌタベヌスプロゞェクトをタヌゲットデヌタベヌスに公開したす。 プロゞェクトのアセンブリ䞭に、Visual Studioはタヌゲットデヌタベヌスにクロヌルし、珟圚のプロゞェクトのスクリプトず比范しお、実行される差分スクリプトを䜜成したす。 ここで゚ラヌが発生する可胜性がありたす。たずえば、セカンダリキヌが参照するフィヌルドの䜜成を忘れたり、初期デヌタの挿入時にプラむマリキヌの競​​合が発生したりしたす。 開発者は、実装段階ではなくテスト段階でこれらの゚ラヌをすべお怜出しお修正するこずがわかりたした。誰もがそれがどれほど神経を節玄するか知っおいるず思いたす。



次のステップでは、開発者はVisual Studioテストランナヌを通じおテストを実行したす。 実行䞭の統合テストは、テストに必芁なデヌタでデヌタベヌスを満たし、それによっおテストの予備芁件を満たしたす。その埌、テストはSelenium RC Serverを介しおブラりザヌを呌び出し、ナヌザヌアクションをシミュレヌトしたす。 テストの結果はブラりザを介しお再床チェックされたす。たた、参照ず比范するためにデヌタベヌスからデヌタを取埗するこずもできたす。



テストが完了するず、デヌタベヌスは元の状態に戻りたす。



その結果、テストの実行埌、システムの䞀般的な状態を確認できたす。



Continues統合サヌバヌでの構成




ここでは、Visual Studioの代わりにContinues統合サヌバヌが䜿甚されたすが、すべおのアクションは開発者のマシン䞊のアクションに䌌おいたす



産業甚構成




産業環境では、曎新プログラムは、統合テストの堎合ず同じように産業環境で動䜜するむンストヌラヌを介しおむンストヌルされたす。 ナヌザヌは、テストでテストされたのず同じ方法でシステムを操䜜したす。 䞍快な驚きはすでにあるはずです。



必芁なツヌル





必芁なむンフラストラクチャを䜜成するには、次のツヌルが必芁です。



いく぀かのプロゞェクトを含むVisual Studio゜リュヌション

-プロゞェクト「SQL Server Database Project」。 ご存じのように、このようなプロゞェクトでは、デヌタベヌスの構造ず初期コンテンツを開発するために必芁なすべおのDDLおよびSQLスクリプトを保存できたす。 このプロゞェクトの䞻な利点は、既存のデヌタベヌスを最新バヌゞョンに曎新するための差分スクリプトを生成できるこずです。 これにより、既存のデヌタを削陀せずに曎新プログラムをむンストヌルできたす。 さらに、この操䜜はMSBuildを介しお自動化し、Continuous Integrationサヌバヌで実行できたす。

-ASP.NETアプリケヌションを䜿甚したプロゞェクト。 アプリケヌション自䜓が含たれおいたす。 このプロゞェクトは、サヌバヌぞのWebアプリケヌションの展開を確認す​​るためにも䜿甚されたす。これもMSBuildを䜿甚しお自動的に行われたす。

-統合テストを含むプロゞェクト。 これはMSTestたたはNUnitプロゞェクトです。 このプロゞェクトは、テストの実行ずテストレポヌトの䜜成に䜿甚されたす。



これは、自動化された統合テストを線成するために必芁なプロゞェクトの最小セットです。



もちろん、゜リュヌションはSVNなどのバヌゞョン管理システムに保存されたす。



さらに、゜リュヌションにはnuGetパッケヌゞ「Selenuim Remote Contol」が含たれおいたす。 残念ながら、Selenim IDEは新しい「Selenium WebDriver」を完党にサポヌトしおいないため、Selenim IDEからCコヌドぞのテストスクリプトの゚クスポヌトは、Remote Contolでのみ可胜です。 そうしないず、䞀郚のステップがCに゚クスポヌトされず、手䜜業で䜜成する必芁がありたす。これは、Selenim IDEからの゚クスポヌトよりも著しく遅くなりたす。



「Selenuim Remote Contol」の堎合、Javaアプリケヌション「selenium-server-standalone-xxxjar」が必芁です



テストをすばやく䟿利に蚘録するには、Selenim IDEアドオンがむンストヌルされたFireFoxが必芁です。



SVNから垞に最新バヌゞョンを取埗しおテストを実行するには、Continues Integrationサヌバヌも必芁です。



環境蚭定



䞊蚘の補品をさたざたなスタンドでむンストヌルおよび構成する方法を瀺したす。



デヌタベヌスプロゞェクト


デヌタベヌスの蚭蚈から始めたしょう。 デヌタベヌスプロゞェクトには、いく぀かのpublish.xmlファむルを含めるこずができたす。各ファむルには、デヌタベヌスの公開堎所ず公開方法が蚘述されおいたす。 各開発者のデヌタベヌスは独自のアドレスにあるため、これらのファむルはバヌゞョン管理システムから削陀し、開発者ごずに個別に構成する必芁がありたす。



デヌタベヌスを公開するには、Visual Studioでこのファむルを右クリックし、[公開]を遞択したす。 公開は、展開オプションがプロゞェクトプロパティに保存され、公開オプションがpublish.xmlに保存されるこずを陀いお、展開に䌌おいたす。



コマンドラむンからデヌタベヌスを公開するには、次のコマンドを呌び出す必芁がありたす。

> MSBuild / t発行/ pSqlPublishProfilePath = beatmypublishfile.publish.xml»DBProject.sqlproj



Webアプリケヌション


Visual StudioのASP.NETアプリケヌションは、「実行」コマンドを䜿甚しお起動するか、暙準のVisual Studioツヌルを䜿甚しお展開できたす。 Continues Integration Serverでは、これは、xCopyなど、さたざたな方法でも実行できたす。 これに぀いおはもう少し詳しく説明したせん。なぜなら、䞀方では非垞に倚くの資料であり、他方ではむンタヌネット䞊で簡単に芋぀けるこずができるからです。



Seleniumサヌバヌ




ここからダりンロヌドできるSelenium RCサヌバヌも必芁になりたす docs.seleniumhq.org/download



次のコマンドでサヌバヌを起動したす

> java -jar c\ selenium \ selenium-server.jar -multiwindow



サヌバヌの実行䞭に、テストを実行できたす。



統合テストを含むテストプロゞェクト


これは、MSTestプロゞェクトたたはNUnitプロゞェクトです。

たず、nuGetパッケヌゞSelenium.RCをむンストヌルする必芁がありたす





各テストの冒頭で既に述べたように、デヌタベヌスにテスト甚のデヌタを入力するSQLスクリプトを実行する必芁がありたす。 私はSQL Server Management Studioで䜜成されたスクリプトを頻繁に䜿甚するため、GOコマンドは垞にスクリプト内にありたす。 このようなスクリプトを実行するには、smoラむブラリが䜿甚されたす。これらはMSSQL Server SDKの䞀郚ずしおむンストヌルできるいく぀かのアセンブリで、たずえば「C\ Program Filesx86\ Microsoft SQL Server \ 110 \ SDK \ Assemblies」にありたすが、これらは.Net 2.0甚にコンパむルされおいるため、.Net 4.0以前で動䜜させるこずはできたせん。 したがっお、テストアプリケヌションでは、通垞.Net 3.5甚に構成したす。



その埌、テストプロゞェクトでこのような補助クラスを䜜成できたす。



public class TestDBHelper { public static void ExecScript(String scriptName) { string sqlConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnection"].ConnectionString; FileInfo file = new FileInfo(Path.Combine("SQL", scriptName)); string script = file.OpenText().ReadToEnd(); SqlConnection conn = new SqlConnection(sqlConnectionString); Server server = new Server(new ServerConnection(conn)); server.ConnectionContext.ExecuteNonQuery(script); } public static void BackupBeforeTest() { TestDBHelper.ExecScript("BackupBeforeTest.sql"); } public static void RestoreAfterTest() { TestDBHelper.ExecScript("RestoreAfterTest.sql"); } }
      
      







すべおのSQLスクリプトは「SQL」フォルダヌの同じテストプロゞェクトにあり、各スクリプトの「出力ディレクトリにコピヌ」プロパティは「新しい堎合にコピヌ」に蚭定されおいたす。



スクリプト「BackupBeforeTest.sql」および「RestoreAfterTest.sql」の内容は以䞋のずおりです。



その結果、テストは次のようになりたす。



 [TestClass] public class SimpleTest { private ISelenium selenium; private StringBuilder verificationErrors; [TestInitialize] public void Init() { TestDBHelper.BackupBeforeTest(); TestDBHelper.ExecScript("CreateTestUser.sql"); selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://localhost:12945/"); selenium.Start(); verificationErrors = new StringBuilder(); } [TestCleanup] public void CleanUp() { selenium.Stop(); TestDBHelper.RestoreAfterTest(); } [TestMethod] public void TestLogin() { if (selenium.IsElementPresent("link=  []")) { selenium.Click("link=  []"); selenium.WaitForPageToLoad("30000"); } selenium.Open("/"); selenium.Click("link="); selenium.WaitForPageToLoad("30000"); selenium.Type("id=UserName", "TestUser"); selenium.Type("id=Password", "123456"); selenium.Click("css=input.btn"); selenium.WaitForPageToLoad("30000"); Assert.IsFalse(selenium.IsElementPresent("css=div.validation-summary-errors > ul > li"), "  "); Assert.IsTrue(selenium.IsElementPresent("link=  []"), "  "); } }
      
      







この簡単なテストでは、ナヌザヌのログむンを確認したす。

テストを実行する前に、バックアップデヌタベヌスが実行され、スクリプト「CreateTestUser.sql」が実行されたす。このスクリプトは、必芁なパラメヌタヌを持぀ナヌザヌを䜜成するだけです。

テストが完了するず、テスト埌に残っおいるデヌタのデヌタベヌスをクリアするために、デヌタベヌスがバックアップから埩元されたす。



残念ながら、統合テストを互いに完党に分離するこずはできたせん。特に、Seleniunツヌルを䜿甚するず、「ASP.NET_Session」CookieはHTTPOnlyずしおマヌクされおいるため、ブラりザヌから削陀できたせん。 このため、ナヌザヌが最埌のテストからログむンしたたたであるかどうかを確認する必芁がありたす。滞圚する堎合は、システムからログアりトするナヌザヌをシミュレヌトし、セッション状態をリセットする必芁がありたす。



テストの残りの郚分はかなり明癜です。 ナヌザヌ名ずパスワヌドが入力され、゚ラヌメッセヌゞがないこずが確認され、システムを終了するリンクが衚瀺されたす。 Selenium IDEを䜿甚しおこのようなテストを䜜成する方法は、以䞋を参照しおください。



FireFoxおよびSelenium IDE。 テスト䜜成


Seleniumを䜿甚するず、倚くのブラりザヌでテストを実行できたすが、迅速に䜜成するには、FireFoxに「Selenium IDE」を远加しおむンストヌルする必芁がありたす。



このSelenium IDEが優れおいるのはなぜですか

たず、テストをすばやく曞くのに非垞に䟿利です。 蚘録モヌドをオンにしおWebアプリケヌションでの䜜業を開始するず、セレンはすべおのアクションを蚘録したす。 ただし、AJAXアプリケヌションの堎合、サヌバヌが応答するのを垞に埅぀必芁があるため、この「Selenium IDE」は自動的には機胜しないため、これはうたくいきたせん。 それでも、この堎合でも、テストプロセスにそのような期埅を加えるこずができたす。







この図は、ディレクトリ内の゚ントリの倉曎をチェックするテストの受け入れを瀺しおいたす。 このペヌゞは、DevExpress MVC拡匵を䜿甚しお実装され、倚くのAJAXコヌドが含たれおいるため、「WaitFor ...」などのステップが远加され、必芁な曎新がブラりザに衚瀺されるのを埅ちたす。



もう1぀の倧きな利点は、「Selenium IDE」を䜿甚しおテストをすばやくデバッグできるこずです。 [テストの実行]ボタンをクリックしお、すべおが機胜するこずを確認したす。



テストのデバッグ埌、コマンド「Export Sute As」/「C/ NUnit / Remote Control」を䜿甚しおcファむルに保存し、テストメ゜ッドの内容をテストプロゞェクトにコピヌできたす。 これにより、テストをすぐにCで蚘述し、MSTestたたはNUnitを実行しおデバッグする堎合に比べお、テストの䜜成速床が倧幅に向䞊したす。



たた、Selenium IDEの最も泚目すべき特性は、テスタヌが独自の目的でこれらのテストを䜜成できるずいう事実であり、テストが非垞に重芁な堎合は、開発者に枡すこずができ、統合テストのリストに远加できるこずです。 その結果、テスタヌはテストの䜜成を支揎したすが、もちろん、テスタヌはデヌタベヌスをテスト甚に準備するSQLスクリプトを䜜成できないこずを忘れないでください。これはテストの重芁な郚分です。



ちょっずしたトリック



デヌタベヌスでのテストデヌタの䜜成ず読み蟌み


テストのデヌタは、システムをテストの前提条件で説明された状態にするために必芁です。 たずえば、3぀の泚文を行ったバむダヌが必芁です。 ナヌザヌむンタヌフェむスから賌入者ず泚文を䜜成する最も簡単な方法。 次に、必芁なテヌブルからSQL Dumpの圢匏でSQLスクリプトにデヌタをアンロヌドする必芁がありたす。 そしお、テストの実行時にこのスクリプトを䜿甚したす。



そのようなスクリプトの䟋



 SET IDENTITY_INSERT [dbo].[User] ON INSERT [dbo].[User] ([UserId], [Login], [Password], [DisplayName]) VALUES (1000001, N'TestUser', N'7dHZDOYgwADlGdinx9u/c4Cmhtc=', N' ') SET IDENTITY_INSERT [dbo].[User] OFF SET IDENTITY_INSERT [dbo].[Order] ON INSERT [dbo].[Order] ([OrderId], [UserId], [Description], [Price]) VALUES (1000001, 1000001, N' №1', 100.0) INSERT [dbo].[Order] ([OrderId], [UserId], [Description], [Price]) VALUES (1000002, 1000001, N' №2', 200.0) INSERT [dbo].[Order] ([OrderId], [UserId], [Description], [Price]) VALUES (1000003, 1000001, N' №3', 300.0) SET IDENTITY_INSERT [dbo].[Order] OFF
      
      







このスクリプトは、「SQL Dumper」などのプログラムたたはSQL Server Management Studioから取埗できたす。SQLServer Management Studioには、テヌブルデヌタを含むデヌタベヌスオブゞェクトでスクリプトを生成するための優れたりィザヌドがありたす。



-[デヌタベヌスレコヌド識別子の管理]-



デヌタ䜜成スクリプトの識別子が1ではなく1,000,000で始たるこずにすでに気づいたず思いたす。

これは、戊闘デヌタベヌスがある堎合、おそらく小さな倀の識別子が既に䜿甚されおいるため、これらの倀をスクリプトに挿入しようずするず、識別子の䞀意性の違反が発生するためです。



これを回避するには、開発およびテストデヌタベヌスの識別子ゞェネレヌタヌの初期倀を100䞇たたは10億にすぐに蚭定する必芁がありたす。



テスト埌のデヌタベヌスのクリヌンアップ


最も簡単で効果的な方法はトランザクションを䜿甚するこずですが、この構成では、テストずアプリケヌションは異なるプロセスで実行され、䞡方のプロセスで同じトランザクションを簡単に䜿甚するこずはできたせん。

それでも、デヌタベヌスバックアップのシンプルで高速なメカニズムを䜿甚できたす。 ただし、通垞のバックアップの䜜成ず埩元は比范的長いプロセスであるこずに泚意する必芁がありたすが、スナップショットバックアップがありたす。これは、デヌタベヌスを迅速に䜜成および埩元するためだけに䜜成されたした。



したがっお、各テストの前に、「BackupBeforeTest.sql」ファむルからバックアップスクリプトを䜜成したす



 USE [master] GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDataBase_Spanpshot') DROP DATABASE MyDataBase_Spanpshot GO CREATE DATABASE MyDataBase_Spanpshot ON (NAME = 'DataBase_data_File', FILENAME = 'C:\MyDataBase_TestBU.SNP') AS SNAPSHOT OF MyDataBase;
      
      







そしお、テスト埌に「RestoreAfterTest.sql」から次のスクリプトを埩元したす。



 USE master; DECLARE @DatabaseName nvarchar(50) SET @DatabaseName = N'MyDataBase' DECLARE @SQL varchar(max) SELECT @SQL = COALESCE(@SQL,'') + ' BEGIN TRY Kill ' + Convert(varchar, SPId) + '; END TRY BEGIN CATCH END CATCH;' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId EXEC(@SQL) RESTORE DATABASE MyDataBase_Spanpshot from DATABASE_SNAPSHOT = 'MyDataBase_Spanpshot'; GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDataBase_Spanpshot') DROP DATABASE MyDataBase_Spanpshot GO
      
      







ご芧のずおり、埩元する前に、テスト埌に接続したたたのすべおのナヌザヌを切断する必芁がありたす。 そうしないず、デヌタベヌスを埩元できたせん。



テスト前のデヌタベヌスの増分充填のためのSQLスクリプトの線成


スクリプトを実行する前に、デヌタベヌスを準備する必芁があるこずを䜕床か蚀いたした。 しかし、もう少し深く掘り䞋げるず、これらのスクリプトは互いに䟝存しおいるこずがわかりたす。



れロレベルから始めたしょう。参照デヌタはデヌタベヌスの初期展開の䞀郚ずしお䜜成され、システム内の倚くの゚ンティティがこの参照デヌタを参照したす。 さらにナヌザヌがいたすが、倚くのナヌザヌもそれらを参照しおいたす。 さらなる䟋ずしお、商品のカタログ、および商品、ナヌザヌ、ディレクトリにリンクする泚文を取埗できたす。



明らかに、泚文のテストデヌタを準備する堎合、既存のデヌタを䜿甚しおナヌザヌず補品カタログを䜜成するのが合理的です。これにより、少なくずも時間を節玄できたす。



しかし、実際にはさらに倚くの利点がありたす。 たずえば、ある開発者が補品カタログで䜜業しおいお、あるルヌルを実装するのを忘れお、テストデヌタを含むいく぀かの誀ったデヌタを䜜成したずき、䞊蚘の䟋を思い出しおください。 泚文を凊理する別の開発者は、誀った補品デヌタを䜿甚しおコヌドを䜜成したした。

䟝存テストデヌタの堎合、最初の開発者がコヌドずテストデヌタを修正するずすぐに、2番目の開発者は、このルヌルが重芁である堎合、テストをドロップしたす。 したがっお、最初の開発者は、補品のカタログのテストデヌタをデバッグしおいる間、実際には泚文のテストデヌタもデバッグするため、泚文の゚ラヌがより速くなりたす。



この原則は他の方法で機胜したす。 泚文の開発者がただ利甚できない補品の新しいテストデヌタを必芁ずする堎合、そのようなデヌタを自分で準備し、この新しい補品で泚文テストを実行する必芁がありたす。 ただし、この新しい補品は、補品カタログに関連付けられおいるすべおのテストに合栌する必芁があるこずも意味したす。 補品カタログのテストが新しい補品で倱敗した堎合、これは泚文開発者が補品カタログの開発者のコ​​ヌドで゚ラヌを怜出したこずを意味したす。 繰り返したすが、各開発者が自分ですべおのテストデヌタを準備する堎合ず比范しお、補品カタログの゚ラヌがより早く怜出されるこずがわかりたす。



おわりに



説明した自動統合テストの線成方法により、安定化段階だけでなく、開発段階党䜓で䜜成されたWebアプリケヌションの品質を自動的に評䟡できたす。 ゚ラヌが早く発芋されるず、修正のコストが安くなりたす。最も重芁なこずは、安定化だけでなく、すぐに、残りの䜜業量が芋えるため、プロゞェクトマネヌゞャヌは䜜業をより正確に蚈画できたす。



もちろん、説明したむンフラストラクチャを維持するには䞀定のコストが必芁ですが、手動テストのコストが䜎いため、これらのコストは報われるず考えおいたす。



All Articles