分離された単䜓テストを䜿甚しお、システム蚭蚈を制埡䞋に保぀

同意しお、既補のコヌドの束を捚おたい状況は非垞に迷惑です。 この蚘事では、 Andrei Kolomenskyず䞀緒に、この原因を特定し、最倧の生産性のポむントでシステムがどのように芋えるべきかを調べる方法を説明したす。 どのアプロヌチが䞍十分な綿密な蚭蚈の悪埪環に私たちを匕き蟌み、最終的に高品質のシステム蚭蚈に぀ながり、欠陥のリスクを枛らすテスト可胜なシステムを埗るこずができるかを分析したしょう。







今日は









講挔者に぀いお Andrei Kolomensky- OnAgileの Agile Coachは10幎以䞊コヌドを曞き、支払いシステムなどの耇雑なドメむンモデルず、保存する必芁がある耇雑なレガシヌコヌドの開発ず、それらの䜜業の生産性を回埩する必芁のある䞡方の開発に取り組みたした。



仕事䞭ずっず、次の問題に気づきたした。 プロゞェクトを開始するずき、たたは既にプロゞェクトに取り組んでいるずきは、垞に䞀定の速床で移動するこずを期埅しおいたすタむトルの写真のように。 しかし、珟実には、珟実は私たちに同意したせん。



私たち党員が非垞に頻繁に野生の非生産的になりたす。 最初は、プログラマずしお私たちが倚くの機胜を実装し、最終的にはほずんど機胜を提䟛しおいないず文句を蚀うこずをビゞネスは喜んでいたす。 その結果、ほが疑問笊が眮かれおいる䞭間ゟヌンでは、すべおを曞き盎したり、䞻芁なリファクタリングを実行したいずいう匷い芁望がありたす。



コヌドを砎棄したい状況は、私を非垞に困らせたす。 これは私に非垞に近いトピックです。 私は1幎半にわたっお銀行りォレット゜リュヌションを開発したした。 この間ずっず生産に行かず、ほずんどすべおの準備が敎った時点で、銀行は免蚱を取り消されたした。



ビゞネスは、コヌドを削陀せずに別の補品を䜜成するこずを決定したした。りォレットの決定ではなく、支払いアグリゲヌタヌです。 察象分野は非垞に䌌おいたす。ナヌザヌからお金を受け取り、手数料を取り去り、店舗にお金を枡したす。



意味の近いドメむンであっおも、このようなピボットを䜜成できなかったため、すべおのコヌドを砎棄したした。 これにはいく぀かの理由がありたした。





質問生産性を最倧限に高めるために、システムがどのように芋えるべきかをどのように知るのですか



捚おたコヌドはテストでカバヌされたした。 私たちはその品質をリファクタリングしたしたが、結果ずしおほずんどすべおを捚おたした。



システムからフィヌドバックを埗るには、システムを蚭蚈する方法を理解するのに圹立぀䜕らかのツヌルが必芁です。 頭の䞭にある知識だけでは、システムが䞀般的にどのように芋えるべきかをい぀でも知るには十分ではないかもしれたせん。



単䜓テストは、システムからフィヌドバックを受け取るための䞻芁なツヌルです。



単䜓テストを䜜成するずき、少なくずもシステムの正確性ずテスト容易性の小さな品質を保蚌できたす。



1぀のテストを芋おみたしょう。







真空のBuyProductsActionに䟋がありたす-䞀郚の補品を賌入したす。 このテストに぀いお質問がありたすが、その䞻なものは、このテストからシステムの品質に぀いお䜕を孊ぶこずができたすか ほずんど䜕もありたせん入力パラメヌタヌを反埩凊理し、アサヌションを远加し、䜕らかの方法で远加のチェックを提䟛できたす。 さらに、補品ずナヌザヌの特性が非垞に倚く、デヌタベヌス内のパラメヌタヌが倚すぎるため、倚くを確認する必芁がありたす。



ここではシステム蚭蚈に぀いお䜕も孊びたせん。 これが、すべおのコヌドを投げた理由です。テストから孊んだこずにより、システムの蚭蚈を合理的に改善するこずができなかったからです。



BuyProductsActionは内郚で䜕ができたすか 泚文を䜜成し、通知を送信し、アカりントからお金を償华し、利子ボヌナスを獲埗したす-それは内郚で倚くのこずができたす。



統合テストずは䜕ですか



ナニットテストの抂念は、あたりにも曖昧であり、誰もが独自の方法でそれを理解しおいるため、今はそのたたにしたす。



統合テストずは、パスたたはドロップするテストです

自明でない動䜜の耇数のナニットに䟝存したす。



぀たり、このテストが倱敗した理由を具䜓的に瀺すこずはできたせん。 ゚ラヌがある堎所、テスト領域の䞀郚のコンポヌネントが萜ち、特定の堎所ではないこずがわかるず、このテストは統合されたす。



分離テストは、自明ではない1぀のナニットのテストです。

行動、これの通過たたは萜䞋はこれだけに䟝存する

動䜜。



実際、これは1぀のメ゜ッドたたはシステムの䞀郚に察するテストであり、重芁な動䜜の残りはmokiに眮き換えられたす。



BuyProductsActionメ゜ッドのテストを分離しようずするず、すべおが完党にテストされるのではなく、runメ゜ッドが排他的に実行され、それに含たれる䟝存関係の自明でない動䜜から分離される堎合に発生するず仮定したす。



最も可胜性が高いのは、同様のテストで蚘述されたシステムがシステム蚭蚈にそれほど倧きな圱響を䞎えないため、これを行うこずができず、分離されたテストをすぐに蚘述できるためです。 これを行うこずができたずしおも、ほずんどの堎合ゎミがありたす。







入力パラメヌタヌが枡されるAnaliticsComponentのようなものがあるず蚀うこずから始めたす。 このこずをサヌビスロケヌタヌに入れたす。 動䜜を蚭定する他のコンポヌネントがいく぀かありたす。



読む必芁のないコンポヌネントもありたす-それらは単にボリュヌムを明確にするためのものです。
















分離テストで明瀺的に芏定する堎合、分離テストで芋られる䟝存関係の数は、䌚瀟で分離テストを曞く習慣がない堎合、通垞非垞に倚くなりたす。 孀立したテストを䜜成できたずしおも、状況は通垞次のようになりたす。







システムをテスト可胜な状態にリファクタリングするずきに最初にするこずは、䟝存関係をクラスにプッシュし、明瀺的にコンストラクタヌに泚入するこずです。



このテストを芋たずきに尋ねられる䞻な質問は、このテストからシステムの品質に぀いお䜕を孊べたすか



私は、単独責任の原則が明らかに違反しおいるず思いたす。 ここでは、「理解可胜性」に関する䞻芳的な蚀説から抜け出すこずはできたせん。 このテストは筆者にずっお読み曞きが難しいこずがわかりたす。 このクラスに倉曎を加えるず、このテストは垞に䜎䞋するこずがわかりたす。 この架空のテストをプレれンテヌション甚に準備するこずは私にずっお困難でした。



この生産コヌドを曞いたら、私たちはただ倢䞭になるでしょう。



システム蚭蚈の品質ずその合理的なリファクタリングを改善するために、孀立したテストを䜿甚したす。


圌らは私のシステムに぀いお最も完党なフィヌドバックを提䟛したす。







統合されたテストによっお、システムの䞀郚が入力パラメヌタヌの䞀郚で正しく機胜するずいう基本的な理解しか埗られない堎合、分離テストにより、システムで䜕が起こっおいるかを明確に確認できたす。 孀立したテストを䜜成する際の䞍快感の皋床は、システムのテスト容易性の皋床に察応したす。



腐敗システム



すべおの単䜓テストに合栌したしたが、QA郚門が䜕らかの欠陥を発芋したした。 問題は2぀のコンポヌネントの接合郚にあるこずを理解し、統合テストを䜜成するこずを決定したした。これは、より簡単であり、実際の䜜業を確認する必芁があるためです。



ちなみに、 バグずいう蚀葉の䜿甚はお勧めしたせん。 これはパです

業界の倜明けにサヌバヌに飛び蟌みたした。 ITからのバグの䟋

開発は、SkypeからSQLク゚リをコピヌしおコヌドに貌り付けたずきに行われたすが、Skypeがスペヌスの代わりに挿入されるため、そこでは機胜したせん

切り離せない空間。 これが起こるずき-これはバグです。 残りの

ケヌス、私は単語の欠陥を䜿甚するこずを奜むので、

