<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>哇寶部落格 &#187; 測試先行</title>
	<atom:link href="http://blog.wabow.com/archives/tag/%e6%b8%ac%e8%a9%a6%e5%85%88%e8%a1%8c/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.wabow.com</link>
	<description>Wabow Information Inc. Blog</description>
	<lastBuildDate>Fri, 21 May 2010 15:11:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[心得] 測試先行作業與相關心得 PART2</title>
		<link>http://blog.wabow.com/archives/1852</link>
		<comments>http://blog.wabow.com/archives/1852#comments</comments>
		<pubDate>Thu, 30 Jul 2009 03:14:56 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[軟體測試]]></category>
		<category><![CDATA[單元測試]]></category>
		<category><![CDATA[測試先行]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1852</guid>
		<description><![CDATA[經過上次歡樂（？）的偽噗浪網址轉換器後，本週的作業是「編碼解碼器」；完全沒有測試先行概念的我，首先當然就專注在編碼解碼資源的搜尋上囉！拜 Google 大神後發現也不少推薦的可逆的加密演算法：知名的 AES、3DES，雖然網路上提供許多詳細又完整的 PHP 實踐方式，但是跟此次作業要求的「最後呈現的方式必須為數字」的條件不符。後來稍微看了一下之前在專案中曾經使用過的 XXTEA，發現裡面就提供數字轉字串，與字串轉數字的函數；真是太棒了！ 整個程式的思考概念是從 Andrew 提供的靈感開始：「將 4 個字元的字串分拆為字元，再由單個字元轉換為 4 個數字；最後第 17 個數字則為前 16 個數字的驗證碼」（感謝 Andrew 的分享^^）；不過準備開始的時候發現，測試的部分不知道要如何下手：「測試時，利用 function 編碼後的字串 = function 編碼後的字串？既然用到同一個 function 不是永遠相等嗎？」，所以問了一下 Jace 的用意。才發現我從 function 開始的思考方式就是錯誤的，以「測試先行」的概念來看，應該要先決定編碼過後呈現的字串，反推 function 撰寫的公式！ 可是令我感到困惑的是，既然 function 就是編碼的公式；那「利用 function 編碼後的字串 = 利用公式編碼後的字串」，這還是永遠的等式啊！？我整個呈現鬼打牆的狀態！（暈）「測試先行」的概念可能是著重在思考邏輯的步驟上吧。原本的思考方式是：想 function -&#62; 測試需求 -&#62; 通過測試 -&#62; 完成；但是測試先行的思考方式是：預測結果 -&#62; 推導 function -&#62; 測試需求 -&#62; 通過測試 -&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>經過上次歡樂（？）的偽噗浪網址轉換器後，本週的作業是「編碼解碼器」；完全沒有測試先行概念的我，首先當然就專注在編碼解碼資源的搜尋上囉！拜 Google 大神後發現也不少推薦的可逆的加密演算法：知名的 <a href="http://zh.wikipedia.org/w/index.php?title=%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86&amp;variant=zh-tw" target="_blank">AES</a>、<a href="http://en.wikipedia.org/wiki/Triple_DES" target="_blank">3DES</a>，雖然網路上提供許多詳細又完整的 PHP 實踐方式，但是跟此次作業要求的「最後呈現的方式必須為數字」的條件不符。後來稍微看了一下之前在專案中曾經使用過的 <a href="http://en.wikipedia.org/wiki/XXTEA" target="_blank">XXTEA</a>，發現裡面就提供數字轉字串，與字串轉數字的函數；真是太棒了！</p>
<p><span id="more-1852"></span></p>
<p>整個程式的思考概念是從 <a href="http://blog.wabow.com/archives/author/andrew" target="_blank">Andrew</a> 提供的靈感開始：「將 4 個字元的字串分拆為字元，再由單個字元轉換為 4 個數字；最後第 17 個數字則為前 16 個數字的驗證碼」（感謝 Andrew 的分享^^）；不過準備開始的時候發現，測試的部分不知道要如何下手：「測試時，利用 function 編碼後的字串 = function 編碼後的字串？既然用到同一個 function 不是永遠相等嗎？」，所以問了一下 Jace 的用意。才發現我從 function 開始的思考方式就是錯誤的，以「測試先行」的概念來看，應該要先決定編碼過後呈現的字串，反推 function 撰寫的公式！</p>
<p>可是令我感到困惑的是，既然 function 就是編碼的公式；那「利用 function 編碼後的字串 = 利用公式編碼後的字串」，這還是永遠的等式啊！？我整個呈現鬼打牆的狀態！（暈）「測試先行」的概念可能是著重在思考邏輯的步驟上吧。原本的思考方式是：想 function -&gt; 測試需求 -&gt; 通過測試 -&gt; 完成；但是測試先行的思考方式是：預測結果 -&gt; 推導 function -&gt; 測試需求 -&gt; 通過測試 -&gt; 完成。怎麼看都是後者比較花時間！（囧）</p>
<p>原本對數學就苦手的我，對於推導公式的過程是完全的頭大啊！（囧）因為昨天跟 Jace 討論的時候有提到查表法，好像並沒有限制這個方法；索性我就把 XXTEA 的公式做成密碼表，根據這個密碼表進行編碼解碼的動作囉～這次的作業還不僅是練習測試先行的概念，同時帶有專案管理的概念，要把 Jace 模擬為客戶，並向他提出需求上沒有的問題；是老師的用心良苦，也是學生的額外課題（囧）！</p>
<p>對我來說測試先行的優點在於，思考的邏輯更為清晰；就好像畫素描一樣，必須先從大輪廓開始，在一步步修飾細部才能唯妙唯肖。缺點是必須經過比較多步驟，可能會增加許多不必要的時間。畢竟當畫素描是一個有限定時間的考試時，雖然慢工出細活，但能不能拿到高分就難說了～^^|||</p>
<p><a href="http://blog.wabow.com/wp-content/uploads/2009/07/tdd2_090804.zip">測試先行作業 PART2 下載</a>（090804修正程式）</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1852/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[心得] 測試先行作業與相關心得</title>
		<link>http://blog.wabow.com/archives/1781</link>
		<comments>http://blog.wabow.com/archives/1781#comments</comments>
		<pubDate>Thu, 23 Jul 2009 02:40:19 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[軟體測試]]></category>
		<category><![CDATA[單元測試]]></category>
		<category><![CDATA[測試先行]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1781</guid>
		<description><![CDATA[「測試先行開發模式」其實在上週的《[心得] 單元測試相關心得：單元測試與軟體開發》就已經提到，Wiki 也把它相關的正反面評價也寫的很清楚；本週的課題作業就是要試著以這樣的模式進行開發。不過因為我跟阿布覺得「測試先行」這個概念實在很弔詭，所以非常幸運的還是使用原始的開發模式。最後由 Suzy 做實驗組，我們為對照組的方式；實際比較二種開發模式的不同。 課題作業的內容，是仿造知名微網誌噗浪的訊息輸入，在輸入符合某些 Url 規則時，自動轉換為 HTML 語言。當然當我們需要判斷某些特殊規則的時候，非常直覺的一定會想到大家的好朋友「正規式」！但也因為正規式的出現，有點模糊了原本體驗「測試先行」的目的，大部分寫作業的時間都耗在正規式的判斷與寫法...正規式是程式語言界中的火星文啊！（吼）Wiki 其實已經提供很好的正規式說明，不過「正則表達式30分鐘入門教程」提供更完整詳細的說明，尤其是「後向引用」更是以前想都想不到的使用方式！「Regular Expression Library」提供很多網路前輩們已經寫好的正規式判斷，算是非常完整的正規式資料庫唷！ 因為其實我還是用傳統的 Redo &#38; Debug 的方式，所以對測試先行並沒有特別的感覺，反而是採用「測試最後行」（有這種說法嗎？）的方式（因為最後幾題 Jace 指定要用單元測試的方式...），把 function 都寫好以後才開始寫測試程式；不過在全部測試時，Provider 提供的批次測試的確有比程式寫死或是一般網頁輸入要來的方便許多。算是有贏傳統開發模式的地方吧～但是我還是覺得使用測試先行應該會比較花費時間耶...（囧）果然這種嚴謹的開發模式，不是我這種目光短淺的人所能了解的吧！（沒有 View，噗） 測試先行作業下載]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://zh.wikipedia.org/w/index.php?title=%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91&amp;variant=zh-tw" target="_blank">測試先行開發模式</a>」其實在上週的《<a href="http://blog.wabow.com/archives/1755" target="_blank">[心得] 單元測試相關心得：單元測試與軟體開發</a>》就已經提到，Wiki 也把它相關的正反面評價也寫的很清楚；本週的課題作業就是要試著以這樣的模式進行開發。不過因為我跟阿布覺得「測試先行」這個概念實在很弔詭，所以<span style="text-decoration: line-through;">非常幸運的</span>還是使用原始的開發模式。最後由 Suzy 做實驗組，我們為對照組的方式；實際比較二種開發模式的不同。</p>
<p><span id="more-1781"></span>課題作業的內容，是仿造知名微網誌<a href="http://www.plurk.com/" target="_blank">噗浪</a>的訊息輸入，在輸入符合某些 Url 規則時，自動轉換為 HTML 語言。當然當我們需要判斷某些特殊規則的時候，非常直覺的一定會想到大家的好朋友「<a href="http://zh.wikipedia.org/w/index.php?title=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F&amp;variant=zh-tw" target="_blank">正規式</a>」！但也因為正規式的出現，有點模糊了原本體驗「測試先行」的目的，大部分寫作業的時間都耗在正規式的判斷與寫法...正規式是程式語言界中的<a href="http://komica.dyndns.org/wiki/?%E7%81%AB%E6%98%9F%E6%96%87" target="_blank">火星文</a>啊！（吼）Wiki 其實已經提供很好的正規式說明，不過「<a href="http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm" target="_blank">正則表達式30分鐘入門教程</a>」提供更完整詳細的說明，尤其是「<a href="http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm#backreference" target="_blank">後向引用</a>」更是以前想都想不到的使用方式！「<a href="http://regexlib.com/Default.aspx" target="_blank">Regular Expression Library</a>」提供很多網路前輩們已經寫好的正規式判斷，算是非常完整的正規式資料庫唷！</p>
<p>因為其實我還是用傳統的 Redo &amp; Debug 的方式，所以對測試先行並沒有特別的感覺，反而是採用「測試最後行」（有這種說法嗎？）的方式（因為最後幾題 Jace 指定要用單元測試的方式...），把 function 都寫好以後才開始寫測試程式；不過在全部測試時，Provider 提供的批次測試的確有比程式寫死或是一般網頁輸入要來的方便許多。算是有贏傳統開發模式的地方吧～但是我還是覺得使用測試先行應該會比較花費時間耶...（囧）果然這種嚴謹的開發模式，不是我這種目光短淺的人所能了解的吧！（沒有 View，噗）</p>
<p><a href="../wp-content/uploads/2009/07/tdd.zip">測試先行作業下載</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1781/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
