皆さん、こんにちは。
今週もソフトウェアテスト、テスト自動化に関するニュース記事をご紹介していきたいと思います。
今回ご紹介する内容は以下となります。
■記事内リンク
バグだらけシステムどうテストする?~PMが考えるべきテスト戦略~
unittestとpytestによるPythonユニットテスト入門
バグだらけシステムどうテストする?~PMが考えるべきテスト戦略~

https://techplay.jp/event/865266
こちらは、AGEST社によるイベント「バグだらけシステムどうテストする?~PMが考えるべきテスト戦略~」が開催される内容となります。
AGEST社はデジタルハーツ社のグループ会社で、「知識ゼロから学ぶソフトウェアテスト」で有名な高橋氏、「ISO/IEC/IEEE29119 ソフトウェアテスト規格の教科書」の著者の髙木氏が所属されています。
今回のイベントでは、PMといった管理者側の立場題材にした内容となっています。
イベントの概要は以下となります。
◇イベント概要
イベントの概要は以下となっています。
・イベントタイトル: | バグだらけシステムどうテストする?~PMが考えるべきテスト戦略~ |
・開催日時: | 2022/08/01(月) 19:00~20:15 |
・登壇者: | 高橋氏、高木氏 |
・開催場所: | オンライン |
・タイムテーブル: | 19:00~19:01 オープニング 19:01~19:05 会社説明/アンケート 19:05~19:35 PMがより良い結果をもたらすための戦略とは -リスクベースドテスト戦略- 19:35~19:50 ソフトウェアテスト第一人者×先端品質テクノロジー企業統括責任者がテスト戦略を語る 19:50~20:05 Q&A 20:05~20:15 アンケートのご案内 20:10~20:15 ご挨拶・終了 |
・参加申し込み: | https://techplay.jp/event/865266 |
イベント開催日が週明けの月曜日となっておる、定員ももうすぐで超えそうですので、ご興味のある方は、イベント詳細ページにアクセスされてみてはいかがでしょうか。
https://techplay.jp/event/865266
AGEST「ミューテーションテスト」を提供開始

https://agest.co.jp/news/20220725/
こちらもAGEST社関連の内容となります。
AGEST社は7/25は新ソフトウェアテストサービス「ミューテーションテスト」の提供が開始されました。
こちらは、主に単体テストのプログラムコードなど作為的にエラーコードを入れることで、エラー等を明示的に表示させ、問題であるケース認知するものとなっています。
「ミューテーションテスト」のサービスについて、今までのソフトウェアテストサービスでは前例がないものと思いますので、公式サイトにアクセスして確認してみました。
◇ミューテーションテストサービス
https://agest.co.jp/solution/quality_consulting/agile_quality/mutation/
・ミューテーションテストについて
ミューテーションテストは、ミューテーション解析とも呼ばれていて、テスト対象のプログラムの一部を機械的に書き換えることで、ミュータントと呼ばれる「人工的な誤りを含むプログラム」を生成するものとなっています。
AGEST社のミューテーションテストサービスも同様に、プログラムコードの一部をバグとなるコードを仕込むことで、エラーを出させたり、エラー時の処理が行われるかなどを確認する(見える化する)ことができます。
・ミューテーションテストの流れ
Step01:前提条件確認
Step02:事前準備 ※1
Step03:テストコード確認
Step04:アプローチ検討
Step05:テスト設計 実行
Step06:カバレッジレポート検証
Step07:テストコード改修
※1
ミューテーションテストの環境としては、「IntelliJ IDEA」とミューテーション用のプラグインを利用されるとのこと。
IntelliJ IDEA
https://www.jetbrains.com/ja-jp/idea/
・サービス料金
現在はお問い合わせのみとなっています。
ミューテーションテストは名前は聞いたことがありましたが、ソフトウェアテストのサービスとして展開されるのは初めてだとおもいましたので、ご紹介させていただきました。
unittestとpytestによるPythonユニットテスト入門

