為學校網站系統做測試甘苦談

PN Wu (小平)

Who Am I

PN Wu (小平)

UGDC Founder

國立勤益科技大學資訊工程學士

研討會餐飲組固定班底

Android APP Developer

不離不棄使用Java四年以上

貓奴

為什麼要做測試?↓

 預期的使用者操作

 預期的系統流程

 預期的結果

不預期的使用者操作

不預期的系統流程

不預期的結果

為什麼要做測試?

在系統上線之前

找出問題

在交給使用者之前

解決問題

不樂見發生的事

系統上線後,

收到通報說系統用起來有問題

甚至是,通報機制不完善

使用者遇到問題求助無門

什麼?你說我們的網站有洞!?

舉個簡單的例子

資訊洩漏

再看另外一個例子

最後一個例子

堂堂教育部發展計畫典範科大

網站一大堆的洞

為什麼要做測試?

「你為什麼不做測試?」

想像一下測試都怎麼進行的↓

想像1:

黃色小鴨測試法

在程序的調試、糾錯或測試過程中,耐心地向小黃鴨解釋每一行程序的作用,以此來激發靈感。

 

- 維基百科

想像2:

黃色小貓測試


黃色小鴨幫你找Bug,
黃色小貓讓你愉悅編程。

 

‪‎SITCONxCCCA新竹定期聚

想像3:

Pair Programming

是一種敏捷軟體開發的方法,兩個程式設計師在一個電腦上共同工作。一個人輸入代碼,而另一個人審查他輸入的每一行代碼。

 

- 維基百科

第一次為學校網站

偵錯就上手

怎麼可能第一次就上手嘛!

(〒皿〒)╯辛酸甘苦談

第一次為學校網站

偵錯就上手

PN Wu (小平)

其實這才是本議程的名稱

故事是這樣子的↓

於是我很天真的在專長寫上  JSP、MySQL

履歷專長

  • Linux
  • JSP
  • MySQL

獲得工作I

  • Windows
  • ASP.NET (C#)
  • MS-SQL

獲得工作II

  • Windows
  • PHP
  • MS-SQL

不禁感嘆 書到用時方恨少

不禁感嘆 書到用時方恨少

     人才都是精又廣

進入正題

我們是怎麼做測試的?

  • 專案主管
  • 開發人員
  • 測試人員
  • End-User代表

MantisBT

  • 問題回報與追蹤系統
  • 共同的交流平台
  • 開發、測試工作紀錄

測試架構

  • 在線開發用VM
  • 在線用DB

 

  • 測試用VM
  • 測試用DB

 

  • 對照組VM

參與人員

  • 開發人員
  • End-User代表
  • 專案主管
  • 測試人員
  • 專案主管
  • 測試人員
  • 開發人員
  • 專案主管

用途說明

  • 開發者在建功能
  • End-User代表在建資料
  • 測試工程人員​​在重構網站系統
  • 測試工程人員在測試用VM重構網站系統,將確認沒問題的變更套用到對造組VM

為何以此種架構做測試?

1. 開發時程很趕

  • 以盡量不改變開發者的開發習慣為原則
  • 測試有時候會把東西用壞,測試與開發分別進行

2. 專案進行中才導入測試

  • 測試人員加入專案的時間點不對,專案規劃時未包含測試計畫,測試人員不良於行

測試人員都在做什麼?

1. Unit Testing (單元測試)

2. System Testing (系統測試)

  • 首先你要先有單元才能測試
  • 一個典型的單元:類別底下的方法
  • 編寫測試案例
  • 生成代碼覆蓋率分析報告
  • 確認各VM上網站系統的問題與差異,並提供解決方案

Visual Studio測試工具介紹

測試總管

程式碼涵蓋測試

程式碼涵蓋範圍著色

Code Map

PHP測試工具介紹

PHPUnit

單元測試框架

PHPUnit SkeletonGenerator

PHPUnit 骨架生成器

PHP CodeCoverage

覆蓋率測試

NetBeans 8.0.1  (for PHP)

整合式開發環境

還有各種我還沒用過的PHP測試工具

  • PHP CodeSniffer               (程式碼品質分析工具)

 

  • Selenium                        (Web UI 測試)

 

  • Sikuli                                   (UI自動化測試)

小結

  • 測試人員必須經驗豐富
  • 測試與開發必須併行
  • 完善的測試計畫
  • 給予足夠的時間進行開發與測試
  • 健全的問題回報機制
  • 學Git

推薦文章、書籍與網路資源

  • 30天精通 Git 版本控管

https://github.com/doggy8088/Learn-Git-in-30-days

  • Microsoft Developer Network - 快速入門:搭配測試總管進行以測試為導向的開發工作

https://msdn.microsoft.com/zh-tw/library/hh212233.aspx

 

推薦文章、書籍與網路資源

  • OpenFoundry - 第一次用 PHPUnit 寫測試就上手

https://http://www.openfoundry.org/tw/activities/details/451-phpunit

  • 使用 PHPUnit 和Selenium 進行測試- NetBeans IDE 教程

https://netbeans.org/kb/docs/php/phpunit_zh_CN.html

 

推薦文章、書籍與網路資源

  • 軟體測試實務講座 : 來自矽谷的技術經驗與心得分享 / 2007 李幸超 著

 

 

推廣

交大土木工程學系

碩士班資訊組

誠徵學弟妹

包含但不限於

  • Unity3D
  • Arduino
  • Android APP
  • Raspberry Pi
  • 無線感測網路
  • 地理資訊系統
  • 人工智慧、類神經網路

Thanks

為學校網站系統做測試甘苦談

By Ping Wu (小平)

為學校網站系統做測試甘苦談

SITCON 綠指針快報 Vol. 3 http://sitcon.org/newsletter/news-003/ | SITCON 2015 Schedule http://sitcon.org/2015/#/Schedule | 2015/03/07(六) 中央研究院 人文社會科學館 第二會議室 [R2] 11:10~11:50 | 本議程將枚舉分享在未引入測試的慘痛專案經驗,以及在已上線的網站中導入軟體測試所遭遇的狀況,隨後條列學校網站系統常見的問題原因與分析,並提供在專案開發上導入軟體測試時的幾個建議。本議程包含概述軟體測試,內容涵蓋TDD、Unit Testing、Code Coverage等。最後將針對Visual Studio、PHP、Java提供在執行軟體測試上的具體方法。

  • 2,275