Swift 入門指南 V1.00 - 單元 16 - 繼續測試




軟體生命週期 (software life cycle) 分成三大階段,開發 (development) 、使用 (use) 、修改 (modification) ,接下來便是使用、修改的無限循環



開發階段,自然免不了對需求的分析 (analysis) ,然後設計 (design) 、建置 (implement) ,接著進行測試 (testing) ,其實這順序沒有絕對,「設計」與「建置」可能只是先做個簡單版本,「測試」與「使用」說到底都是實際執行後觀察結果,「修改」等於以之前的基礎再次「設計」與重新「建置」。


我們打算開發的 Encrypt 類別 (class) 的需求已經很清楚,也就是產生一個英文小寫字母的對照餘數陣列 (array) ,我們用 code 屬性 (property) 儲存這個陣列,然後以 setCode() 方法 (method) 建立這個陣列。


上個單元中,我們將 a 設定為 3b 設定為 5 ,順利的跑出一個英文小寫字母的對照餘數陣列,現在我們希望把 ab 設定成 09 之間的隨機整數,這該怎麼做呢?簡單講,就是要有個產生隨機整數的方式,還好程式庫 (library) 中已經有相關程式供我們直接使用,因此我們不需要自己重頭開發。


Cocoa 中有一個函數 arc4random() 可產生一個型態為 UInt32 的隨機整數,介於 0UInt32.max 之間,在 64 位元的機器上, UInt32.max 的值為 4294967295 ,因此把取得的數字除以 10 ,得到的餘數就會是介於 09 之間的隨機整數。


Cocoa 為 Mac OS 的應用程式介面 (application programming interface) 。

由於需要用到 Cocoa ,因此要在 Playground 的開始幾行加入 import Cocoa


import Cocoa

setCode() 修改如下


// 設定密碼表
func setCode() {
   var a = Int(arc4random() % 10)
   var b = Int(arc4random() % 10)
 
   var c = 97
   var i, x, y, m: Int
   // 以迴圈取得每一個餘數
   for i = 0; i < 26; i++ {
      x = c
      y = x * a + b
      m = y % 26
      code.append(m)
      c++
   }
 
   // 移除第一個預設值
   code.removeAtIndex(0)
}

由於 arc4random() 回傳的是 UInt32 型態的整數,直接寫出來的整數型態則為 Int ,計算需要的型態也是 Int ,所以這裡用 Int 的建構子 (initializer) 轉換型態為 Int 後,才把餘數指派到 ab 內。

測試程式碼不變,移到下面去看一下結果吧



看起來 OK ,多寫些測試程式碼看看



居然有一行都是 2 ,有些是我們要的餘數陣列沒錯,有一些則不是,那表示我們所用的數學公式有問題,接下來要先修正數學公式。


中英文術語對照


軟體生命週期software life cycle
開發development
使用use
修改modification
分析analysis
設計design
建置implement
測試testing
類別class
陣列array
屬性property
方法method
程式庫library
應用程式介面application programming interface
建構子initializer

沒有留言: