テスト本リスト

の方に付随していた関連書籍リストをもとに,古い書籍をバッサリ切り捨てて加筆修正.アレを作った後,独立した項目にしてないことを何度後悔したことか.

今現在,VWの一件で,別の意味でテストの話が注目を集めてるが,話のネタくらいにはなるかも.

読み物

パーフェクトソフトウエア

パーフェクトソフトウエア

パーフェクトソフトウエア
Perfect Software And Other Illusions About Testing (English Edition)
技術者よりというよりは,もうちょい基本的な読み物.初級技術者またはマネージャーむけか.

そう,私は長年,技術の変遷を見てきたが,それは少しずつ忍び寄ってきた感じだった.数年前にケープカナベラルのロケット打ち上げ中止を伝えるニュースを聞くまで,変化に気づきもしなかった.このニュースのまとめに入った時,1人のアナウンサーが「NASAによると,原因はコンピュータソフトウエアのエラーと言うことです」とコメントした.

もう一人のアナウンサーが,「コンピュータのように単純でありふれたものがこんな間違いを起こすのは変ではありませんか?」と言った.

「そうですね」と最初のアナウンサーが応じた.「ソフトウエアのテストはしてないのでしょうか」

****

いや,ソフトウエアのテストはしているだろう.断言してもいい.ところが,このアナウンサーは,どうやらテストをすれば完璧な製品ができるはずと考えているのだ.

この会話と,キャスターの非現実的な期待について考えずにはいられなかった.最初はただ肩をすくめて「これがソフトウエアテストに対する一般大衆の無知ってものだ」とひとりごとを言ってみたが,もはやそれですますことはできなかった.次第にこのことに対する意識が高まってきた.クライアントのソフトウエアメーカーのマネージャーでさえ,同じような無知を示すことに気づき始めた.特にマネージャーに多いのだ.ソフトウエアテストのことになると,かれらは正気を失う.

テストの一般的な性質やテストに対する心構えなどを,おさらいするのにいいだろう.*1

テストから見えてくるグーグルのソフトウェア開発

テストから見えてくるグーグルのソフトウェア開発

テストから見えてくる グーグルのソフトウェア開発
How Google Tests Software (English Edition)
技術よりは組織体制なんかの話で,ビジネス書的な性質が強い.日本でテストが根付かないのは,技術よりもちゃぶ台返し大好きなSIビジネスや経営者の無理解によるものが非常に大きい.なんでもかんでも現場に丸投げするんじゃない.

ビューティフルテスティング ―ソフトウェアテストの美しい実践 (THEORY/IN/PRACTICE)

ビューティフルテスティング ―ソフトウェアテストの美しい実践 (THEORY/IN/PRACTICE)

実践的ケーススタディ的な読み物で,とても興味深い.むしろタイトルで損をしていると思う.

これは普通はユニットテストの基本が分かっている中級以上の人向けだけど,興味があるなら初心者でも挑戦すれば良い刺激になると思う.

実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects' Archiveソフトウェア開発の実践)

実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects' Archiveソフトウェア開発の実践)

どちらかというとマネージャー向けかな?

初めての自動テスト ―Webシステムのための自動テスト基礎

初めての自動テスト ―Webシステムのための自動テスト基礎

https://www.oreilly.co.jp/books/9784873118161/
追記.
まだ内容未確認だが,有力な候補の一つになりそう.

xUnit,ユニットテスト

Java/JUnit

以下の二冊が,現在日本語で読める技術書の中では,最もお勧めの入門書だと思う.Java/JUnit本ではあるが,他のxUnitでも参考になる部分は多いだろう.

実践 JUnit ―達人プログラマーのユニットテスト技法

実践 JUnit ―達人プログラマーのユニットテスト技法

Pragmatic Unit Testing in Java 8 with JUnit (English Edition)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

前者の方が原理原則含む理論より.後者の方がツールよりだと思う.


JUnit in Action

JUnit in Action

Effective Unit Testing: A guide for Java developers

Effective Unit Testing: A guide for Java developers

Testing with JUnit (English Edition)

Testing with JUnit (English Edition)

Mastering Unit Testing Using Mockito and JUnit (English Edition)

Mastering Unit Testing Using Mockito and JUnit (English Edition)

Test-Driven Java Development (English Edition)

Test-Driven Java Development (English Edition)

http://www.amazon.co.jp/dp/B00YSIM3SC/bloofjav-22/

Python

Learning Python Testing (English Edition)

Learning Python Testing (English Edition)

Python Web Penetration Testing Cookbook (English Edition)

Python Web Penetration Testing Cookbook (English Edition)

Test-Driven Development with Python: Obey the Testing Goat: Using Django, Selenium, and JavaScript

Test-Driven Development with Python: Obey the Testing Goat: Using Django, Selenium, and JavaScript

Test-Driven Python Development (English Edition)

Test-Driven Python Development (English Edition)

Ruby

The RSpec Book (Professional Ruby Series)

The RSpec Book (Professional Ruby Series)

The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends (The Facets of Ruby Series)

.Net/C#

The Art of Unit Testing: with examples in C#

The Art of Unit Testing: with examples in C#

http://www.amazon.co.jp/dp/B004X75OGG/bloofjav-22/

iOS

Test-Driven iOS Development (Developer's Library) (English Edition)

Test-Driven iOS Development (Developer's Library) (English Edition)

Test iOS Apps with UI Automation: Bug Hunting Made Easy

Test iOS Apps with UI Automation: Bug Hunting Made Easy

その他の言語,環境

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler)) (English Edition)

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler)) (English Edition)

http://xunitpatterns.com/

テスト駆動JavaScript

テスト駆動JavaScript

Serverspec

Serverspec

Performance Testing with JMeter - Second Edition (English Edition)

Performance Testing with JMeter - Second Edition (English Edition)

JMeter Cookbook (English Edition)

JMeter Cookbook (English Edition)

アート・オブ・アプリケーション パフォーマンステスト (Theory in practice)

アート・オブ・アプリケーション パフォーマンステスト (Theory in practice)

Selenium

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

実践 Selenium WebDriver

実践 Selenium WebDriver

Selenium WebDriver Practical Guide - Automated Testing for Web Applications (English Edition)

Seleniumデザインパターン & ベストプラクティス

Seleniumデザインパターン & ベストプラクティス

Selenium Design Patterns and Best Practices (English Edition)

Selenium Testing Tools Cookbook (English Edition)

Selenium Testing Tools Cookbook (English Edition)

Selenium: Front End Testing and Continuous Integration

Selenium: Front End Testing and Continuous Integration

Selenium Webdriver Recipes in Ruby: The Problem Solving Guide to Selenium Webdriver in Ruby (Test Recipes)

Selenium Webdriver Recipes in Ruby: The Problem Solving Guide to Selenium Webdriver in Ruby (Test Recipes)

実践 Appium

実践 Appium

Appium Essentials (English Edition)

Appium Essentials (English Edition)

Seleniumベースのモバイル向けテストツール.

Appium Recipes

Appium Recipes

Appium in Java (English Edition)

Appium in Java (English Edition)

ペネトレーションテスト/Metasploit

毛色は違うけど,テストはテストなので一応.

実践 Metasploit ―ペネトレーションテストによる脆弱性評価

実践 Metasploit ―ペネトレーションテストによる脆弱性評価

Metasploit: The Penetration Tester's Guide

Mastering Metasploit (English Edition)

Mastering Metasploit (English Edition)

Metasploit Penetration Testing Cookbook, Second Edition (English Edition)

Metasploit Penetration Testing Cookbook, Second Edition (English Edition)

Learning Metasploit Exploitation and Development (English Edition)

Learning Metasploit Exploitation and Development (English Edition)

Mastering Kali Linux for Advanced Penetration Testing (English Edition)

Mastering Kali Linux for Advanced Penetration Testing (English Edition)

Kali Linux Network Scanning Cookbook (English Edition)

Kali Linux Network Scanning Cookbook (English Edition)

Penetration Testing: A Hands-On Introduction to Hacking (English Edition)

Penetration Testing: A Hands-On Introduction to Hacking (English Edition)

Building Virtual Pentesting Labs for Advanced Penetration Testing (English Edition)

Building Virtual Pentesting Labs for Advanced Penetration Testing (English Edition)

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

Black Hat Python: Python Programming for Hackers and Pentesters (English Edition) の和訳.

その他

テスト駆動開発

テスト駆動開発

http://t-wada.hatenablog.jp/entry/tddbook

実践テスト駆動開発 (Object Oriented SELECTION)

実践テスト駆動開発 (Object Oriented SELECTION)

ソフトウェアテスト293の鉄則

ソフトウェアテスト293の鉄則

システムテスト自動化 標準ガイド CodeZine BOOKS

システムテスト自動化 標準ガイド CodeZine BOOKS

How We Test Software at Microsoft (Developer Best Practices) (English Edition)

How We Test Software at Microsoft (Developer Best Practices) (English Edition)

余談

「テスト不能な〜」の方はPHPでない人も必見.テストできないコードというバッドプラクティスについて,具体的な例を交えて解説している貴重な資料.初級プログラマの研修資料に交えてもいいくらい.

New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup (Pragmatic Programmers)

New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup (Pragmatic Programmers)

プログラマのためのサバイバルマニュアル

「100%未満のカバレッジ(網羅率)はテスト漏れのケースがあることを意味している.未熟なプログラマーはその逆が真であると勘違いする.もしカバレッジが100%になれば,テストは完璧なのだと.しかしカバレッジ100%は全てのケースを網羅していることは全く意味していない.
(中略)
100%カバレッジで自己満足に陥るべからず.それはコード品質や優れたテストコードを全く意味しない.他のアプリを書くのと同様に,良いテストを書くには熟考と,勤勉と,優れた判断力が必要なのだ.」

*3:階乗の検証なら,幾つかのサンプルに対しての戻り値を,「正解」と比較すればまあ問題ないだろう.
しかしたとえば「疑似乱数」の検証はどうするか?それを考えて貰えば,この問題の難しさが理解できるだろう.「疑似乱数が本当にランダムであること」を,あなたはどうやって検証しますか?

http://d.hatena.ne.jp/JavaBlack/20120505/p1

余談2

http://d.hatena.ne.jp/JavaBlack/20160113/p1

*1:「パーフェクトソフトウエア」なんて変なタイトルだと思ってたら「パーフェクトソフトウエア テストにまつわる幻想」/ "Perfect Software And Other Illusions About Testing"なんだな.「完全なソフトウエアというテストに関する幻想」の方がいいかもしれない.