品質を高める手法あれこれ
- プログラムのテスト
- 情報処理技術者試験で出てくるレベルで体系化されてる
- 境界値テスト・同値テスト
- ブラックボックステスト・ホワイトボックステスト
- xUnitを始めとするオブジェクト指向言語のテスティングフレームワーク
- RSpecを代表とする結合テストを含めたフレームワーク
- 情報処理技術者試験で出てくるレベルで体系化されてる
- プログラムのレビュー
- コーディング規約などで「読めばわかる」レベルで情報は整理されている
- 本番でのログ監視
- このあたりから体系化されてない
- ただ眺めるのも大事(結構なミスが「ただ見るだけ」でわかる)
- 集計して異常値をみるのも大事
- リリース直後と翌日・翌週・翌月のポイントが大事(データが溜まったあとのローテーションとかでみすりがち)
- バックドアでのテスト
- 本番環境でしか起き得ないこともある
- その場合はバックドアで本番環境での動作を確認する
- ゲームの世界では裏口を用意してテストしやすくする手法はある
- 「購入」などのテストは本物サイトで支払い処理をしないと全く安心できない
- 本番データの集計
- プログラムにバグがなくても想定外のインプットで想定外のアウトプットになってるかもしれない
- 本番データの集計はとても大事
- ログと似てはいるがここで言うデータは実際の納品物であるため「検品」に近い
- システムのテストは念入りにするけどそのシステムが出力した納品物の検品をしないというのはありない(が以外とそういう現場は多い)
- エンジニアが本番データを見れちゃいけないというルールがある現場もあっておろそかになりがち
- エンジニアの納品物はIPOでいうPであってOではないという認識だとそうなる
- しかし実際の提供価値はOなのでOの検品なしに品質は語れない
- さらに言えばIの品質も大事だけど、そこもログで見るべきなのが見てない現場が多い