プログラムの䞍正な振る舞いは偶然ではなく、プログラマヌの盎接の責任です。 より匷力な蚀葉遣いの欠陥

責任を取り陀く「バグ」よりも。 具䜓的な蚌拠はありたせんが、

チヌムは、単に認識ず責任を高めるこずで品質を向䞊させるために、単に単語のバグから単語の欠陥に切り替えたずいう事実のために管理したした。



統合テストを䜜成したため、システムの蚭蚈ぞの圱響は少なくなりたす。 統合テストを䜜成するずき、さたざたな方法で実装を䜜成できたす䞀連の䟝存関係を挿入し、システムの動䜜を倉曎する静的メ゜ッドを呌び出し、サヌビスロケヌタヌから呌び出しだけのベヌルを呌び出したす-絶察に、完党に自由です。



したがっお、簡単な生掻から、システムの蚭蚈はそれほど慎重ではありたせん。 私たちはシステムがどのように配眮されるかを気にしたせん-私たち自身の内面の矎しさの感芚だけでシステムを芋お、どのように最高かを考えたす。 しかし、テストからのプレッシャヌはありたせん。



これは、システムのテスト容易性が䜎䞋するずいう事実に぀ながり、今では小さな分離テストを曞くこずができたせん。 少なくずも、たずえ曞くこずができたずしおも、それはより困難になっおいたす。



この点で、システムのテストが難しくなるため、欠陥のリスクが高くなりたす。 高品質の小芏暡な単䜓テストを䜜成する時間が少なくなりたした。







孀立したテストを曞くのは難しいので、私たちは円に戻り、最終的に統合されたテストのみを曞くこずにしたす。 その結果、システムの蚭蚈に䜕も圱響を䞎えない状況になりたす。私たちだけが-私たちが望むように、私たちは曞きたす。



代替オプション。



同じ状況-圌らは単䜓テストに合栌したしたが、欠陥がありたした。 小さな分離テストを䜜成するずどうなりたすか。 システムがこれらの小さな孀立したテストの蚘述を劚げるずいう事実に関しお、倚くの問題に盎面したす。



私たちの生掻を楜にし、そこで䜕が起こっおいるのかを理解できるようにこれらの分離されたテストを質の高い方法で曞き始めるために、システムをより慎重に蚭蚈し始め、巚倧なテストを曞く必芁がなくなりたした。



テストを小さくするためには、システムの品質を高め、唯䞀の責任の原則ず䞀臎させるために、䞀生懞呜努力する必芁がありたす。 これにより、システムのテスト容易性が向䞊したす。 分離された単䜓テストを蚘述しやすくするために、システムを可胜な限りテスト可胜にするようにしたす。







その結果、テスト可胜なシステムでは、小さな孀立した単䜓テストを䜜成する時間が増え、高品質のシステム蚭蚈が可胜になり、欠陥のリスクが軜枛されたす。 「実際の䜜業」が行われおいないずいう事実はどうですか このトピックを開く前に、もう1点觊れおおきたいず思いたす。 私のポむントは



高い生産性を継続的に維持するこずのみが可胜です。

芏埋テスト駆動開発の実践。





反察の意芋も非垞に䞀般的ですがたずえば、このトピックに関するビデオ 。



テスト駆動開発



テスト駆動開発は専門分野です。 芏埋ずは、それを適甚するこずによっお自分自身に課す制限を意味したす。 これはRed-Green-Refactoringではなく、䞀連の特定のルヌルです。



  1. 萜䞋単䜓テストがない限り、補品コヌドを曞くこずはできたせん。

  2. 単䜓テストコヌドを、ドロップするのに十分な数以䞊蚘述するこずはできたせん。 コンパむル゚ラヌはすべお萜ちたす。 コンパむル゚ラヌが発生しおも、クラッシュするずすぐに単䜓テストの䜜成をすぐに停止したす。

  3. 1぀の萜䞋ナニットテストに合栌するのに十分な量を超える本番コヌドを蚘述するこずはできたせん。たた、特定の萜䞋ナニットテストに適甚されない本番コヌドを蚘述するこずはできたせん。



テストを曞くだけでなく、実装はRed-Green-Refactoringだけではありたせん。これらは远加の制限です。 これはテスト駆動開発です。これにより、システムを高品質の状態に維持し、長期にわたっお可胜な限り最高の生産性を維持できたす。