https://www.sitepoint.com/python-unit-testing-unittest-pytest/?utm_source=rss
こちらは「sitepoint.com」に掲載されていた内容となります。
ユニットテストの概要、およびpytestについての一例が掲載されていましたので、紹介したいと思います。
ユニットテストの内容について、原文を確認頂ければと思います。
◇初めに
ソフトウェアテストは、ソフトウェア製品の動作を調べて、仕様との整合性を評価および検証するプロセスです。
ソフトウェア製品には、数千行のコードと、連携して動作する数百のコンポーネントが含まれる場合があります。
1行が正しく機能しない場合、バグが伝播して他のエラーを引き起こす可能性があります。
したがって、プログラムが想定どおりに動作することを確認するには、プログラムをテストする必要があります。
最新のソフトウェアは非常に複雑になる可能性があるため、正確性のさまざまな側面を評価するテストには複数のレベルがあります。
ISTQB認定テスト財団レベルのシラバスで述べられているように、ソフトウェアテストには4つのレベルがあります。
1.コードの特定の行をテストする単体テスト
2.多くのユニット間の統合をテストする統合テスト
3.システム全体をテストするシステムテスト
4.ビジネス目標への準拠をチェックする検収試験
◇単体テストについて
単体テストは、ソフトウェアが正しく動作しているかどうかのチェックに重点を置いています。
つまり、入力と出力の間のマッピングがすべて正しく行われていることを確認します。
ユニットテストは低レベルのテストアクティビティであるため、バグがソフトウェアシステムの上位レベルに伝播されないように、バグを早期に特定するのに役立ちます。
単体テストのその他の利点は次のとおりです。
・統合の簡素化:
すべてのコンポーネントが個別に適切に機能するようにすることで、統合の問題を解決しやすくなります。
・コードの回帰を最小限に抑える:
テストケースがたくさんあるので、将来ソースコードに変更を加えると問題が発生する場合は、問題を特定するのが簡単です。
・ドキュメントの提供:
入力と出力の間の正しいマッピングをテストすることにより、単体テストは、テスト対象のメソッドまたはクラスがどのように機能するかについてのドキュメントを提供します。
◇テスト戦略の設計
・テストスコープの定義
テスト戦略の計画を開始する前に、答えるべき重要な質問があります。
ソフトウェアシステムのどの部分をテストしますか?
徹底的なテストは不可能であるため、これは重要な質問です。
このため、考えられるすべての入力と出力をテストすることはできませんが、関連するリスクに基づいてテストに優先順位を付ける必要があります。
テストスコープを定義するときは、多くの要素を考慮する必要があります。
リスク:
バグがこのコンポーネントに影響を与えるとしたら、ビジネスにどのような影響がありますか?
時間:
ソフトウェア製品の準備をどのくらい早く行いますか?締め切りはありますか?
予算:
テスト活動にいくら投資しても構わないと思いますか?
何をテストし、何をテストしないかを指定するテストスコープを定義したら、優れた単体テストが持つべき品質について話す準備が整います。
◇ユニットテストの品質
・速い
ユニットテストはほとんど自動的に実行されます。
つまり、高速である必要があります。
遅い単体テストは、即座にフィードバックを提供しないため、開発者によってスキップされる可能性が高くなります。
・分離
ユニットテストは、定義上スタンドアロンです。
これらはコードの個々のユニットをテストし、外部のもの(ファイルやネットワークリソースなど)に依存しません。
・繰り返し可能
ユニットテストは繰り返し実行され、結果は時間の経過とともに一貫している必要があります。
・信頼できる
ユニットテストは、テスト対象のシステムにバグがある場合にのみ失敗します。
環境やテストの実行順序は重要ではありません。
・適切な名前が付けられる
テストの名前は、テスト自体に関する関連情報を提供する必要があります。
Pythonでのユニットテストを深く掘り下げる前に、最後の1つのステップが欠けています。
テストを整理して、クリーンで読みやすくするにはどうすればよいですか?
Arrange、Act and Assert(AAA)と呼ばれるパターンを使用します。
◇AAAパターン
Arrange、Act、Assertパターンは、単体テストを作成および整理するために使用される一般的な戦略です。
これは次のように機能します。
Arrangeフェーズでは、テストに必要なすべてのオブジェクトと変数が設定されます。
次に、Actフェーズ中に、テスト対象の関数/メソッド/クラスが呼び出されます。
最後に、Assertフェーズで、テストの結果を検証します。
この戦略は、テストのすべての主要部分(セットアップ、実行、検証)を分離することにより、単体テストを編成するためのクリーンなアプローチを提供します。
さらに、単体テストはすべて同じ構造に従うため、読みやすくなります。
◇Pytest
このpytestフレームワークは、いくつかの関連機能を備えたPythonユニットテストフレームワークです。
・少ないコードで複雑なテストが可能
・unittestテストスイートをサポート
・800以上の外部プラグインを提供
pytestはデフォルトではインストールされていないため、最初にインストールする必要があります。
Python3.7以降pytestが必要であることに注意してください。
◇pytestのインストール
インストールpytestはとても簡単です。
次のコマンドを実行する必要があります。
pip install -U pytest
次に、次のように入力して、すべてが正しくインストールされていることを確認します。
pytest –version
◇pytestを使用した単体テストの作成
テストするには、次のことを行うpytest必要があります。
・ディレクトリを作成し、その中にテストファイルを配置します。
・名前がファイル「test_」または、「_test.py」で終わるファイルにテストを記述します。
pytest現在のディレクトリとそのサブディレクトリでそれらのファイルを探します。
そこで、というファイルを作成し、test_bank.pyそれをフォルダに入れます。
これは私たちの最初のテスト関数がどのように見えるかです。
◇pytestを使用した単体テストの作成
こちらは原文をご確認ください。
◇まとめ
ソフトウェアテストが不可欠である理由と、誰もがコードをテストする必要がある理由を発見しました。
ユニットテストと、Pythonで簡単なユニットテストを設計および実装する方法について説明しました。
ソフトウェアテストの重要性をあなたに納得させたと思います。
unittestまたはなどのフレームワークを選択し、pytestテストを開始します.
□最後に
今回は、以上のニュースを取り上げてみました。
次週も、ソフトウェアテスト、テスト自動化に関するニュースをご紹介したいと思います。
最後まで見て頂き、ありがとうございました。
ソフトウェア品質を高める開発者テスト 改訂版 アジャイル時代の実践的・効率的でスムーズなテストのやり方