李菲,陳富強
(三江學院計算機科學與工程學院,南京210012)
軟件性能指標是衡量軟件質量的關鍵因素之一,軟件交付前需要完成大量的性能測試,只有滿足用戶/行業性能要求,才是一個合格的軟件。軟件用戶使用量增大、用戶使用場景的復雜化,對軟件性能的測試也提出了更高的要求[1]。軟件性能測試,尤其是Web 性能測試,普遍采用JMeter 工具,對HTTP 和FTP 服務器進行性能測試,對數據庫進行壓力測試(通過JDBC),最終以報表、文本等多種形式展現測試結果[2]。
[14] Lee B, Gordon P., “Urban Spatial Structure and Economic Growth in US Metropolitan Areas”, Working Paper, 2007.
通過我們對JMeter 測試工具的深入研究發現,新手用戶在使用JMeter 時存在一定難度,主要在JMeter的腳本編寫、參數化設置、運行模式上,需要花費大量的精力去學習。尤其是JMeter 官網上缺少案例介紹,用戶缺少實踐性的指導。同時通過調查發現現有的App Store 和Android 市場都沒有提供相關的JMeter 使用教程。因此,從用戶的使用需求出發,結合Web 性能測試的實際場景,本文研究并實現了性能測試工具JMeter 互動式教程App。
采用SPSS 19.0軟件對數據進行分析處理,計量資料以(均數±標準差)表示,采用t檢驗;計數資料以(n,%)表示,采用χ2檢驗,以P<0.05表示差異具有統計學意義。
情境學習一般運用在教學中,是一種使教學和使用場景密切結合的學習方法。情境認知理論認為,知與行是交互的情境化,通過活動不斷向前發展。情境式學習方法,將具體的場景通過一系列圖片和視頻等創作手段,將特定的場景,呈現在學習者面前,讓他們對所要學習的知識有著感性的體驗,對加強理解有著較好的幫助,使得抽象的概念具體化,復雜的問題簡單化的一種教學方式[3]。通過情境認知將教材與實踐相結合,使用戶更好地參與到學習課程中。
本App 以情境互動為主,在多邊互動的教學氛圍下用戶自主學習,通過場景化教學、實際案例分析、靈活操作、實踐分享等模式,激發教學雙方的主動性和探索性,提高教學效果。在有趣的互動式點擊操作下,新手用戶們可以觀察到每一步的測試過程與相應的測試結果。本App 通過情境學習方式,降低JMeter 測試工具的學習門檻,使新手用戶們更好地了解、學習和使用JMeter 測試工具。
JMeter 是Apache 組織的開放源代碼項目,完成常用的Web 測試、數據庫測試、JMS 測試,JMeter 針對服務器、網絡或其他被測試對象等模擬大量并發負載來進行強度測試,并分析不同壓力負載下的系統整體性能,包括性能的圖形分析、產生相應的統計報表[4]。JMeter 進行性能測試時,通常和Badboy 軟件結合使用。Badboy 是一個開源工具,用C++開發,被設計用于測試和開發復雜的動態應用。Badboy 功能豐富(包括一個捕獲/重播接口,強大的壓力測試支持,詳細的報告、圖形)。用戶在Web 界面上的操作,都可以通過Badboy 進行錄制,并生成JMeter 適配的jmx 腳本,JMeter 運行時調用這些腳本,按照負載量、并發時間、變量參數化等配置,完成模擬用戶Web 界面操作場景的性能測試。
本App 開發平臺為iOS Xcode,開發語言為Object-C,開發技術包括UI 處理技術、TTS 文本語音識別技術。Xcode 是非開源的集成開發環境,用于開發iOS的應用程序;Object-C 開發語言實現App 中各項具體功能,例如頁面框架的搭建,頁面跳轉等;TTS 文本語音識別技術,實現提示文本框中文字轉換成自然語音的輸出;UI 處理技術,實現軟件的界面設計以及人機交互;em/rem 方法解決頁面復雜或是文字足夠多的情況下,字體大小設置工作量巨大的問題,實現Web 頁面自動化響應,兼容主流手機屏幕尺寸。