レガシヌコヌド



Michaels C. Feathersの定矩によるず、 レガシヌコヌドは単䜓テストのないコヌドです 。 すべおがシンプルです。 私の実践では、テストの欠劂ずシステム蚭蚈に関する膚倧な数の問題の存圚、および統合テストの存圚ずシステム蚭蚈の問題ずのほが同じ䟝存性の間に盎接的な盞関関係があるこずに気付きたした。 小芏暡な分離テストが少ないほど、システム蚭蚈の問題が倚くなりたす。







テストがない堎合、それはレガシヌです。



私は他の定矩が奜きです。それはそれほど正確ではありたせんが、珟実を反映しおいたす。



レガシヌコヌドずは、倉曎するのが怖いコヌドです。


デむブ・トヌマスはか぀お次のようなこずを蚀っおいたした。「テストをたったく曞かない堎合もありたすが、すでに高品質のシステムを蚭蚈できたす。」



たず、圌は膚倧な量の単䜓テストの経隓を持っおいたす。 第二に、テストなしでこのようなシステムを䜿甚する堎合、私にずっおこのシステムはレガシヌになりたす。倉曎を加えるこずが怖いからです。 倉曎を行うこずの恐怖が、コヌドの劣化の䞻な理由です。 テスト駆動開発の分野は薬です。 この芏埋をコミットしお䜿甚するず、コヌドのすべおの行に぀いおフィヌドバックが埗られるため、倉曎の恐れがなくなりたす。



ロバヌト・マヌティンは、私たちの職業では、医垫に察するヒポクラテスの誓いに䌌た誓いを立おるこずを提案しおいたす。 単䜓テストが業界で少なくずも重芁である理由を明確に瀺すためにここにそれをもたらしたす。そしお、最倧で、芏埋ずしおのテスト駆動開発がプログラマヌずしお重芁です。



プログラマヌの誓い



プログラマヌの職業の名誉を守り、維持するために、私の胜力ず刀断の及ぶ限りでは、それを玄束したす。



1.悪意のあるコヌドを䜜成したせん。



これは、りむルスだけでなく、圓瀟に損倱をもたらすコヌドにも適甚されたす。 䌚瀟の損倱を匕き起こすコヌドを曞いた堎合、これは悪意のあるコヌドです。



2.私が䜜成するコヌドは、垞に私の最高の䜜品です。



動䜜ず構造の䞡方で、コヌドに欠陥があるこずを故意に蚱可したせん。 もちろん、振る舞いにおいお、䜕らかの怜蚌がない堎合、その正確性を保蚌するこずはできたせん。 構造䞊、小さな孀立した単䜓テストがない堎合、システムの蚭蚈がテスト可胜で高品質であるこずを保蚌できたせん。



3.各リリヌスで、コヌドのすべおの芁玠が正垞に機胜するこずを、迅速か぀信頌性が高く、再珟可胜な蚌拠ずしお提䟛したす。



この項目の重芁性は、倚くの䌁業が手動テストに費やし、自動化できるものに費やし、同時にコヌドの品質を改善するために䜿甚し、結果ずしお開発をスピヌドアップするために䜿甚する金額を芋るず特に顕著です。



4.他の人の進行を劚げないように、頻繁に小さなリリヌスを行いたす。



迅速に出荷するには、小さなリリヌスを䜜成する必芁がありたす。 個人的には、テストなしで十分な品質の小さなリリヌスを䜜成するこずはできたせん。



5.私はあらゆる機䌚にコヌドを倧胆か぀粟力的に改善したす。 私はその品質を決しお䜎䞋させたせん。



コヌドをリファクタリングするために、倉曎するこずを恐れる必芁はありたせん。 私の叀いパタヌンは次のように芋えたした。システム内の堎所ず、このシステムに倉曎を加える2぀の方法がありたす。簡単な方法「束葉杖」ず深刻なリファクタリングが必芁な堎合の難しい方法です。



テストがない堎合は、䜕かを壊すこずができるため、サブゞェクト領域の構造を真剣に倉曎するこずはありたせん。 そしお、私は䜕かを壊したくないので、簡単な方法を遞択したす。



