這套方法是記錄在《How Google Tests Software》 一書之中,我覺得蠻不錯的,分享一下︰
Attributes-Components-Capabilities(ACC) 是Google團隊使用的測試建模的方法,可以視為快速譔寫 Test Plan 的一種方式。據 Jame Whittaker 的講法,一份ACC的完成時間約為 10~30 分鐘,如果達不到,代表自己對於要測的系統不夠了解。
目前 Google 己經把這個方法實現在 Google Test Analytics (GTA) 這套系統之上,更棒的是 GTA 目前己經 Open Source 出來了,而且有一個公開的沙箱網站,任何人都可以上去快速體驗一下ACC的魅力。
ACC 內容
ACC主要的內容就是依照產品的 Attribute
(特性), Component
(元件), Capability
(能力) 的三者,分別依照順序,一步一步來分析我們到底要測什麼,該測什麼,什麼要先測等等問題。下面分別介紹ACC三者的意義︰
-
Attributes: 產品的特色,是產品的形容詞。例如︰快,安全,穩定,好用。這個清單說明為什麼顧客要用我們的產品,而不是其它的競爭者的。
-
Components: 產品的元件,是產品的名詞。例如︰資料庫,通知系統,使用者..等等。這個清單列舉出整個系統中的元件,約10個左右為宜。
-
Capability: 產品的功能,是產品的動詞。例如︰分享照片給朋友,新增好友,收到朋友訊息通知。
關於 Attribute 跟 Componet,這邊書中是舉Google+為例︰
Attribute :
- Social: Empowers users to share information and what they’re up to.
- Expressive: User can express themselves through the features
- Easy: Intuitive. Easy to figure out how to do what you want to do
- Relevant: Show only information the user care about
- Extensible: Capable of integrating with Google properties and third-party site and application
- Private: User’s data won’t be shared.
Components :
- Profile: Information and preferences for the logged in user
- People: Profiles that the user has connected with.
- Stream: A ranked stream of posts, comments, notifications, photos, and so on.
- Circles: Groups to put contacts into “friends”,”coworkers”, and so on.
- Notifications: Indicators for when you are mentioned in a post
- Interest or +1: Indication for user likes
- Posts: Buzz posts from the users and their contacts
- Comments: Comments on posts, photos, videos, and so on
- Photo: Photos uploaded by the users and their contacts
當有了Attributes跟Components之後,接下來就是列出目前系統所所擁的功能。而這邊強調的是,每一個功能背後一定要找了一個而且是唯一一個的Attribute,來代表這個功能所要達到的目的。
Capabilities:
每一個Capability,說明了一個Compoent產生的動作如何達成一個Attribute,也就是Capability是讓Component跟Attribute產生連結。 所以ACC方法的流程就是我們先想 Attribute,然後再找 Components,最後再依照現有的 Capability 功能來找出對應的 Attribute 跟 Components 分別是什麼。
在 Google 的ACC中,我們可以產生一個二維的表格。來展現Capability,以Google+為例,在此簡化表格,內容是依照目前Google+的功能列舉出來的︰
| Social | Easy | Private ----------|---------|-------|-------| Profile|分享給朋友自己的個資| 很容易更新自己的個資| 用户可以保密隱私個資 People|使用者可以連結其它使用者 | 容易管理好友 | 用戶可以保密交友圈資料 Photos|1.使用者可以分享照片給其它使用者2.照片可以加上其它使用者的資訊 | 1. 容易上傳照片 2. 容易從別的來源匯入照片 | 照片只給有權限的人公布
橫軸是 Attribute,緃軸是 Compoent,而格子裡面就是 Capability
基本上這個表格產生出來之後,基本上就完成了大部份的內容。接下來可以直接針對每一個Capability使用不同的測試案例設計方法來產生測試案例。另外也可以拿來做 Risk Analysis。
Risk analysis
在GTA中,Risk 由兩個因素組成︰Frequency of Failure 跟 Impact 兩者組成。每個 Capability 都可以自己設定該項目的掛掉機率跟掛掉影響。最後就可以產生一個 Risk Heat Map,這邊是我自己在網站上練習的結果,這可以讓我們知道那些Capability是最重要的,可以先開始測試。
ACC使用要點
- 要隨時更新,反應最新的現況
- 要精準表達使用者到底想要什麼
- 讓測試的重點(風險) 可以借由 Heat map來展現
ACC可以視為一種Agile style的Test Plan設計方案,制定速度快,可做風險分析,是測試案例設計的一個好的起點。有現成OpenSource的系統︰GTA,可直接放到Google App Engine上使用。