Time of Update: 2018-12-03
語境驅動測試7原則探索式測試的奠基人和積極實踐者Cem Kaner和James
Time of Update: 2018-12-03
在實際工作中接觸到一些與x86/x64平台底層的問題時,往往是遇到不懂的就翻翻Intel或AMD提供的手冊,這樣掌握並不牢固,下次重遇問題時還要翻手冊。現在讓我們一起來系統地學習x86/x64體系知識,然後需要溫故而知新。實驗的重要性在學習過程中,我們以探索為目的,以實驗為依託。要透徹地對一個知識點進行理解,顯然經過測試實驗的論證是最好的方法,也只有經過全方位的測試才是最為真實可靠的。Intel和AMD官方手冊某些描述上存在著隱晦難懂的地方,甚至可能還會出現錯誤。因此測試實驗起的作用是:驗證真偽
Time of Update: 2018-12-03
在互動環境下,不管要求REBOL解譯器做什麼事,都可以馬上看到結果;出現錯誤(error)也可以馬上看到報錯。這裡的四個例子,都是基於各自不同的原因導致程式出錯而收到的錯誤資訊。••第一個錯誤資訊是Access error,詳細說明中提到“Not Found”(找不到)。我們連結到一個不存在的網址,當然無法取回網頁,所以收到這樣的錯誤警告。••第二個錯誤資訊依然是Access error,詳細說明中提到“Timeout”(網路連接逾時)。••第三個錯誤資訊是Syntax
Time of Update: 2018-12-03
如果我們要解決的問題是將某網狀圖片下載到本地磁碟,可以把這個問題分解為:A. 取得檔案名稱。B. 下載網狀圖片。C. 儲存到本地磁碟。對應的解決方式分別為:A. 通過find和to-string 函數(你目前不需知道這兩個函數的細節)可以取得檔案的名稱。B. 通過read函數可以從一個URL 下載圖片。C.
Time of Update: 2018-12-03
遠程支付技術方案遠程支付,指使用者與商戶不需要面對面互動,而是使用移動終端通過無線通訊網路,與後台伺服器進行互動,由伺服器端完成交易處理的支付方式。按照使用的技術類型,遠程支付技術方案主要包括簡訊支付、用戶端(無卡)支付、智慧卡支付和智能終端外設支付四種技術方案。◎ 簡訊支付:指使用者通過編輯、傳送簡訊完成的支付業務。◎ 用戶端(無卡)支付:指使用者通過移動互連網瀏覽器或用戶端,經互連網與支付平台互動完成支付的業務。◎ 智慧卡支付:指使用者通過儲存支付資料的智慧卡進
Time of Update: 2018-12-03
自訂事件和jQuery外掛程式Query 外掛程式的實現深受自訂事件機制的影響,同樣,自訂事件也是處理與DOM產生互動的代碼邏輯片段之間耦合的很好的架構方法。當你想給你的應用添加一個功能片段時,或許經常糾結於是否應當將這個片段抽離為一個外掛程式。自訂事件的思路可以幫你做這種解耦,並逐漸形成一個可複用的庫。比如,我們來看一個簡單的jQuery外掛程式——選項卡。我們讓ul列表來響應點擊事件。當使用者點擊一個清單項目,給這個清單項目添加一個名為active 的類,同時將其他清單項目中的active
Time of Update: 2018-12-03
項目警示機制如何判斷一個項目正在向這個方向發展(但尚未陷入災難之中)呢?如何在拯救措施的成本變高之前判斷出需要對軟體項目採取一定的措施?這些問題的答案在於EWS系統的警示機制。出於討論的目的,我們將問題劃分為專案管理相關(例如行政、管理、過程、環境等問題)和產品相關(例如軟體的bug)兩類。項目和產品問題根據其所處的嚴重程度,分為下面幾類:1.危急類危急類產品問題:造成產品不可用或者接近停用產品缺陷。危急類項目問題:若不將之克服項目就無法取得成功的、與項目有關的問題。2.嚴重類嚴重類產品問題:致
Time of Update: 2018-12-03
Time of Update: 2018-12-03
向模組化進軍,建立類在講解MVC 的本質之前,我們首先給大家補習一下基礎知識,比如JavaScript的類和事件。只有打下一個堅實的基礎,才能更好地學習、理解更進階的概念。對於靜態類來說,JavaScript對象直接量就已經夠用了,但它對使用繼承和執行個體來建立經典的類往往更有協助。有必要強調一下:JavaScript是基於原型的程式設計語言,並沒有包含內建類的實現。但通過JavaScript 可以輕易地類比出經典的類。JavaScript
Time of Update: 2018-12-03
語言只是工具我曾經是非常執著的開發人員。我有連續幾天幾夜 Coding的經曆,也曾經為了一個技術問題耗上三四個星期而導致項目一再延遲,還曾經為了一個實現細節與項目相關的人員逐一爭論。我也曾經像大多數的開發人員一樣熱衷於爭論語言之間孰優孰劣。我在“Delphi大富翁論壇”上寫過一個簡介,其中個人特長是“擅長 TurboPascal、Delphi、TASM系列語言,痛恨 C/C++。(凡見有價值之 C代碼,先讀通,後寫成 Pascal/Delphi,最後罵一句:C寫得真笨!)”。我至今保留這段文字,
Time of Update: 2018-12-03
條件運算式Scala的if/else文法結構和Java或C++一樣。不過,在Scala中if/else運算式有值,這個值就是跟在if或else之後的運算式的值。例如:if (x > 0) 1 else -1上述運算式的值是1或−1,具體是哪一個取決於x的值。你可以將if/else運算式的值賦值給變數:val s = if (x > 0) 1 else -1這與如下語句的效果一樣:if (x > 0) s = 1 else s =
Time of Update: 2018-12-03
探索式測試的問答本節用對話的形式討論探索式測試的概念與實踐。提問者是本書的一位虛擬讀者,回答者是本書的作者們。 問:探索式測試中的“探索”該如何理解?答:所謂探索是指有目的的漫遊,即帶著使命在某個空間中漫遊,但沒有預先確定的路線 [Kaner01]。探索包括對產品與技術的深入研究和基於研究成果的實踐應用。 問:如何實施探索式測試?答:本書第3部分將專門討論該問題。這裡先介紹一種可行的探索式測試實施方法,其靈感來源是基於測程[1]的測試管理(Session-Based Test
Time of Update: 2018-12-03
利器何以為先鐵比銅堅硬,這是常識。在春秋戰國時期,燕國的鐵劍,鋒刃部分已經達到了今天高碳鋼的硬度。這已經非常可觀了。中原地區,則以棠溪劍為九大名劍之首。棠溪地處西平,春秋屬楚,戰國歸韓。鑄劍名師曾有歐冶子、幹將、莫邪等,工匠曾達七千之眾。《史記》中說:“天下之劍韓為眾”,說的就是棠溪。所以燕、楚等地,都以利劍著稱。但在另一個方面,從兵馬俑坑中出土的四萬件兵器,幾乎全由青銅鑄成。然而,大家都知道結果:秦國用武力統一了中國。是鐵劍砍不過銅劍?當然不是。從史料和實物中,我們都可以發現:秦軍的青銅劍比其
Time of Update: 2018-12-03
語境與單字 當我們輸入一段代碼時,REBOL 解譯器怎麼知道如何執行這段代碼?其實REBOL 解譯器一啟動,就預先準備好LIB語境。語境(context)是一張表,把單字對應到它的定義。這些REBOL解譯器預先定義在LIB 語境中的單字,我稱為REBOL 內建單字,都是一些常用單字。單字的定義可能是程式(函數)或者一般的值(例如整數)。當REBOL 解譯器看到一個單字,就會去LIB 語境中查詢,得知如何處理。以power來說,REBOL
Time of Update: 2018-12-03
自動化組件測試“組件測試”或“子系統測試”驗證系統的各個部分,可能需要安裝整個系統或某些外部依賴關係,如資料庫、檔案系統或網路終端等。這些測實驗證組件間的互動能產生預期的組合行為。典型的組件測試需要底層資料庫支援,甚至可能跨越架構邊界。因為每個測試案例執行的代碼量更大,每個測試的程式碼涵蓋範圍也更大,所以這些測試一般比單元測試執行的時間長。代碼清單6-3展示了一個組件測試的例子,它利用DbUnit架構來產生資料庫中的基底資料,然後嘗試基於資料庫中的內容找到資料。DbUnit使用了一些XML檔案,
Time of Update: 2018-12-03
多語境的操作 根據前一章的說法,代碼運行時會從USER語境中查詢單字的定義,其實不完全是這樣的。代碼中的單字是可以從不同語境中查詢定義的。為了證明這一點,這裡再做一個實驗。步驟一,我先通過context函數,分別為蘋果(Apple)與Google(Google)建立它們各自專用的語境。蘋果的語境叫做Apple,裡面只有一個單字OS,定義為"iOS"。Google的語境叫做Google,裡面只有一個單字OS,定義為"Android"(安卓)。意思是這兩家公司談到OS(操作系統)的時候,指的是不同的
Time of Update: 2018-12-03
概念架構是什麼概念架構是直指系統目標的設計思想、重大選擇,因而非常重要。《方案建議書》《技術白皮書》和市場彩頁中,都有它的身影,以說明產品/項目/方案的技術優勢。也因此,有人稱它為“市場架構”。大量軟體企業,招聘系統架構師(SA)、系統工程師(SE)、技術經理、售前技術顧問、方案經理時,職位能力中其實都包含了對“概念架構設計能力”的要求。例如:系統架構師(SA)。(1)軟體總體設計、開發及相關設計文檔編寫;(2)關鍵技術和演算法設計研究;(3)系統及技術解決方案設計,軟體總體架構的搭建;(4)通
Time of Update: 2018-12-03
Exadata中最有用的功能-儲存索引前所未聞的儲存索引是Exadata中最有用的功能,它不是像Oracle的B樹索引或者位元影像索引那樣傳統的儲存在資料庫中的索引,事實上,它在傳統意義上甚至根本不能算是索引。我們無法通過儲存索引來定位擁有給定列上特定值的一系列記錄,相反的,儲存索引是儲存伺服器上的軟體,它的設計目的是為了消除磁碟I/O。因為通過儲存索引可以定位的是不存在所需記錄的位置而非存在的位置,所以有時候我們稱其為“反向索引”。它儲存每個磁碟儲存單元(預設是1MB大小)中儲存的欄位的最小值
Time of Update: 2018-12-03
以最佳化之名儲存最佳化導致資料表空間誤刪除案例一人蛇先成,引酒且飲之,乃左手持卮,右手畫蛇曰:“吾能為之足!”為蛇足者,終亡其酒。——《戰國策•齊二》嘉招欲覆杯中淥,麗唱仍添錦上花。——宋•王安石《即事》寧錦上添花,勿畫蛇添足。在很多資料災難中,我們看到很多原本是可有可無的操作,或者是錦上添花的工作,最後卻由於處置不當、準備不足或認知不夠,導致了資料災難,當事人後悔不迭。所謂資料無小事,在和資料打交道時,我們一定要謹而慎之,切勿一失足而至追悔莫及。災難描述2011年12月31日,我們接到一個緊急
Time of Update: 2018-12-03
為了更好地讓應用系統進行調用,有的時候需要對介面進行封裝,把複雜的東西包起來,讓應用系統介面開發人員感覺越簡單越好。這樣你的系統才更容易被推廣或應用。比如,現在的很多線上支付介面都提供了軟體開發包。我們也可以通過封裝來實現介面開發包,讓開發人員簡單開發,輕鬆調用。1.介面封裝我們添加一個SSOLib類庫項目,提供對應用系統介面代碼的封裝,從而使其他應用系統通過調用該類庫,即可實現接入認證服務中心。SSOLib類庫項目18-17所示,詳細代碼請參考本書配套光碟片。圖18-17