圖1 App技術路線
通過對本教程的性能測試使用場景和用戶需求分析,App 提供以下功能:
互動點擊的運行邏輯為:用戶點擊“開始”按鈕啟動教程,界面出現藍色標記框→界面自動出現冒泡提示框→用戶點擊“下一步”按鈕→教程切換到下一個知識點圖片→界面出現新的藍色標記框→界面自動出現新的冒泡提示框,依次遍歷相關知識點圖片,當知識點圖片全部播放完畢后,觸發終止操作,“下一步”按鈕失效,系統停止互動點擊功能。“下一步”按鈕的部分實現代碼如下:
(2)智能語音播報與靜音:實現App 提示文本框中文字自動轉換成自然語音并播放;
在應用型本科院校創新創業教育的過程中,企業的支持是必不可少的。因此,應用型本科院校會與地方的龍頭企業或是行業代表性企業建立長期的校企合作關系,定期定向培養專業技能型人才。電子商務課程改革在利用校企合作機制,為學生提供真實的實踐環境,增強實踐教學效果的同時,也將創新創業理念完美地整合到教學過程中。
(3)隱藏/顯示界面進度條:實現App 界面上進度條、返回按鈕、靜音按鈕、幫助按鈕的隱藏/顯示功能,在教程播放過程中,用戶點擊App 界面任意區域,可自動隱藏/顯示進度條、返回按鈕、靜音按鈕、幫助按鈕。
本App 互動教程以一個學生選課Web 系統的性能測試為應用場景,通過形象生動的講解Web 操作錄制、數據庫配置、JMeter 參數設置等操作,引導用戶完成Web 系統性能測試實戰,使用戶理解Web 性能測試的策略和方法,掌握JMeter 工具的使用。本App 的技術路線如圖1 所示。
巖性以古生界的二疊系砂頁巖、泥巖為主,砂頁巖、泥巖往往含蒙特石和高嶺土礦物,該兩種礦物具有見風易風化、失水干裂和遇水膨脹而崩碎的特性,強度低,屬較軟巖,軟化系數0.42~0.95,是所謂的“爛石頭”,詳見表2。基巖單軸抗壓強度:中、細砂巖為9.5~19 MPa,泥質粉砂巖2.5 MPa,受基巖裂隙水和出渣車輛碾壓的影響,洞底巖石軟化、泥化嚴重,影響正常施工。
可就在話要脫口而出的一剎那,她愣住了,因為那個影子就在床頭站著,不驚不怕地站著,與此同時,那被捏過的感覺再次在腦袋里細細回放……大拇指捏住腳背,食指輕輕地在腳心一刮,從趾尖處慢慢滑了出去。那從容不迫的感覺鎮住了她,那個動作是那么的不慌不忙、有恃無恐,甚至從腳趾尖上劃過時都是在慢慢地把玩。突然間易非像是明白了什么,她強行咽下了就要從嗓子里沖出來的責罵,空洞地張著嘴巴,呆呆地看著那個高大的身影從她的床邊走了過去。
本文以寧波市主城區為研究對象,利用SPSS軟件對重分類后的POI數據的街區密度進行主成分分析,然后根據各主成分對原始指標的載荷情況選出能夠表示商業區、文教區、工業區的綜合指標,即以第一主成分作為反映商業區特征的綜合指標,以第二主成分作為反映文教區特征的綜合指標,以第五主成分作為反映工業區特征的綜合指標,對這三個綜合指標進行可視化表達(圖一至圖三),顏色越深代表該綜合指標載荷的相應POI點的數量越高,就越能夠識別相應的功能區。依據可視化表達結果分析寧波市主城區功能區分布格局:

圖2 系統架構圖
互動點擊推進進程是本App 最主要的人機互動方式,也是教程學習的主要方式。互動點擊由藍色標記框和冒泡提示框組成,藍色標記框為教程操作內容,即用戶進行性能測試的詳細步驟,需要用戶掌握的知識點,冒泡提示框為操作步驟的文字解釋,便于用戶理解該知識點。
本App 使用Foundation 框架基礎,采用應用程序工具包AppKit 和用戶界面工具包UIKit,包含了iOS應用程序所需要的所有界面對象。頁面切換功能通過將教程圖片創建一個UIView 或UIButton 的類,實現做點擊的手勢識別即可觸發事件,實現頁面切換。TTS語音識別主要依賴AVSpeechSynthesizer、AVSpeechUtterance、AVSpeechSynthesisVoice 三 個 類 實 現,其 中AVSpeechSynthesisVoice 配置發音,AVSpeechUtterance將文本字符串合成為語音對象提供給AVSpeechSynthesizer 來播放,這三個類需要先加入AVFoundation 框架[5]。本App 的技術架構如圖2 所示。

圖3 App主要界面
JMeter 互動教程App 包括6 套完整的實驗教程,分別是:環境發布、網站發布、修改參數、配置數據庫、Badboy 教程、JMeter 教程。從基本的環境搭建到最終的JMeter 實驗流程,互動教程功能都有所涵蓋,這降低了初學者的學習門檻,能讓初學者更完整、更系統地學習JMeter。圖3 為本App 主要界面。
(1)互動教程內容:測試環境搭建,包括JDK 環境配置、SQL Server 數據庫配置、學生選課Web 網站發布;測試工具的使用,如Badboy 安裝、JMeter 參數設置,這是本App 的重點內容;測試結果分析,JMeter 性能測試執行結果樹展示、JMeter 聚合報告分析;


語音播報實現實時播放教程的文字解釋,能讓文字、聲音、圖像相輔相成,給予用戶更加良好的學習體驗。語音播報基于TTS 語音包開發,將文字導入封裝TTS 語音代碼包,接收代碼包處理好的音頻,最終輸出音頻。TTS 語音播報的難點在于如何正確地在App 中實現TTS 語音包的導入與使用、如何使App 能夠正確且迅速地響應用戶的操作。
語音包導入的方式與代碼如下:

為了使App 能夠正確且迅速地響應用戶的操作,通過按鍵觸發播報語音提示,本系統采用了絕對定位的方式,將按鈕button 調整到圖標的對應位置,用戶在點擊App 的功能性圖標和“下一步”圖標時,TTS 語音系統會直接播報預先設置的語音。
用戶可以在教程界面內調出功能條,功能條默認為隱藏,需要用戶在屏幕上部下劃調出。功能條有四個功能:退出按鈕、進度條、語音功能按鈕、幫助按鈕。其中點擊“返回”按鈕可以返回首頁,拖動進度條可以調整教程的進度,點擊“語音”功能按鈕可以開/關語音朗讀功能(默認關閉),點擊“幫助”按鈕可以跳轉至JMeter 官網。


本文通過研究iOS 開發技術,結合情境學習的模式,開發了一款Web 性能測試工具JMeter 的互動教學App,使新手用戶可以通過App 上簡單有趣的點擊互動操作學會性能測試,掌握JMeter 測試工具的使用。用戶在App 上每一次的點擊互動操作除了有文字的注釋說明之外,還有智能語音播報注釋。通過這些直觀簡單的認知方式學習性能測試方法和JMeter 使用步驟,相信本App 一定可以給新手用戶提供高效的學習體驗。