単䜓テストではこのような問題はありたせん。 テスト駆動開発を実践すれば、たったく問題はありたせん-私のコヌドは垞に正しいです。 䜕かがそこで壊れるず、状況が完党にコントロヌルされおいたため、どこかでめちゃくちゃになったような気がするので、プロずしおの苊痛です。 個人的には、欠陥の発生は深刻な課題です。



6.私は、自分自身ず他者の生産性を可胜な限り高く保぀ために、できる限りのこずを行いたす。 この生産性を䜎䞋させるようなこずは䜕もしたせん



テスト駆動開発は生産性を䜎䞋させるか、長期間実践するず生産性が向䞊するず蚀われたす。 実際、生産性を䞀定レベルに維持したす。



私たちの仕事は、より速く動くこずではなく、䞀定の速床で動き、匱い建築゜リュヌションに関連する損倱を確実に取り陀くこずです。



テスト駆動開発により、これを行うこずができたす。



7.他の人が私を眮き換えるこずができるこずを垞に確認し、それらを眮き換えるこずができたす



他の人のコヌドを芋お、そこにテストがない堎合、これは私にずっお問題です。 そこで䜕が起こっおいるのかを理解するこずはできたすが、䜕かを考慮に入れるこずができないため、そこで倉曎を加えるのが怖いです。 チヌムがペアプログラミングず完党なカバレッゞを単䜓テストで実践しおいる堎合、お互いを亀換しおシステムのさたざたな郚分で䜜業するこずは非垞に簡単です。すべおが安党です。



8.私は、正確さず正確さの䞡方で正盎な芋積もりをしたす。 私はそれを守れるずいう自信がなければ玄束をしたせん



ひどいレガシヌがあり、1週間かかるず蚀っおから、悪いコヌドのある堎所を掘り起こすず、今週は3぀になりたす-レガシヌコヌドで非垞によくあるこずです。



9.私は自分の工芞を孊ぶこずをやめたせん



少し運動



テスト駆動開発により生産性を最倧の䞀定レベルに保぀こずができるずいうステヌトメントを確認するこずをお勧めしたす。 あなたの補品で、あなたがうたく蚭蚈されおいるず思うシステムの䞀郚を芋぀けおみおください。テストはあるかもしれたせんが、それらは統合されおおり、システムのこの郚分で小さな孀立した単䜓テストを曞いおみおください。 次に、私が個人的にどのようにそれらを曞くかを瀺したす。



あなたが経隓する䞍快感の皋床は、このシステムの品質の皋床に察応したす。 小芏暡な独立したテストにより、システムの蚭蚈がどれほど適切であるか、たたは䞍十分であるかがわかりたす。



システムがあたりうたく蚭蚈されおいないこずを理解しおいる堎合、これはテスト駆動開発の䜿甚を開始する方法に぀いお考える機䌚です。



最も簡単な䟋







サヌバヌに䟝存するクラむアントがありたす。 クラむアントはコンテキストに䟝存せず、テストは非垞に簡単です。 メ゜ッドを呌び出しお、出力を確認するだけです。 サヌバヌのテストはより困難であり、クラむアントず釘で結び付けられおいたす。 個別にテストするには、それらを分離する必芁がありたす。



䞭間にむンタヌフェヌスを挿入する必芁がありたす。 これで、クラむアントに関係なくサヌバヌをテストできたす 。 おそらく、倚くは実装ではなくむンタヌフェヌスに基づいたプログラムぞのアドバむスを聞いたが、このアドバむスが良い理由を理解しおいなかった。



これは、なぜそうなのかを瀺すデモです。 システムの蚭蚈に圹立぀小さな独立した単䜓テストを䜜成する堎合は、䜕らかの方法でコンポヌネントを分離する必芁がありたす。 それらを分離するには、途䞭に䜕かを挿入する必芁がありたす。 この堎合、それはむンタヌフェヌスです。







むンタヌフェヌスは、単に着信および発信パラメヌタのメ゜ッドずシグネチャのコレクションではありたせん。 むンタヌフェヌスは契玄でもありたす。぀たり、むンタヌフェヌスに䜕かを芁求するずきに満足しなければならないクラむアントの期埅です。



むンタヌフェむスにアクティブなナヌザヌを返すように䟝頌するずしたす。 出力パラメヌタヌにナヌザヌの配列があるこずを確認するだけでは十分ではありたせん。 アクティブなものが必芁です。 そのため、「むンタヌフェむス、アクティブなナヌザヌを教えおください」ず尋ねるテストを䜜成したす。



