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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

ソフトウェアテスト

ソフトウェアテストは、プログラムを実行し、要求通りに正しく動作が行えているかどうか確認する作業です。プログラム中のバグをできる限り多く発見することを目標として行われます。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

Q&A

解決済

1回答

788閲覧

他人が書いたコードにユニットテストを追加するときのアプローチ

hello_space

総合スコア24

Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

ソフトウェアテスト

ソフトウェアテストは、プログラムを実行し、要求通りに正しく動作が行えているかどうか確認する作業です。プログラム中のバグをできる限り多く発見することを目標として行われます。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

0グッド

2クリップ

投稿2021/11/25 07:11

今までテストがなかったコードにJestでユニットテストを追加したいです。ただ、メソッドの中で何をやっているのかがわからなかったり外部のライブラリを使っているのかそれとも作成した変数なのかわからなかったりして何から手をつけていけばわかりません。私の今のアプローチとしてはreturnしている箇所に注目し、その値が何であるかを確かめてからテストコードをそれに合わせて書いていますがこのアプローチの仕方で合っているのかがわかりません。1足す1は2であることを期待するみたいな簡単なコードであればテストケースも簡単ですが、実際のコードは複雑でどうしていいかわかりません。ちなみにリファクタリングはテストコードを書いてからしようと思っているのですぐに複雑なコードをリファクタリングしてからテストを書くというのはバグを含めそうなのでやっていません。以上のような場合、他人が書いたコードにテストを追加する際のアプローチ方法を教えていただけますと幸いです。

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

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

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

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

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

Zuishin

2021/11/25 07:22

メソッドの中で何をやってるかをもとに「通るテスト」を書くのではなく、そのメソッドに求められる仕様をもとに「仕様を満たしていることを保証するためのテスト」を書きます。 何をするメソッドなのか、ドキュメントを読んでください。
hentaiman

2021/11/25 07:30 編集

> ちなみにリファクタリングはテストコードを書いてからしようと思っているのですぐに複雑なコードをリファクタリングしてからテストを書くというのはバグを含めそうなのでやっていません。 元々の作りがリファクタリングしないとユニットテストと言えるテストが出来ないような作りをしているのではないですか?
gentaro

2021/11/25 07:51

「その仕事振った上司に聞け」ってのが第一で、あとはすでに指摘されているとおり。 ドキュメントがないならまず目の前のコード読んで仕様を起こすところからやる必要があるけど、それができないなら上司に「無理です」って言おう。
hello_space

2021/11/25 09:42

なるほど、やはりドキュメント等ないと厳しいのですね。それがあるかどうか聞いてみて無ければGitHubやタスク管理ツールなどをみてみます。リファクタリングしなければならない箇所もありますが、全てがスパゲッティではないのでできるところから手をつけていきたいと思います。 確かにアプローチの仕方が違っていたのでそこがクリアになってよかったです。 皆さんのコメントが役に立ちましたので決めづらいのですが、ここはいちばん早くに回答いただいたZuishinさんにベストアンサーをつけさせていただきたいのでよろしければご回答いただけますと幸いです。
Zuishin

2021/11/25 09:48

質問の意図がよくわからなかったので回答していません。 解決したのであれば、今後この質問を見る他の人の参考になるような回答を自分でしてそれをベストアンサーに選んでください。
hello_space

2021/11/25 10:01

みなさん、ありがとうございました!
guest

回答1

0

自己解決

ユニットテストを書く際は

  • ドキュメントをしっかり読み何をテストすべきなのかを把握する。
  • リファクタリングが必要な際は先にリファクタリングをし、テストがしやすいコードにする。
  • ドキュメントがないのであればコードをみて作成する。 それができなければ厳しいのでそのことを報告する(こういった状況を作らない)

投稿2021/11/25 10:00

hello_space

総合スコア24

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

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

dodox86

2021/11/25 10:43

> リファクタリングが必要な際は先にリファクタリングをし、テストがしやすいコードにする。 言葉が足りないだけなのかもしれませんが、テストは、リファクタリングする前と後の結果が同じことを確認、担保する為に書くので、リファクタリングする前にテストを書ける項目があるのであれば、先にテストを書かなければいけないのではないでしょうか。リファクタリングすることによって追加できるテストが増えるのであれば、それは後で良いのでしょうけど。
hello_space

2021/11/25 12:48

そうですね!質問ではリファクタリングより先にテストコードを書きたいと言っていたのですが、回答ではそこが言葉足らずになってしまいました。ご指摘ありがとうございます????‍♂️
hentaiman

2021/11/25 13:58

自分のコメントのせいですね > 元々の作りがリファクタリングしないとユニットテストと言えるテストが出来ないような作りをしているのではないですか? 密結合なクソコードではユニットテスト出来ないでしょって意味です。結合テスト並のものをユニットテストと言ってるなら知りませんけど。 テストを書くためにリファクタリングしたらどうかという意味ではありません。
dodox86

2021/11/25 14:34

なるほど、私が読み誤っていた様です。良く分かりました。レスをいただき、どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問