開発現場の仕事のやり方や単体・結合テストの棲み分けついてご相談です。
◎前提
この春から客先常駐のプログラマーとして開発・テストを行っています。
これまでは7年近くアプリの運用保守をしていました。
開発やテストの経験もありますが、運用メインのため開発の工程や役割分担などがあまり明確でなく、仕様決めや開発、単体・結合テストまで担当者一人が一貫して行う現場でした。
この春からの現場は本格的な開発現場のため、役割分担や工程も決まっており、自分が馴れていかないといけない部分がある反面、首をかしげる場面もあります。
経験した現場の数が少ないため、ご意見をお聞かせ頂きたいです。
◎今の現場について
メンバーは同じ会社の派遣社員数名と客先(会社A)のリーダー1名です。
会社Aの先にエンドユーザーである会社Bがあり、そこで使われるシステムを開発しています。
派遣社員が開発・テストを行い、リーダーがレビューや進捗管理を行います。
工程は以下の通りです。
①設計
②設計書レビュー
③コーディング
④単体テスト実施
⑤結合テスト仕様書作成
⑥結合テスト仕様書レビュー
⑦結合テスト実施
単体テストは仕様書を作ってエビデンスを取る訳ではなく、軽く動かすくらいの位置づけで、結合テストがメインです。
コーディングのレビュー、テスト結果のレビューはありません。
◎私の意見
上記からわかるように、「こんな仕様で開発、テストをします」というのは明文化されてレビューもありますが、成果物を見てその通りにできているかを確認する場はありません。
また、結合テストは別の方が作った仕様書に沿って行いますが、過去の仕様書の使い回しで、今回の改修のテスト項目は2~3行で簡単に書いてあるだけです。
そのため、どんなパターンがあり、どんなテストをすべきかは実施者である私が考えています。
仕様書は工程上「作成済」になっているのですが、使い物にならず私が改めて検討し直している状況です。
かつ仕様書のレビューも終わっていて、しかもテストエビデンスは誰も見ないので、私が改めて考えて行ったテストが正しいのかは誰も確認しません。
会社Aのリーダーだけでなく派遣社員間での二重チェックもないのです。
しかも、私が長くその現場にいるならまだしも、配属1ヶ月程度でシステムのこともよくわからない状態で、です。
会社Aから会社B(エンドユーザー)に対して、あるいは派遣会社から会社A(直接の顧客)に対して、
組織として品質を担保するという発想が見受けられず、担当者個人任せになっています。
◎質問事項
①上記のように成果物の確認がないのはよくあることなのでしょうか?
以前の現場では、常駐先のリーダーがコードは見ないにしてもテスト結果はレビューしましたし、同じ会社のメンバー間でも二重チェックしていました。
新しい人が来たら尚更です。
それが当たり前で、組織として成果物を確認せずに顧客に出すことはあり得ませんでした。
勿論現場によりけりなので、今の現場に合わせるよう考えています。
ただ、私自身の気の持ちようはそれでいいとして、会社Aの社員や同じ派遣会社の社員は配属間もない人間に任せきりにしてなぜ不安を感じないのか?それで管理者・組織としての仕事をしたことになるのか?と凄く不思議です。
②結合のみ、または結合で単体レベルの項目もテストすることはよくあるのでしょうか?
例えば「Aという場合に合致すればXを表示、合致しなければYを表示」という仕様を追加したとします。
私の理解ではこれをテストするのは単体で、結合では省略してその他の機能との関係をテストすれば良いと思っていますが、これも結合で確認しています。
一応単体で開発者もこのレベルのテストはしているはずですが、前述の通り単体は軽い動作確認で、エビデンスがないのでどの程度網羅できているか後から確認することもできません。
そのため、単体的な項目も含めて結合で確認しており、二度手間だと感じています。
しかも、前述の「Aという場合に...」のような単体レベルのテストで不具合がポロポロ出てくるのです。
また、余談ですが、システムを動かしていると、
・エラーで落ちる(処理されたエラーではなく例外で強制終了)
・帳票に項目はあるが、そこに表示される条件のデータを画面で入力しようとするとエラーチェックで弾かれて入力できない
など、きちんとテストしていれば見つかるような不具合に出くわします。
単体もザル、結合の仕様書もそのレビューもザル、エビデンスは誰も見ない→不具合が見つからない、となっている気がしています。
感想や体験談などでも結構です。
お読み頂き、ありがとうございます。