そしお、実際の䜜業を暡倣したす。実際の䜜業を行う必芁がないため、独立したテストを䜜成したす。







スタブは䜕らかの倀を返したす。





それだけです-私たちは3぀のテストを曞きたした。 ここでのタスクは、䜕らかの実装でコントラクトを実行するこずです。 私たちは本圓にデヌタベヌスに飛び蟌み、䜕かを埗お、実際にアクティブなナヌザヌを獲埗しおいるこずを確認したす。 契玄むンタヌフェヌスに埓っお行動したす。







したがっお、巊偎では、システムがむンタヌフェヌスの異なる結果でどのように動䜜するかを具䜓的に指定したす。右偎では、システムが実際に期埅を満たしおいるため、結果ずしお、すべおが連携しお動䜜したす。



クラむアントずサヌバヌの正確性を怜蚌するために、クラむアントずサヌバヌを䞀緒にテストする必芁はありたせん。 それで十分です





それで十分です。



シンプルなデザむンの4぀のルヌル



このコンセプトは、ケントベックによっお発明されたした。 優先床の順に、システムはすべおのテストに合栌した堎合、シンプルず芋なすこずができたす。







システムにテストがない堎合、たたはコヌドがテストに合栌しない堎合、少なくずもシステムの粘床が非垞に倧きいため、単玔ずは芋なされたせん。 そのようなコヌドは倉曎するのが怖いです、そしお、これはシステムが腐敗し始めるので問題です。 その結果、生産性が䜎䞋したす。



テストは、コヌドが単玔であるず芋なされるための前提条件です。



さらに、意図を明確にするこずに集䞭できたす。 コヌドをよく曞かれた散文のように読むべきだず誰が蚀ったのか芚えおいたせん。 すべおのテストが機胜した埌、コヌドがよく曞かれた散文ずしお読たれるこずを確認し、 䞍芁な重耇を削陀できたす。



最埌に、 最小数の芁玠で構成されるシステムに぀いおはすでに考えるこずができたす 。







これらの人を゜ヌシャルの友達ずしお远加するこずをお勧めしたす。 ネットワヌク





それらを賌読し、それらから䟋を取り、ブログを読み、圌らが曞いたものを研究しおください。



次は



私はあなたに挑戊したいです。 小さな挔習に戻りたす。適切に蚭蚈されおいるず思われるシステムに参加しお、その䞊で小さな分離された単䜓テストを䜜成したす。



ほずんどの堎合、あなたはこれを行うこずができないずいう事実に遭遇するでしょう、そしおあなたがそれに぀いお䜕かをするこずに決めたなら、私はあなたがこれらのリ゜ヌスを芋るこずを勧めたす



https://cleancoders.com



https://online-training.jbrains.ca/p/wbitdd-01



この蚘事を読んでくれおありがずう。



Andreiに電報https://t.me/akolomenskyで手玙を曞いお、゚ンゞニアリング、プロセス、たたは補品のケヌスに぀いお質問したり、アドバむスを求めたりするこずができたす。圌は皆に答えるず玄束したので、恥ずかしがらないでください。



私たちは、おそらく「 自分の技術を孊ぶこずをやめない 」ずいう誓玄条項を遵守するためではなく 、絶えず改善するこずに留意し、䌚議で䌚いたす。 確かに、䌚議で埗られた実践からのアむデアず事䟋の激しい流れは、少なくずも6ヶ月間、自己改善に匟みを぀けたす。 そしお、開発スケゞュヌルが生産性の悪いスケゞュヌルのように芋えないように、 今すぐ新しい料金を取埗する時間です 。RIT++フェスティバルは5月28ず29日に、 Highload ++シベリア は6月25ず26にノボシビルスクで開催されたす。 最埌の4月30日たでに、管理者は申請を提出するこずができたす。



BackendConfを含む方向のプログラムRIT ++はすでに圢成され始めおおり、あなたにずっお特に有甚なものを芋぀け出し 、 チケットを予玄するこずができたす。 たずえば、この蚘事のトピックで、2GISのYuri Badalyanetsによるトピック「Scalaでのマむクロサヌビスの統合テスト 」に関するアプリケヌション。 圌はたた、単䜓テストでは十分ではないこずが倚く、統合テストも必芁だず考えおいたす。




All Articles