質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

2回答

537閲覧

テストのitの意味を知りたい

hupyaginu

総合スコア16

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2024/03/15 10:48

編集2024/03/15 11:52

前提

今まで個人の趣味程度で小規模だったのでテストを書いていなかったのですが、そろそろ大きめのコードもかけるようになってきて、テストの必要を感じてテストについて調べています。

調べていく中で、testitの2種存在する事がわかりました。
こちらは以下Stackoverflowから同じ意味であるとわかりました。
https://stackoverflow.com/questions/45778192

ただ、ittestが生まれた背景事情が不明だったり、ittestの使い分けのような返答もいまいち理解できませんでした。
https://stackoverflow.com/a/56072272/4771485

試したこと

  • itという単語がインフォメーション・テクノロジー(情報技術)の意味だったり、そもそも短い単語なのでまともに調べる事ができませんでした。

  • 唯一出てきたのが上記Stackoverflowや以下記事です。

BDDだとなぜdescribeとitで、TDDだとなぜsuiteとtestかが不明です。
情報源も明示されておらず、いまいち納得できません。

引用元 https://pvision.jp/tech/2021/05/memo-mocha-chai-testing-basics/

聞きたい事

itは何かの略語でしょうか?
itが何を意味する単語か知りたいです。

また、なぜtestだけではダメでitを作る必要があったのでしょうか。
私のようにテスト初見の人間からすると「testはテストしそうだけど、itってなんだ?」という気持ちしかないです。
testitの2つ存在する背景事情があると思いますが調べても情報が出ず不明です。

describeやitはBDD向けのインタフェース。TDDだとそれぞれsuiteとtestになる。

こちらの情報は本当でしょうか?
TDDで「describeとit」、BDDで「suiteとtest」、TDD/BDDに限らず「describeとtest」または「suiteとit」を利用してはいけない理由は何でしょうか?

補足情報(FW/ツールのバージョンなど)

私が現在利用してるのはVitestですが、Vitestに限らずテストに関係する一般的な質問だと思うので別のライブラリの話でも歓迎です。

※この質問のタグに「テスト駆動開発」が付いていますが、私は「テスト駆動開発」していません。
質問を投稿するには最低1つタグを選択する必要があり、現時点でVitestが存在しないので「テスト駆動開発」が一番近いと思い選択しました。(teratail 運営に Vitest タグ追加要望送信済みです)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

itが何を意味する単語か知りたいです。

英語の代名詞です(Weblio)。

テストの内容も英語で書けば、it('fails when parameter is null')のように自然になるのですが、日本語だとどうしても浮いてしまいます。

投稿2024/03/15 11:25

編集2024/03/15 11:28
maisumakun

総合スコア145932

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hupyaginu

2024/09/30 04:20 編集

ありがとうございます、略語かと思いましたがそのままのitだったのですね! TDDで「describeとit」、BDDで「suiteとtest」などの関係についてもご存知であれば教えてください! 「describeとtest」または「suiteとit」を利用してはいけない理由は何でしょうか?
guest

0

(私は maisumakun さんのように、すべてを完璧に理解した上で、圧縮された(突っ込みどころのない(できない))回答などできないので、下記冗長な回答にならざるを得ず、その点突っ込みどころや厳密に見れば間違いがある回答かもしれませんが、ご容赦ください)

なぜtestだけではダメでitを作る必要があったのでしょうか。
私のようにテスト初見の人間からすると「testはテストしそうだけど、itってなんだ?」という気持ちしかないです。

結論から言うと、テストコードの可読性が関係しています。
(書き方を工夫すれば、という条件付きですが)英語圏の人にとっては、it を使うと、テストコードが読みやすくなるとされたことが源流です。

この背景を理解するには、https://pvision.jp/tech/2021/05/memo-mocha-chai-testing-basics/ に書いてあるコード例では物足りません。

たとえば、下記のようなテストコードを書きます

describe('yourModule', () => { it('should do this thing', () => {}); it('should do the other thing', () => {}); });

すると、これを英語を解するプログラマが読んだら、下記のような感じで読みます。

(私は)yourModule について[テストを]記述する:
it(これ=yourModule )は、以下のように動作する:(function以下がテストコード)
it(これ=yourModule )は、以下のようにも動作する:(function以下がテストコード)
」(直訳すればitは「それ」だが、日本語に訳する上で読みやすい「これ」という代名詞をあえて使っています)

そして、テスト結果も下記のように、読みやすい英語で返ってくる、ということらしいです。

結果 yourModule > should do the thing should should do the other thing

it の代わりに test を使う場合、英語圏のプログラマは、自然な文章に近くなるように、第一引数の文章を it を使う場合とは異なる文章に変えるようです。

describe('my_beverage', () => { test('is delicious', () => {}); test('is not sour, () => {}); });
結果 my beverage > is delicious is not sour

仮に、it と test が全く同じであり、かつテストの説明(itの第一引数)を日本語で書く場合、極論を言えば「it」というインタフェース名は「タイプする文字数を減らす」くらいのメリットしかないと考えられます。

投稿2024/03/16 10:29

編集2024/03/16 10:34
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問