2 項進行中

115-1 選課時程

進行中

  • 初選第一階段 6/15 – 6/18
  • 初選第二階段 6/22 – 6/25
  • 校際選修 進行中 8/24 – 9/18
  • 初選第三階段 8/31 – 9/3
  • 開學後加退選 進行中 9/7 – 9/21
  • 逾期加退選 9/21 – 9/24
選課資源

加入行事曆

選擇訂閱 Google Calendar,或下載通用的 ICS 檔案。

使用 Google Calendar 時,Google 會收到這份課表的公開連結。

軟體測試與程式安全

Software Testing and Secure Programming

學期
114-2
學分
3 學分
當期課號
555602
永久課號
CSCM30011
開課單位
國防資安管理碩士在職專班
授課教師
黃世昆
校區
北門
類別
選修
上課時間表
週二
A
18:30–19:20
軟體測試與程式安全
TB435(北門)
2 節連堂
B
19:30–20:20

* 根據陽明交大上課時間表所列

概述

Software testing is to exercise the program using input data in three different space domains: (1) in the requirement and specification domain, (2) in the program implementation domain, (3) in the test input space domain. The space covered in (1), (2), (3) will intersect one another and exhibit different properties to reveal the software defects, quality of use, and potential exploitation. Our course will cover several conventional software testing issues: 1. Functional testing, 2. Structural testing, 3. Integration and system testing. Other than these, test plans used in Microsoft and google will be discussed. Nonconventional testing like fuzzing and exploitable testing will be introduced too. 軟體測試是以輸入資料來操作程式,針對三種不同的範圍來討論: (1) 規格需求的範圍,(2) 程式實作的範圍, (3) 輸入資料的空間範圍。這三種空間的範圍,彼此交集,也呈現不同的特性,展現程式本身的缺陷、品質與可能隱含的資安操作空間。我?的課程將涵蓋傳統測試議題:1. 功能性測試, 2. 結構化測試, 3. 整合與系統測試。同時,我們也介紹微軟與 Google 相關軟體的測試過程,並涵蓋非典型的如 fuzzing、脅迫測試。

先修科目

Computer programming

備註

無備註

教學方式

1. Facebook: https://www.facebook.com/groups/softwaretesting.nycu/ 2. Google classroom

評分方式

1. Mid-term exam or testing report (20%), final-exam or testing report(20%) 2. Homework (40%) 3. Term project (20%)

課程大綱
  • Introduction

    Why do we test software?

    講授:
    3
  • Foundations

     Model-Driven Test Design  Test Automation  Putting Testing First  Criteria-Based Test Design

    講授:
    12
    實作:
    3
  • Coverage Criteria

    Input Space Partitioning  Graph Coverage  Logic Coverage  Syntax-Based Testing

    講授:
    21
    實作:
    3
  • Testing in Practice

    Managing the Test Process  Writing the Test Process  Writing Test Plans  Test Implementation  Regression Testing for Evolving Software  Writing Effective Test Oracles

    講授:
    6
    實作:
    6
週次計畫
週次主題
第 1 週

Overview and Introduction

2026-02-24(二)
第 2 週

Model-Driven Test Design

2026-03-03(二)
第 3 週

Test Automation

2026-03-10(二)
第 4 週

Putting Testing First

2026-03-17(二)
第 5 週

Criteria-Based Test Design

2026-03-24(二)
第 6 週

Input Space Partitioning

2026-03-31(二)
第 7 週

Graph Coverage

2026-04-07(二)
第 8 週

Logic Coverage

2026-04-14(二)
第 9 週

mid-term exam

2026-04-21(二)
第 10 週

Syntax-Based Testing

2026-04-28(二)
第 11 週

Managing the Test Proces

2026-05-05(二)
第 12 週

Writing Test Plans

2026-05-12(二)
第 13 週

Test Implementation

2026-05-19(二)
第 14 週

Regression Testing for Evolving Software

2026-05-26(二)
第 15 週

Final exam

2026-06-02(二)
第 16 週

Final exam, term project presentation

2026-06-09(二)
教科書

Reference Books: 1. Paul Ammann and Jeff Offutt, Introduction to Software Testing, 2nd edition, Cambridge University Press, 2016, https://cs.gmu.edu/~offutt/softwaretest/ 2. James Whittaker, Jason Arbon, Jeff Carollo, How Google Tests Software, Addison-Wesley, 2012. (ebook from http://it-ebooks.info/book/1200/ ) 3. Alan Page, Ken Johnson, Bj Rollison, How We Test Software at Microsoft, Microsoft Press, 2008, http://www.microsoft.com/learning/en-us/book.aspx?id=11240 4. Paul C. Jorgensen, Software Testing: A Craftsman's Approach, 4th Edition, CRC Press, 2014.

Office Hours
地點
EC 514
時間
Tuesday E,F
聯絡方式
Instructor: 黃世昆 Shih-Kun Huang, Email: skhuang@cs.nycu.edu.tw, ext: 31703