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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

560閲覧

JavaScriptライブラリ開発時の結合テストの方法

kazuki__

総合スコア28

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/05/20 02:20

編集2020/05/20 02:22

JavaScriptライブラリ開発をしています。
結合テストで、作成したライブラリが複数のブラウザできちんと動作するかを確認したいです。

この場合どのように結合テストを行うのが適当なのでしょうか。

私が想定しているのは、以下のような方法です。

  1. ライブラリ開発を行っているリポジトリとは別のリポジトリにテスト用のプロジェクトを立てる。
  2. そこで開発中のライブラリを含む(ライブラリはGitHub Packegesなどでプライベートで配信しておく)サンプルアプリを作成し、ベーシック認証付きでテストサーバーにデプロイする。
  3. TestCafeなどのツールを使って、テストコードを書く。(テストコードの管理はサンプルアプリの方のリポジトリで行う。)
  4. 複数のブラウザでテストを実行する。

普段からJavaScriptライブラリの開発を行ってらっしゃる方々はどのように結合テストを行っていますでしょうか?結合テストコードの管理方法や使っているツール、Tipsなどございましたらご教授いただけますと幸いです。

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

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

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

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

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

yamap55

2020/05/20 13:36

回答付いてないので書いてしまいます。 ライブラリを開発しているのであれば、ライブラリは結合する必要はないのでは?サンプルアプリとの結合をしてどういう意味があるのでしょうか? 具体的にはどのようなテスト、何を確認するためのテストを行いたいのでしょうか?
kazuki__

2020/05/20 15:26

具体的にはライブラリの機能を全て網羅するようなブラックボックステストを複数のブラウザで行って、仕様通りに動作するかを確認したいです。 サンプルアプリは通常のサービスとして機能するようなものではなく、ただ単に機能確認をするだけの簡素なものを想定しています。 > ライブラリを開発しているのであれば、ライブラリは結合する必要はないのでは? 結合テストを行わない場合、どのようにして品質を担保しているのでしょうか?今回ライブラリ作成は初めてなもので、どのようにテストを行うべきかがわかっていません。一般的にはどのようにテストを行っているのかご教授いただけないでしょうか。 よろしくお願いいたします。
kazuki__

2020/05/20 15:41

すみません。結合テストという名称が正しいのかよくわかりません。 クロスブラウザでのブラックボックステストというのが正しいかもしれません。
guest

回答1

0

ベストアンサー

yamap_55 さん(質問への追記・修正の依頼欄のコメント)に同感です。
方法論(How)よりも根拠(Why)のほうが大事に思います。

テスト

単体テストしたものを組み合わせると新たなユニットになるので、
依存するライブラリの単体テストの内容が保証されるなら、以下をチェックすることで品質を担保できます。

  1. 拡張した機能が正しく稼働するか
  2. 1.に伴い発生せざるを得ないエラーがあるなら、正常にthrow されるか

(大事なのはコチラです。エラー発生は仕様ですが、そうではない不具合はバグです)

被依存ライブラリ(モジュール)がAPIを変えないなら、それらに依存する限りにおいて、
労力を抑えられるのがテスト駆動開発だと思います。


本題である方法論については 2010年ごろから数多くあるため、正直、回答しづらいですね。
JavaScript ユニットテスト」のようなワードで検索して周囲が使っていそうなモダンなものを試してみるというのもあります(console をラップして自前でレポートを作るような猛者もいます)。

クロスブラウザ実装といえば、かつてのjQuery が抜きん出た存在でしたので、2009年の記事を見つけてきました
jQueryのためのテストツール QUnit でテスト駆動開発入門を写経する

投稿2020/05/31 04:59

AkitoshiManabe

総合スコア5432

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

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

kazuki__

2020/06/01 02:54

回答ありがとうございます! 確かにテストにおいては、方法論よりも根拠が大事ですよね。改めて気づかせていただきありがとうございます。 根拠の方が大事というところに立ち返るとテストのためだけにサンプルアプリと結合してテストするというのはちょっと筋が悪いような気がしています。サンプルアプリ実装の分冗長ですしね。 ブラウザに依存する処理を実装しているので、理想としてはTestCafeみたいに単体テストを複数ブラウザ(リモートでも)で実行して動作確認できるといいのかなと思っています。 Jest with Pupeteerみたいな組み合わせでできるんですかね。 リンクありがとうございます。参考にさせていただきます!
AkitoshiManabe

2020/06/01 04:40 編集

ブラウザ依存が IE を含むのであればブラウザでの確認が確実かもしれませんね。 あまりに新しいテストフレームワークだと、どこまで、IEに対応しているかが怪しく思います。 Jest with Pupeteer も、Pupeteerの基盤となるブラウザが対象でIE部分は検査できるのか…。 「今なお、困らせてくれるIE」といった印象です。 Wikipediaの関連項目からユニットテスト・フレームワークのページに飛べます(25種類紹介されていました)。リンクの案内しかできませんが色々と調査してみてください。
kazuki__

2020/06/02 05:43

ありがとうございます! しっかりライブラリの品質を担保できるテスト方法調査してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問