1: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:46:09.576 ID:/UHYqs670
4月からプログラマになった新人なんだけど
開発や不具合修正をした後、単体テスト、結合テストの仕様書書くところまでが仕事なんだけど、テストケースやテスト手法を考えるのがめんどすぎる
お前らがどうやってテストしてるのか教えて欲しい
2: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:46:45.571 ID:1Ub4GVLB0
市場に出す
3: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:46:49.985 ID:/cChbYmKa
コツコツ地道に
4: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:46:54.736 ID:E3DYNFla0
学校で習わなかった?
5: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:47:00.697 ID:9QI7zvgca
殴ってみてこわれなければ合格
6: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:47:31.912 ID:QpjYHbj90
コマンドプロンプトで実行!
7: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:47:40.171 ID:tp3wpM3c0
ホワイトボックス
ブラックボックス
8: 以下、無断転載禁止でVIPがお送りします 2018/06/24(日) 13:48:16.878 ID:DY1f07hI0
はい学生乙
9: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:48:40.005 ID:0idT+QML0
バカばっかで草
10: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:48:40.186 ID:27ffQv/Za
とりあえずリリースして苦情きたら対応
11: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:48:56.320 ID:v94Q+UT/0
それっぽく実行させる(あまり意味がないとしりつつ)
12: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:49:16.963 ID:tZmQBNjN0
単体はともかく結合のケースなんて新入社員が書くもんじゃないよ
15: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:50:26.423 ID:/UHYqs670
とりあえずリリースしないでください
>>12
人数すくないしそんなこと言ってられない
13: 以下、無断転載禁止でVIPがお送りします 2018/06/24(日) 13:49:27.550 ID:fxMnKKfSd
正常ケースより異常ケース沢山やっとけ
14: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:49:33.509 ID:a6asEVyDM
入力と出力のパターンの中から必要そうなのを抜き出す
16: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:51:15.877 ID:/UHYqs670
なんかうまく自動化してる事例とかが聞きたかったんだが
18: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:53:00.408 ID:A7OivSR4d
過去事例を寄せ集めて繋ぎ合わせてレビューしてこれ足りないって言われたら追加する
19: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:53:30.655 ID:EaCbGEIS0
テストは設計に対してちゃんと実装がされてるかどうかの確認だから、その確認すればええやで
例えばテキストボックスにバリデーションついてるなら、バリデーションエラーにならない文字列の入力、バリデーションエラーになる文字列それぞれ単体の入力、同じく複合の入力……みたいな感じからやればいいんじゃね
20: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:57:26.727 ID:/UHYqs670
>>19
設計からテストケースはある程度自動的に決まるものじゃん
なんかその辺うまく自動化できないのかな
23: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:01:44.685 ID:EaCbGEIS0
>>20
それはそうだけど、たぶん今は自動的にできない
単体テスト……っていうか、ユニットテストコード書いて自分の作ったクラスとかメソッドを仕様に基づいてテストして、それを毎日テストランナー通すなりCIに突っ込むなりすればある程度自動化できるけど、それは恐らく望んでる回答ではないでしょ?
26: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:05:31.638 ID:/UHYqs670
>>23
いや、そういう事例を聞きたい
それでどの程度テスト工程が楽になるのかも
27: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:12:38.257 ID:EaCbGEIS0
>>26
まず、UT……ユニットテストコード書くことは企業風土とか文化みたいなところあるから、それが会社の体制上、行いがたい可能性があることは頭に置いといてな
規模とやり方にも因るけど、少なくとも単体レベルだとバグは少なくなってたと感じてる
また、UTで保護されてるから、あとから修正加わったり、あるいはリファクタリングするときに実装をいちいち手で確認しなくて良くなる
ただ、結合とかシステムテストまで行くと機能レベルではなくなるので、この方法は通用せず、バグが出ることはある
それはもはや、最初の設計レベルでのミスが元になったりしてた記憶あるけど
29: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:16:11.601 ID:EaCbGEIS0
>>26
連レスすまん
テスト行程は、楽にはなってないかもしれない
というのも、うちの場合は実装担当SEは信用されてなくて、QA担当のエンジニアがいるから
ただ、単テレベルの不具合は少なかったね
結合レベルはそんときのプロジェクトメンバがコードレビューとスモークテストでバグをピックしてくれてたから、同じく少なかった
31: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:24:56.701 ID:/UHYqs670
>>26 >>28
楽にはならないのか
実はそういう仕組みを取り入れてはいるんだが、時間がないという理由でユニットテストを誰も書いていないんだ
そもそもユニットテストを書きにくい設計になっているという問題もあるのだが
32: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:26:46.797 ID:D50/l/f80
>>31
何それ怖い…
34: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:29:50.424 ID:EaCbGEIS0
>>31
時間がないからUT書かないのはうちもそういう感じだな
私の時は私が無理矢理強行した感じだった
UT書きづらいのは設計というかプログラム設計じゃないかな
特定のクラスが他のクラスに依存しまくってるんだ
例えば悪いシングルトンをメソッド内で参照しまくってるとか
そんなんだとUT書きづらいのは当たり前だし、使用変更や修正を行うと他の機能が崩れたりする
クラス間の結合度はなるべく少なく、所謂疎結合にしなくてはならない
35: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:36:54.884 ID:/UHYqs670
>>34
経験が浅くてあまり言ってることが理解できてないけど
1メソッドにめちゃくちゃ色々詰め込まれててテストコードが書きづらい
プログラム設計からやり直す時間なんてないし困ったな
36: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:40:46.992 ID:EaCbGEIS0
>>35
ごめんなさい、でも、わからない単語は調べた方がいいぞ
訊いてくれたら私なりの解釈でよければ答えるし
1メソッドにぐちゃぐちゃ書いてるとか典型的なクソコードだからUTはぜつぼうてきだと思う
でも、それは基本設計や詳細設計の問題ではなく、実装者個人の問題
プログラミングを設計する力が劣っているのに実装してしまうとそうなる
38: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:51:05.662 ID:/UHYqs670
>>36
はい、調べます。
糞コードだと俺も思うけど、実装に掛けてる時間がなかったんだと思う
ただその尻ぬぐいをさせられている気分だなぁ
21: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:59:28.805 ID:1Ub4GVLB0
自動化できてるなら先輩がやってる筈だろ
22: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:59:31.117 ID:aN6//JAW0
その考えてる時間があれば手を動かしたほうが早くね?
24: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:02:08.554 ID:/UHYqs670
>>22
プログラマじゃない人は黙っててくださいね
28: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:14:15.044 ID:VqPjKXer0
問題が出ないと予想できるデータだけを入れて問題なしって言う簡単な作業
問題が出たらそのテストはなかったことにする
33: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:28:32.187 ID:NqTZSlP30
単体テストが書きにくいってのが意味わかんねえわ
37: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:42:10.442 ID:YqyGFpOm0
単体テストなんてプログラマが理解した通りに動いてるかまでしか確認できないんだからへーきへーき
39: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:53:13.830 ID:/UHYqs670
開発やってるとか言ったけど実際に俺がやってるのは不具合修正だけです
見栄張りました
40: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 14:59:24.182 ID:EaCbGEIS0
>>39
新人はそこら辺からだと思う
あるいは既存サービスやリリースした案件の保守とか
尻拭いのように感じるかもしれないけど、そういうコードを反面教師にして、もし、新規実装やることになったら「どうすれば修正しやすいか」「どうすれば他のクラスに依存しないか」あたりを考えながら実装していくとええで
41: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 15:00:15.154 ID:EaCbGEIS0
あと、「実装する時間がなかったから1メソッドに詰め込みました」は甘えだからな
42: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 15:07:35.319 ID:D50/l/f80
>>41
甘えって言われるとママのおっぱいおいちいのぉ♡って言いたくなるの俺だけ?
48: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 15:35:11.404 ID:/UHYqs670
>>41
遅レスだけど、1メソッドが長いやつは循環的複雑度が100を超えていたと思う
正直見たくもないです
17: 以下、5ちゃんねるからVIPがお送りします 2018/06/24(日) 13:51:37.182 ID:VMyXxbfvM
余所に委託してる
http://hebi.5ch.net/test/read.cgi/news4vip/1529815569/
最近は、Jenkinsとか使うのが一般的なんですかねぇ
開発系はよくわからんとです
この記事へのコメントはありません。