Skip to Content
テスト駆動開発を学ぶ
book

テスト駆動開発を学ぶ

by Saleem Siddiqui
May 2025
Intermediate to advanced
280 pages
3h 35m
Japanese
O'Reilly Media, Inc.
Content preview from テスト駆動開発を学ぶ

第12章. 試験順序

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

私の旅は常に混沌と秩序のバランスだった。

フィリップ・プティ

第11章では、Bank エンティティを導入することで、比較的大きな設計変更を行った。新しく書いたテストも、既存のテストも、この目標を達成するのに役立った。

新しいBank エンティティの特徴のひとつは、任意の通貨ペア間の為替レートを受け入れ、保存できることだ。 為替レートはハッシュマップに格納され、2つの通貨から形成されるキーの中に格納される。 その機能とは、為替レートを変更できるようにすることだ。

この機能が機能するという確信を得るための1つの方法は、(当てずっぽうだが)それを証明するテストを書くことだ。その機能がすでにある可能性が高いのに、なぜテストを書かなければならないのか?言い換えれば、すでに開発が終わっているのであれば、新しいテストは何を駆動する可能性があるのだろうか?

この質問には3つの答えがある:

  1. 繰り返しになるが、新しいテストがあれば、たとえ新しいプロダクション・コードが必要なくても、この機能に対する信頼が増すだろう

  2. 新しいテストは、この機能の実行可能なドキュメントとして機能するだろう。

  3. このテストによって、既存のテスト間の不注意な相互作用が露呈し、それへの対処が促されるかもしれない。

テストは、コードを文書化するための効果的な方法である。テストには意味のある名前を使うことができるし(使うべきだし)、その機能が(どのように動作するかではなく)何をするのかを詳細に記述することができるからだ。テストは、自分自身のコードの振る舞いに関する、微妙だが重要な詳細を忘れてしまったときに、自分自身を再認識する助けにさえなる。そして後述するように、新しいテストを書くことで、既存のテストの問題点を明らかにすることができる。

テストを書くことの正当性が証明されたところで、このリストにある実装されているがテストされていない可能性のある機能に目を向けてみよう:

5米ドル×2=10米ドル

10ユーロ×2=20ユーロ

4002 krw / 4 = 1000.5 krw

5米ドル+10米ドル=15米ドル

テストコードを本番コードから分離する

冗長性テストを削除する

5米ドル+10ユーロ=17米ドル

1 USD + 1100 KRW = 2200 KRW#.

関係する通貨に基づいて為替レートを決定する(→から)。

為替レートが指定されていない場合のエラー処理を改善する。

為替レートの実装を改善する。

為替レートの変更を許可する

為替レートの変化

まずは既存のコンバージョンのテストを修正することから始めよう。我々はすでに、2つの通貨(例えばEUR→USD)間のレートによるコンバージョンが機能することを知っている。同じ通貨ペアの異なるレートを追加することで、テストを追加する。その後のコンバージョンがこの新しい為替レートを利用することを検証する。

テストが問題なく動作すれば、グリーン・フェーズを突破したことになる。最後のフェーズでは、必要なリファクタリングに取り組む。

Go

TestConversion の最後にもう数行追加しよう。為替レートを1.3に変更し、それが有効になることを検証する。 また、その意図を反映させるために、テストの名前を変更する。これがテスト全体である:

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

はじめての知識グラフ構築ガイド

はじめての知識グラフ構築ガイド

Jesus Barrasa, Jim Webber
初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし
ユーザーストーリーマッピング

ユーザーストーリーマッピング

Jeff Patton, 川口 恭伸, 長尾 高弘

Publisher Resources

ISBN: 9798341650992