現在Pythonの学習を行っています。
その中でunittestの学習を行っています。
基本的なunittestの使い方は理解できましたが、ファイルを扱うテストなどは非常に難しかったです。おそらくさらに複雑なコードをテストするとなるとかなり知識と理解が必要なのではないかと思いました。
そこで質問なのですが、実務においてこのunittestというのはよく使われるものなのでしょうか?
一学習者の観点からするとあまり使いどころが理解できませんでした。
「unittestを使って検査するなら、テスト環境で色んなパターンを試してエラーに対応した方が速いのではないか」と思ってしまったからです。(もちろん上級者にとってはunittestもそんなに難しいことではないのかもしれませんが)
実務で活躍している方などご回答いただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
そこで質問なのですが、実務においてこのunittestというのはよく使われるものなのでしょうか?
モダンな開発環境を使っている企業では使われているが、逆にレガシーな開発環境を使っている企業では、全くと言っていいほど使われておらず、企業文化によって二極化している状況だと思います。
複数人が開発に関わるプロジェクトや、保守が長期間にわたるプロジェクトなどの場合に、ユニットテストがないと品質を維持するのが困難になります。
個人開発でもユニットテストを作っておくことをおすすめしますが、負担がかかるようならそこまで無理をする必要もないと思います。
投稿2019/04/05 05:36
総合スコア6500
0
一人で小さいコードを書いているうちはあまりやらなくてもいいかもしれません。ご自身で経験されているので分かると思いますが、テストツールを使うための勉強等準備するのに手間がかかりますので。
テストの重要性は正直使ってる人しか実感しにくいものだと思います。私の経験上、テストコードを書いている暇があれば開発に当てたほうがいいとおっしゃる方もいました。
ユニットテストが大事になるのは、例えば
- ライブラリなりパッケージを開発している場面
-> 生成するものがそもそも実行形式ではないので、部品を検査する方法が必要 - 中規模以上のコード開発
-> 規模が大きくなるに従って、バグの原因を特定するのに時間がかかる。
-> ユニットテストがないとリファクタリングできない
じゃないかと思います。
また、ソースコードの品質を測る観点からカバレッジのパーセンテージを参考にすることがあります。
投稿2019/04/05 05:01
総合スコア3601
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Pythonに限らずプログラム全般のユニットテストについての質問だと理解して回答します。
そこで質問なのですが、実務においてこのunittestというのはよく使われるものなのでしょうか?
現場によるとしか言えませんが、
「よく使われると言えば使われるが、責任者がユニットテストのメリットを理解していない場合や開発者にテストケースを書く能力が無い現場では使われない。」という感じです。
(特に言語標準でユニットテスト環境が存在する様な言語だと)「unittestを書いたことがない、書けない」という人は技術レベルに疑問を持たれて門前払いをされるケースもあると思います。
「unittestを使って検査するなら、テスト環境で色んなパターンを試してエラーに対応した方が速いのではないか」
今後、どこか一つでも修正が起きるたびに毎回全パターンを同一の条件とクオリティで手動でテスト出来るならそれもアリです。
とても単純なプログラムであれば、可能な場合もあると思います。
多くの場合そうではないので、自動かつ同一条件でテストを行い、問題が発生しないことを確認してくれる仕組みはアプリケーションのクオリティアップや生産性の向上に寄与してくれます。
もちろんメリットばかりではないのですが、
ユニットテスト 意義
ユニットテスト メリット
TDD
テストファースト
あたりで調べてみるとメリットデメリットが見えてくるかと思います。
投稿2019/04/05 05:14
総合スコア18716
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/05 05:23
0
最近まで業務で使用していましたが、unittestは必要かと思います(Pythonに限らず他の言語とかでも)。
実際に製造段階から試験段階に進み、結合試験などで不具合が見つかると原因の特定に追われますが
それと同時にその不具合がどこで混入したのか、どこで検出できるはずの不具合だったかなども
問われる場合もあります。
unittestをすることでそういう不具合があとあとになって出てくるケースを防げる可能性があります。
もちろんunittestをしたからといってそのテストコードが良くないものだったら検出できない場合もあるのですが・・・(2敗)
不具合の早期発見に役立つことには違いないと思います。
学習コストはありますが、自動化ができるものもあるので使えたら便利です。
投稿2019/04/08 02:52
総合スコア48
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
unittestはよく使いますよ。unittestでテストするということは、テストしにくいコードを書かないための抑止にもなるので良いです。
持論ですが、コードの良し悪しは実行した回数に比例すると私は考えているので、ずっと淡々と成功を記録し続けるだけのテストケースにも多大な価値があり、コードカバレッジが7〜8割くらいまでは進んでunittestでテストすると良いと思います。
投稿2019/04/05 14:55
総合スコア6142
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参考情報
- APIテストは効果的、なのになぜみんなやらないの?
https://parasoft.techmatrix.jp/api-testing-is-great-so-why-isnt-everyone-doing-it
...
業界アナリストやMartin FowlerやMike Cohnなどのアジャイルの専門家は、APIテストが最善の道であることに同意しています。それなのに、何が私たちを引きとめているのでしょうか?
...
APIテストの採用を妨げる根本的な問題は、開発者とテスターの間に存在する知識のギャップです。APIテストには、テスト担当者があまり持っていない知識と能力が必要ですが、マネージャーは開発者に統合テストやAPIテストをやらせることを望みません。
...
- ユニットテストにまつわる10の勘違い
https://dev.classmethod.jp/testing/10_errors_about_unit_testing/
...
JUnitは効率よくテストを行うためのツールであり、使うことが目的としてはならない
ユニットテストを行うにはプログラミングだけではなくソフトウェアテストのスキルも必要である
ユニットテストを行いながら、テスト対象を改善していく体制が必要である
ユニットテストのコストは非常に高い
優秀な開発者がユニットテストを行わなければ品質は高くならない
ユニットテストが適用しにくい部分も存在する
カバレッジはユニットテストを行う時の指標でしかない
ユニットテストは繰り返し何度も実行することで効果がある
ユニットテストだけでは不十分なので、インテグレーションテストも必要
そのプロジェクトでユニットテストの効果が充分にあるかを検討すべき
みなさんの開発チームでは、ユニットテストしてますか?
...
投稿2019/04/06 14:03
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/05 05:55