ソフトウェアエンジニアリング
はじめに InfoQ に掲載された記事がとても面白かったので備忘も兼ねて感想を書こうと思う。 www.infoq.com 以下に記事に記載された著者の主張と感想を記載する。 一人の人間がすべての決定を下したり、影響を与えたりしてはならない。代わりに、適切なチーム…
おことわり 最初に断っておきますが、私はスクラム開発反対の立場をとっているわけではないです。また、スクラムマスターでもないのでスクラム開発について誤った見解を持っている可能性も大いにあります。 また、これから記載するスクラム開発のペインはあ…
背景 筆者はソフトウェア開発チームの一員として日々開発を行なっているが、ここ最近2週間毎に区切っている開発期間に実施すべき開発タスクが未達になってしまう状態が続いている。 いわゆるスプリントゴール未達成ってやつ。 この原因を探り、改善すべく施…
テストダブル利用のテクニック モッキングフレームワーク モッキングフレームワーク:テストダブルをテスト内で容易に作成できるようにするフレームワーク。 C++では「google mock」、pythonでは「unittest.mock」などがある。 モッキングフレームワークはオ…
テストダブルの原則 ユニットテストはコードが複雑になるに連れて、書くのが難しくなってくる。 また、本番のコードがいくつもの外部APIを呼び出していたり、その結果をDBに保存していたりする場合、それらの挙動を本番コードのみのユニットテストだけで再現…
明確なテストを書く まず、初めに申し上げておきたいのはテストの失敗は良いことである。 なぜなら、失敗したテストは、エンジニアに有用なシグナルを提供し、ユニットテストが価値を提供する方法のうち主要なものだからである。 テストの失敗理由 テストの…
脆いテスト: バグのない無害かつ無関係な変更で壊れるてすと。 変化しないテストを目指す 脆いテストを防ぐため、理想的には「変化しないテスト」を目指す。 → 仕様変更以外の理由で変更しないテストのこと。 プログラム変更の要因 ここではテスト変更の要…
Googleにおけるユニットテストの定義 Googleがテストを分類する際に使用する2つの軸 テスト規模:テストにより消費されるリソース、テストが実行されている内容に焦点を当てる テスト範囲:テストが検証を意図する実装コードの量 また、Googleにおけるユニッ…
グーグルのテスト文化醸成のための取り組み 1. オリエンテーション 当初、Googleの新入社員向けのオリエンテーションにはテストについての講義は存在しなかった。が、2005年ころからオリエンテーションの講義に自動テストについての講義が組まれるようになっ…
コードカバレッジ テストにおいて、 コードカバレッジ:ある機能のコードのどの行がどのテストにより実行されるか計測する指標。 この指標はあくまでもテストによって実装コードがどの程度実行されているかを確認しているにすぎず、「コードの有用性」を表す…
なぜ自動テストをするのか バグは補足されるのが開発サイクルの後ろになるほど修正のコストが高くつく。開発サイクルの早い段階で高速に自動化テストを回し、バグを捕捉したい。 また、「バグをほそくすること」はテストの同期の一部に過ぎない。ソフトウェ…