999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

針對動態鏈接庫的插樁技術研究*

2018-07-09 06:45:04姚幽然
通信技術 2018年6期
關鍵詞:用戶

姚幽然

(1.中國電子科技集團第三十研究所,四川 成都 610041;2.成都國信安信息產業基地有限公司,四川 成都 610041)

0 引 言

軟件并行開發被認為是提高軟件生產效率的最具有潛力的途徑之一。并行開發相對困難,因為團隊成員的工作之間有依賴關系,即軟件組成部分之間的依賴關系[1]。

團隊成員經驗技術、資源占有、接手項目的時間等諸多因素,導致開發進度存在很大差異,而開發模塊之間又存在相互依賴性。例如,程序員A開發的代碼需要依賴程序員B完成的代碼才能進行調試運行,但此時程序員B可能才開始進行需求分析。如何解決以上問題,讓程序員A、程序員B都能按照自己的進度進行開發、調試,打樁或許能夠解決。

實際工作中,存在大量需要快速、有效地對DLL中的代碼進行打樁的情況。本文根據實際需求,提出了如何利用WindowsAPI函數針對DLL進行插樁的技術研究和原理分析,并基于腳本語言建立用例設計與調度的框架。使用腳本技術,大大降低了測試用例編寫的難度,同時提升了效率。

1 插樁技術原理分析

1.1 樁的定義

樁,或稱樁代碼,是指用來代替關聯代碼或者未實現代碼的代碼。打樁的目的主要有隔離、補齊和控制。隔離是指將測試任務從產品項目中分離出來,使之能夠獨立編譯、鏈接,并獨立運行。補齊是指用樁來代替未實現的代碼。控制是指人為設定相關代碼的行為,使之符合測試需求。

1.2 利用WindowsAPI函數進行插樁的原理

一個動態鏈接庫封裝了特別復雜的功能,使用者不必關心它是怎樣實現的。當然,這樣也可以使不同的開發者同時開發產品,提高軟件開發的速度。具體流程圖如圖1所示。

圖1 插樁流程圖

1.2.1 修改內存配置

本方案需要修改內存空間的數據,因此在測試初期需要修改系統的配置,將內存保護模式修改為可寫。

為了使插樁盡可能小地影響系統原貌,在修改前需要先將內存配置信息保存,待測試完畢,用例清理現場時再將內存配置恢復。該配置工作將放置于用例初始化階段完成。

1.2.2 利用WindowsAPI獲取函數地址

本方案中主要利用以下三個API函數。

(1)LoadLibrary[2]函數

LoadLibrary函數主要用于加載動態鏈接庫到內存空間,原型為:

HINSTANCE LoadLibrary(LPCTSTR lpLibFileName)

(2)GetProcAddress函數

GetProcAddress函數返回動態鏈接庫中函數的入口地址,原型為:

(3)FreeLibrary函數

FreeLibrary函數主要用于從內存中移除已加載的動態鏈接庫,原型為:

1.2.3 函數插樁原理

使用API函數獲取被測函數地址后,先將被測函數入口處的內容保存,以備恢復時使用。然后,將其替換為一條Jmp指令,使其能跳轉到用戶自定義的測試函數進行執行。Jmp后跟偏移地址,即被測函數入口到測試函數入口的偏移地址:

為保持原程序的健壯性,測試函數執行完畢后,需要恢復被測函數入口處的代碼,并從被測函數返回。

1.2.4 資源回收

用例執行完畢后,需使用FreeLibrary函數將已加載的DLL卸載,否則會引起內存泄露。

清理工作將放置于用例的清理環境階段,同時內存的配置恢復工作也將放置于此階段進行,第2章節會有詳細講解。

2 基于腳本的用例設計與調度框架實現方案

2.1 基于腳本的用例設計與調度框架建立的必要性

前面介紹了插樁的原理,開發人員基本能夠使用它進行簡單的調試工作,但使用起來并不方便。用戶必須要有高級語言的基礎,對使用者的能力也有一定的要求,且所有的測試用例都是孤立的,只能單個運行,無法實現復雜流程的驗證和自動化運行。

針對以上問題,本文提出可使用當前主流、易學、易用的腳本語言將用例層進行封裝。用戶直接使用腳本語言便可進行腳本的編寫、調試,大大降低了難度。同時,增加用例集的概念,可實現自動化測試。

2.2 基于腳本的用例設計與調度框架實現方案

系統運行時序圖如圖2所示。

圖2 系統運行時序圖

2.2.1 獲取DLL函數信息

本方案底層以VS為例進行介紹。初始階段,用戶利用接口從VS端獲取DLL的函數列表,根據界面呈現的函數列表進行腳本開發,被測函數的選取范圍即為返回的函數列表。

用例的格式可自定義,也可直接使用系統的標準格式,詳見測試床的介紹。

2.2.2 封裝測試床

定義AW(ActionWord),封裝測試床,快速構建腳本框架:

Initial函數內容可包括對測試環境的初始化、對被測對象的測試準備等工作。對內存空間的配置,可放置在初始化階段執行。

Action函數為用例的主要內容,包含被測函數的調用等,可以有多個。

CheckPoint為檢查點函數,主要包括對用例執行情況的檢查,可以有多個,通常與Action配套使用。

一個用例中所有的檢查點都通過,此用例的結果為通過;否則,不通過。測試結果將所有檢查點的執行情況都列出,以供用戶定位問題。

Finish函數內容包括清理測試環境、恢復內存配置等工作。

以上函數內容、執行順序均由用戶自定義。模板可提供統一的格式供用戶快速開發。

2.2.3 腳本的自動化調度運行

用戶界面提供測試集的概念,用戶可針對不同的對象任務創建測試集,制定執行計劃。根據筆者經驗,通常用戶可將測試任務啟動時間設置在晚上。此時,測試環境通常較為空閑,不會影響開發的調試工作。

2.2.4 上層與底層交互

上層腳本逐條經接口層處理后發到VS端執行,執行結果經原路返回腳本端保存,并展示給用戶。

3 結 語

本文闡述了基于WindowsAPI函數進行插樁的原理,方便簡單、靈活、易于實現。另外,上層使用腳本進行封裝,將用戶與底層高級語言隔離,降低了用例開發的難度;上層腳本語言選擇的范圍非常廣泛,開發者可根據實際情況選擇適合的腳本語言進行封裝,非常靈活,有助于實現快速迭代開發、并行測試等應用場景。

[1] 黃柳青,溫昱.面向構件的軟件過程:并行開發與測試[J].中國金融電腦,2007(09):61.HUANG Liu-qing,WEN Yu.Component-oriented Software Process:Parallel Development and Testing[J].Financial Computer of China,2007(09):61.

[2] 張錚,孫寶山,周天立.Windows程序設計[M].第3版.北京:人民郵電出版社,2015.ZHANG zheng,SUN Baoshan, ZhOU Tian-Li.Windows programming[M].Third Edition.BeiJing: People's post and Telecommunications Press,2015.

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 久久人人爽人人爽人人片aV东京热 | 亚洲高清资源| 精品国产Av电影无码久久久| 免费国产高清精品一区在线| 日韩欧美国产另类| 不卡视频国产| AV网站中文| 国产精品lululu在线观看| 女高中生自慰污污网站| 国产鲁鲁视频在线观看| 国产一区二区三区精品欧美日韩| 一级片一区| 久久国产精品夜色| 三级国产在线观看| 在线观看国产精品一区| 国模在线视频一区二区三区| 欧美精品综合视频一区二区| 四虎成人精品在永久免费| 欧美日韩理论| 欧美午夜一区| 亚洲综合专区| 亚洲天堂高清| 91久久偷偷做嫩草影院免费看 | 精品人妻一区二区三区蜜桃AⅤ| 精品国产一二三区| 日本午夜精品一本在线观看| 国产亚洲精品在天天在线麻豆| 99er精品视频| 国产成人禁片在线观看| 日韩在线观看网站| 色综合五月| 日本免费新一区视频| 日本草草视频在线观看| 欧美日韩一区二区在线免费观看| 免费亚洲成人| 亚洲国内精品自在自线官| 久久青草精品一区二区三区| 99久久精品视香蕉蕉| 精品国产电影久久九九| 国产成人精品日本亚洲| 中文无码精品A∨在线观看不卡 | 亚洲品质国产精品无码| 在线国产91| 国产精品永久免费嫩草研究院| 欧美成人怡春院在线激情| 亚洲欧美天堂网| 日韩a级片视频| 天天色天天综合| 日韩高清中文字幕| 人人爽人人爽人人片| 久久伊人久久亚洲综合| 91综合色区亚洲熟妇p| 波多野结衣在线se| 一本色道久久88亚洲综合| 欧美国产日产一区二区| 伊人久久福利中文字幕| 激情在线网| 欧美在线中文字幕| 国产免费怡红院视频| 无码人妻热线精品视频| 久久精品嫩草研究院| 国产一区二区三区免费观看| 色视频国产| 91精品免费久久久| 日本高清在线看免费观看| 日韩精品亚洲精品第一页| 又黄又湿又爽的视频| 欧美激情视频一区| 免费看久久精品99| 亚洲国产亚综合在线区| 九九精品在线观看| 久久精品最新免费国产成人| 成年人国产视频| 欧美a级完整在线观看| 97视频免费看| 久久青草热| 伊人AV天堂| 日韩第一页在线| 国产日韩欧美在线播放| 国产毛片不卡| 蝌蚪国产精品视频第一页| 欧美狠狠干|