序言
一轉眼來北京已經四個月了。度過了回龍觀沒有暖氣的冬天,迎來了春天——腦子終於化開了。
明天搬家,搬到積水潭,這樣能夠離工做的地方(Sigma大廈)近一些。我覺得我能改變本身夜行動物的習慣,看來努力失敗了。仍是在晚上工做吧,這回到多晚都沒事了,不用急着趕城鐵,走着都能回家。
背後那個組的同仁們本身開發了一個WinForm的自動測試工具,挺好玩兒,那麼我就本身開發一個吧。業餘時間作一作,一是深化對軟件測試的理解,二是提升一下本身的編程水平——在技術與藝術上都追求品質。
2006-03-22
兵馬未動,先搞糧食。
今天先找了些參考資料,而後決定了一下使用什麼技術來開發這個大玩具。
資料:
[1] MSDN:這個不用多說吧,百科全書。
[2] Programming Windows 5th Edition:由於要用到Win32編程,這本書是很是好的參考,之前一直沒好好看,今天又祭器這面大旗。
[3] Effective GUI Test Automation: Developing an Automated GUI Testing Tool:Sybex的書,內容不錯,就是有點囉嗦,沒辦法,參考資料少,咱就耐着性子看吧。
技術:
就這個軟件自己而言,因爲是自動控制計算機(主要是用戶輸入部分),因此應屬於Windows底層程序開發。這種底層開發,Win32是正道,但若是用Win32開發,寫UI的難度太大了——除非寫個命令行程序。另外一個選擇就是MFC,惋惜UI仍是不太好寫,更要命的是MFC使用C++,C++對XML的支持實在是讓俺不敢怎麼恭維。爲何要用XML?是啊,自動化測試嗎,測試員要錄製測試腳本,再執行測試腳本,用XML語言寫腳本比較現成哦,我可不想本身再開發一套腳本Tag。C#借.NET的光,對XML天生支持的不賴,並且寫起UI來是飛速完成的。惋惜哦,架在.NET Framework的高臺上,與底層遙遙相望……調底層的API只能使用PInvoke和內存對齊,並且Win32函數裏那些怪怪的數據類型怎麼轉成.NET的類型呢?(頭大)
技術
|
UI
|
底層
|
XML
|
Win32
|
X
|
O
|
X
|
MFC
|
X
|
O
|
X
|
C#
|
O
|
X
|
O
|
聽背後組的MM說,他們是寫了一個COM,而後又在C#裏寫的UI,對此,俺表示懷疑。第一:寫COM幹嘛呢?寫一個原生(非託管)DLL不就結了?搞個COM還要安裝,麻煩的不行不行的;第二:……還沒想好,回頭再說。 根據上表評估,我仍是打算選用C#,底層雖然難搞,但不是不能搞。寫個引擎,封裝在一個DLL程序集裏算了。就這麼定了,明天開始概要設計了。 對了,補兩句。剛纔試了試用Process類和Form類的一些靜態方法,看看能不能避開PInvoke,結果發現使用Process的實例屬性「主窗體Handle」獲得的數值的確與Win32 的FindWindow獲得的同樣,惋惜用Form的FromHandle來處理這個值就得不到主窗體——K~~~,我不生氣,不生氣……