Pythonでテスト自動化を実現しよう(pytest Jenkins Selenium 活用編)
価格: ¥0
[概要]
ソフトウェアの開発に携わっている方の中には「あれ、今まで動いていた機能が動かなくなっている」というような経験をした方もいらっしゃるのではないでしょうか。
プログラムの規模が大きくなってくると、コードがどのように連携して動いているのかが見えづらくなってきて、機能拡張やバグ修正を行う際に、既存機能が動かなくなるようなコード修正を行ってしまう可能性も出てきます。
理想としてはソースコードを修正する度に既存機能のテストを実施するのが望ましいですが、テストには時間とコストがかかるため、全ての既存機能を頻繁にテストすることは容易ではありません。そこで、テスト自動化の検討が必要になってきます。
テスト自動化の環境を構築する場合には、テストフレームワークやテスト自動化ツールを利用することが考えられますが、本書ではテストフレームワークとしてpytest、テスト自動化ツールとしてJenkinsとSelenium WebDriverを使っていろいろとテストを実施してみようと思います。
[想定する読者]
Pythonのプログラミングの経験がある方で、テストの自動化に興味がある方を想定しています。例えば次のような疑問をお持ちの方に適しているのではと思います。
・テストフレームワークって何?
・Jenkinsって何?
・コードカバレッジってどうやって取得するの?
・モックって何ができるの?
・Webテストの自動化ってどうやればいいの?
開発環境としてLinux(Ubuntu)を使用していますので、Linuxでの開発経験が無い方はLinuxがどのようなものかを事前に把握された上で本書を読み進めていかれるのが理解が早いと思います。
[本書の構成]
本書は次のような流れで話を進めています。
1.テストフレームワークの理解
テストフレームワークの基礎をみていきます。setup(前処理)やteardown(後処理)の仕組みやテストのスキップ方法、パラメータテスト、例外テストなどを簡単なテスト対象のプログラム(電卓プログラム)を使って実施していきます。
2.Jenkinsの活用
電卓プログラムのテストをJenkinsから実行します。また、Jenkinsのプラグインを使ってテスト結果をグラフ表示し、結果がすぐに理解できるようにします。
3.テストカバレッジ取得
コードカバレッジツールを使って電卓プログラムのテストカバレッジの取得を行います。
4.モックの活用
電卓プログラムを呼び出す別のテスト対象のプログラム(電卓ライブラリ)を使ってモックの仕組みをみていきます。具体的には、電卓プログラムを未実装の状態にして、電卓ライブラリのテストをモックを使って行います。(モックが電卓プログラムの擬似的な振る舞いを行います)
5.Seleniumを使ったWebテストの実施
Googleの検索サイトの操作をSelenium WebDriverを使ったプログラムで行います。また、そのプログラムをテストフレームワークから実行できるように書き換えます。
[開発環境]
Windowsマシンの中の仮想マシンでUbuntuを動かし、そのUbuntu環境でプログラムを実行しています。
<使用しているソフトウェアのバージョン>
Ubuntu16.04
Python: 2.7.12
pytest: 3.1.2
Jenkins: 2.46.3
Selenium WebDriver: 3.4.3
Firefox: 53.0.3(Ubuntuのアップデートを行う必要あり)
Mozilla GeckoDriver: 0.17.0
[目次]
はじめに
想定する読者
本書の構成
開発環境
Chapter 1 pytest基礎
1-1 pytestとは
1-2 テストの実行
1-3 assert文
1-4 xunitスタイルsetup/teardown
1-4-1 xunitスタイルsetup/teardownとは
1-4-2 setup_functionとteardown_function
1-4-3 setup_methodとteardown_method
1-4-4 setup_classとteardown_class
1-4-5 setup_moduleとteardown_module
1-5 fixtureスタイルsetup/teardown
1-5-1 fixtureスタイルsetup/teardownとは
1-5-2 setup_functionとteardown_functionの代替
1-5-3 setup_methodとteardown_methodの代替
1-5-4 setup_classとteardown_classの代替
1-5-5 setup_moduleとteardown_moduleの代替
1-5-6 fixtureのautouse設定
1-6 テストのスキップ及びテスト対象のグループ化
Chapter 2 pytest実践
2-1 テスト対象プログラム(電卓)
2-2 テストの実行
2-3 パラメータテスト
2-4 Exception(例外)テスト
2-5 Jenkinsの活用
2-5-1 cronによる自動実行
2-5-2 Jenkinsによる自動実行
2-5-3 Jenkinsからのテスト実行
2-5-4 XML形式のテスト結果ファイルの出力
2-5-5 Jenkins上でのテスト結果レポートの表示
2-6 コードカバレッジツールの活用
2-6-1 Coverage.pyとは
2-6-2 pytest-covとは
2-6-3 テストカバレッジの取得
2-7 mockライブラリの活用
2-7-1 mockライブラリとは
2-7-2 テスト対象プログラム(電卓+電卓ライブラリ)
2-7-3 mockライブラリを使ったテストの実施
2-8 Selenium WebDriverの活用
2-8-1 Seleniumとは
2-8-2 Selenium WebDriverによるブラウザの自動操作
2-8-3 Selenium WebDriverを使ったWebテストの実施
付録
付録A:VirtualBoxについて
付録B:Ubuntuについて
おわりに