2009年11月23日月曜日

SWE637 Software Testing

今セメスターで履修している二つ目のコース、SWE637を紹介します。

SWE637
講義名は「Software Testing」です。以下、シラバスからの引用です。
Concepts and techniques for testing software and assuring its quality. Topics cover software testing at the unit, module, subsystem, and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Professor's note: The course will attempt to prepare students to test software in structured, organized ways. This course should provide practical knowledge of a variety of ways to test software, an understanding of some of the tradeoffs between testing techniques, and a feel for the practice of software testing and the research in software testing.
講師はDr. Offutt。2009年度春セメスターで私が履修したSWE642の講師でもありました。Dr. Ammannと同じくソフトウェアテスティングで有名な先生で、私がGMUに入学する前からこのコースを履修することを計画していました。

ソフトウェアテスティングは、ソフトウェア工学という分野においてとても重要なトピックであって、ソフトウェアの大規模化・複雑化に伴ってその重要性は益々高まっていると言えます。このような背景から、私が所属しているMS Software Engineeringコースでは、このSWE637が必須科目となりました。

教科書はDr. AmmannおよびDr. Offutt共著。教科書の著者が講師というのは、なんというか、迫力がありますね。講義の内容
この講義のテーマは、「テストの設計方法を学ぶ」です。デバッグとテストの違い、プログラムの抽象度を上げてテストするという概念「モデルベーステスティング」の理解から始まって、以下の各種Test Coverage Criteriaについて学びます。
  • Graph Coverage
  • Logic Coverage
  • Input Space Partitioning
  • Syntax-Based Testing
基本的なアイデアは、例えばGraph Coverageの場合、プログラムをノードと矢印から成るグラフにモデル化し、全てのノードをカバーするようなテストケース集合(Node Coverage)を設計する、だとか、全ての矢印をカバーするようなテストケース集合(Edge Coverage)を設計します。
上記のようなCoverageはほんの一例で、プログラムを様々な視点からモデル化し、同モデル上でこれまで研究者が見出してきた、有用だと言われているCoverageを学びます。

私はソフトウェアの設計や実装は大好きですが、一方で、テストの重要性を認識しておきながら、正直テストに関わるのを避けてきちゃいました。このコースを履修して、初めてテストに正面から向き合ったような気がします。

この講義では、毎週宿題が出題され、全て個人プレーで取り組みます。また、毎回講義の最初にクイズが出題されます。グループワークはありません。先日紹介したSWE619もグループワークがないので、今セメスターはかなり楽で、研究に時間を費やすことができています。

0 件のコメント: