色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

PreScan C++自動化測試實戰(zhàn):從場景搭建到CI集成

PreScan C++自動化測試實戰(zhàn):從場景搭建到CI集成 簡介本資源是一套面向自動駕駛算法工程師與仿真測試開發(fā)者的PreScan C自動化測試實戰(zhàn)教程聚焦于通過C腳本高效構建、執(zhí)行與驗證仿真測試用例解決手動調(diào)試耗時長、場景復現(xiàn)難、模塊驗證不系統(tǒng)等工程痛點。資源包共1729個文件以1367個HTML文檔含Doxygen生成的API參考手冊如prescan__api__scenario_8h.html、prescan__api__cameraparameters_8h.html等、190張PNG示意圖及169個JS交互腳本為主完整呈現(xiàn)模塊測試Demo代碼邏輯、API調(diào)用鏈路與測試結果可視化流程壓縮包僅3.67MB輕量易部署。已有1695人學習下載內(nèi)容覆蓋傳感器建模、車輛動力學控制、多模塊協(xié)同觸發(fā)等典型測試場景提供可直接運行的C腳本模板、標準化測試流程定義方法及仿真數(shù)據(jù)解析范例助力開發(fā)者快速掌握PreScan底層接口調(diào)用與自動化測試體系搭建能力。 做自動駕駛仿真測試的朋友應該都有過這種經(jīng)歷在PreScan里手動拖場景、擺放傳感器、調(diào)參數(shù)、點運行然后瞪大眼睛盯著仿真窗口看結果。單跑一兩個場景還好一旦進入版本回歸或者算法迭代階段幾十上百個用例全靠手點那基本就是災難現(xiàn)場。我之前負責過一個AEB系統(tǒng)的功能驗證光場景矩陣就排了三十多組每組還要換車速、換距離、換天氣手動跑完全部流程至少得一周而且中間稍微點錯一步就得推倒重來。后來我把整套流程搬到了C腳本自動化測試上用PreScan搭建場景把待測模塊編譯成C代碼再通過外部C程序統(tǒng)一調(diào)度仿真、注入控制指令、采集傳感器輸出、自動斷言測試結果。跑完三十組場景從一周壓縮到了幾個小時而且全部是無人值守。這篇文章就是想把這條路線完整地拆開講清楚從環(huán)境準備、通信機制到模塊測試Demo、模塊調(diào)用方式再到CI集成和一堆實際踩坑經(jīng)驗。內(nèi)容適合正在做PreScan二次開發(fā)或仿真測試自動化又對C有一定基礎的工程師參考。1. 為什么我最終選了C這條路線做PreScan自動化測試先說結論PreScan本身并不是一個只能靠GUI點點點的工具它背后有一套完整的腳本化和代碼化能力。只是國內(nèi)很多教程停留在“怎么搭場景、怎么出動畫”的層面很少有人把“用代碼驅動PreScan做測試”這條路走通。我當年也是對比了好幾條路才定下來用C這里把當時的技術選型邏輯說清楚。1.1 三條主流路線的對比第一條路線是MATLAB/Simulink腳本。PreScan和MATLAB/Simulink是深度綁定的場景里的傳感器、車輛動力學、V2X通信都通過Simulink模型流轉。很多測試腳本也是用.m文件寫的好處是跟模型貼合緊密改參數(shù)方便壞處也明顯跑自動化測試的機器必須裝完整版MATLAB和SimulinkLicense成本高而且.m腳本跑起來偏慢模型大了之后每一步都在跟MATLAB解釋器打交道。第二條路線是Python API。PreScan在較新版本里提供了Python接口可以加載實驗、改場景參數(shù)、啟動仿真。對于快速寫測試腳本來說Python確實舒服團隊里會的人也更多。但它的問題在于一旦你的測試對象是編譯后的C模型比如從Simulink生成的代碼或者你要跟其他C測試框架、CI系統(tǒng)做深度集成Python API這層就有點隔靴搔癢最后還得回到C/C層去處理。第三條路線就是C編譯模型加外部測試程序。PreScan 8.x之后的版本支持把Simulink模型編譯成C/C代碼生成獨立可執(zhí)行的仿真程序。你的場景、傳感器模型、控制算法全都編譯進去了運行時可以完全不依賴MATLAB環(huán)境。外部再寫一個C測試控制端通過UDP、TCP或者共享內(nèi)存跟仿真程序通信該發(fā)指令發(fā)指令該收數(shù)據(jù)收數(shù)據(jù)該斷言斷言。這條路的優(yōu)點是性能好、可部署性極強、跟Jenkins這類CI系統(tǒng)打通非常順而且代碼風格跟量產(chǎn)車上的C代碼鏈路是一致的你測的東西和最終上車的東西之間鴻溝最小。1.2 我選擇C的幾個實際考量性能只是其中一個因素真正讓我定下來的是下面這幾點第一回歸測試的體量根本不支持每次全量啟動MATLAB。我們的場景庫大概有四五百條用例如果每條用例都從MATLAB冷啟動光啟動就吃掉大部分時間。編譯成C exe之后每條用例的啟動時間可以壓到幾秒鐘而且是脫離GUI跑的穩(wěn)定性高很多。第二測試斷言邏輯需要跨語言復用。我們團隊有從感知到規(guī)控多個模塊的測試大家的日志格式、斷言標準、上報方式都是C統(tǒng)一的測試端也用C最省事。你說用Python寫斷言也行但最終嵌入到已有的C測試框架里還是有轉換成本。第三也是最重要的一點無人值守時GUI模式根本不可靠。仿真跑著跑著彈出一個錯誤對話框整個任務掛在那里等人工點確定這在CI里就是災難。C編譯產(chǎn)物配合命令行參數(shù)和靜默模式是完全不需要界面交互的天然適合自動化。當然這條路的前期學習曲線確實比MATLAB腳本要高不少你要同時熟悉PreScan的編譯流程、Visual Studio的工程配置、還有進程間通信。但整套東西一旦搭好收益是幾何級別的后面所有場景都可以往這個框架里疊。2. 環(huán)境準備Visual Studio版本匹配和C Runtime坑PreScan用C做自動化測試第一步要過的不是代碼關而是環(huán)境關。這個環(huán)境坑攔住了不少人而且網(wǎng)上資料相對零散我在這里把關鍵點集中講一遍。2.1 版本匹配是第一優(yōu)先級PreScan每個大版本對Visual Studio的版本要求是明確的不能隨便拿一個VS就開干。比如PreScan 8.x系列不同小版本對應的VS從2015到2017、2019都有PreScan 2020之后對VS2019支持更完整。我當前主力環(huán)境是PreScan 2021.1配Visual Studio 2019社區(qū)版這個組合在C編譯和仿真運行時表現(xiàn)最穩(wěn)定。版本不匹配的典型癥狀是編譯報一堆莫名其妙的錯誤或者編譯產(chǎn)物在另外一臺機器上運行時提示找不到vcruntime140.dll、msvcp140.dll。這類問題十有八九是VS工具集版本和PreScan編譯產(chǎn)物依賴的Runtime不一致導致的。建議安裝順序先裝Visual Studio確認C桌面開發(fā)工作負載和對應Windows SDK都裝好再裝PreScan。PreScan安裝過程中會檢測VS環(huán)境如果檢測不到說明你的VS版本不對或者組件不完整。提示Visual Studio社區(qū)版足夠用不需要企業(yè)版。重點是把“使用C的桌面開發(fā)”工作負載選上里面有MSBuild、Windows SDK、標準庫頭文件這些核心組件。2.2 Visual C Redistributable的隱性依賴PreScan編譯出來的exe在部署到其他測試機器上時目標機器上必須裝對應版本的Visual C Redistributable。我做自動化測試時會準備一臺干凈的“跑批機器”上面不裝VS只裝Runtime。曾經(jīng)在這臺機器上跑編譯出來的仿真程序啟動就報“0xc000007b”錯誤查了半天是x86和x64的Runtime版本混了。后來我統(tǒng)一裝了VS2015-2022合并版Redistributable x64微軟官方提供聚合包才徹底解決。這條經(jīng)驗也適用于團隊內(nèi)部共享測試機。凡是跑PreScan C自動化測試的機器第一步就是確認Runtime版本其次才是確認PreScan裝沒裝。2.3 工具鏈進PATH換臺機器就“命令找不到”的坑如果你用命令行方式啟動仿真程序自動化測試必須走命令行相關工具鏈必須加進系統(tǒng)的PATH環(huán)境變量。這個坑我以前沒注意換了一臺新機器部署腳本后腳本里調(diào)用某個DLL或者exe時系統(tǒng)提示“無法識別”跟網(wǎng)上常說的“npm無法識別為cmdlet、函數(shù)、腳本文件或可運行程序的名稱”是一個道理——不是工具不存在是路徑?jīng)]進PATH或者當前終端會話沒有重新加載環(huán)境變量。我的做法是在測試機上建一個prescan_env.bat里面把所有需要的路徑一次性設置好每次跑CI任務前先調(diào)用它set PRESCAN_HOMEC:\Program Files\PreScan set VS_MSBUILDC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe set PATH%PRESCAN_HOME%;%VS_MSBUILD%;%PATH%這樣一來無論是Jenkins還是手動跑批每次都能拿到干凈的構建環(huán)境不會因為某一次手動配置遺漏導致整個流水線掛掉。2.4 VS工程的核心配置項當你開始新建C測試工程有幾個配置項需要特別注意平臺選x64PreScan編譯產(chǎn)物的位數(shù)必須跟測試程序一致32位和64位混用會導致內(nèi)存映射失敗附加包含目錄要指向PreScan安裝目錄下的Application和Data相關路徑因為里面有些頭文件比如傳感器數(shù)據(jù)結構在編譯時要用附加庫目錄指向PreScan安裝目錄下的庫文件位置如果你的測試程序要調(diào)PreScan的API比如修改場景參數(shù)還需要把對應的.lib加入鏈接器輸入。這些配置在不同版本里路徑稍有差異核心原則是以你安裝的PreScan目錄下的實際頭文件和庫文件路徑為準不要在VS里寫死某個舊版本路徑否則升級PreScan后整個工程編譯不過去。3. PreScan與C之間的信息通道TCP、UDP和共享內(nèi)存怎么選環(huán)境搭好之后接下來要解決的是數(shù)據(jù)怎么從PreScan仿真程序里出來進到我們的C測試程序里。這是整個自動化測試體系的地基。3.1 PreScan的數(shù)據(jù)出口PreScan場景里的攝像頭、激光雷達、毫米波雷達、GPS/IMU這些傳感器數(shù)據(jù)都會進到Simulink模型里。如果你想讓外部C程序讀取這些數(shù)據(jù)通常有兩條路一條是在Simulink模型里放置PreScan自帶的外部通信模塊比如TCP/UDP Sender把傳感器原始輸出或后處理結果直接發(fā)到指定端口另一條是通過PreScan與Simulink之間的共享內(nèi)存接口把數(shù)據(jù)寫到一塊約定的內(nèi)存區(qū)C程序直接映射這塊內(nèi)存來讀。我在項目里一般都走外部通信模塊這條路因為它直觀、可控而且天然支持跨機器部署比如一臺機器跑仿真另一臺機器跑測試控制端。共享內(nèi)存在單機高性能場景下效率極高但跨機器就無能為力了。3.2 三種通道的對比和選型邏輯通道類型實時性跨機器支持復雜度適合場景UDP高但有丟包風險支持低傳感器數(shù)據(jù)量大的廣播場景單機或局域網(wǎng)內(nèi)跑批TCP中可靠傳輸支持中控制指令、調(diào)試日志、需要對包做可靠校驗的場景共享內(nèi)存最高納秒級不支持中單機跑大規(guī)模傳感器數(shù)據(jù)如激光雷達點云時的首選我慣用的組合是傳感器數(shù)據(jù)走UDP或共享內(nèi)存控制指令走TCP。原因很簡單傳感器數(shù)據(jù)量往往很大激光雷達一幀幾千個點攝像頭一幀幾十萬字節(jié)用TCP保證可靠性但會拖累吞吐控制指令量小但絕對不能丟所以走TCP讓協(xié)議棧來保證可靠性。3.3 數(shù)據(jù)格式設計字節(jié)對齊和字節(jié)序的教訓通信通道定了之后數(shù)據(jù)格式是另一個大坑。PreScan的輸出是float或double數(shù)組比如雷達輸出目標距離、相對速度、方位角攝像頭輸出車道線系數(shù)IMU輸出加速度和角速度。C這邊要把這些值映射成結構體。這里有一個很多人會踩的坑結構體字節(jié)對齊。默認情況下C編譯器會在結構體成員之間插入填充字節(jié)如果PreScan發(fā)送端是多字節(jié)連續(xù)buffer而你的C接收端是帶對齊的結構體兩邊對不上數(shù)據(jù)解析就是錯亂的。我曾經(jīng)因為漏了#pragma pack雷達目標的速度值讀出來全是不合理數(shù)字排查了半天才意識到是結構體對齊問題。所以我在定義通信協(xié)議結構體時一律這么做#pragma pack(push, 1) struct RadarTarget { float range; // 目標距離單位米 float velocity; // 相對速度單位m/s float azimuth; // 方位角單位弧度 int targetId; // 目標ID unsigned char status; // 狀態(tài)標志位 }; #pragma pack(pop)字節(jié)序問題相對少見因為PreScan和C測試程序通常跑在同架構的Windows機器上只要不跨平臺都不會遇到大小端不一致的問題。但如果你的場景里有嵌入式設備或者Linux機器就一定記得在協(xié)議里寫明字節(jié)序并加一個magic number做校驗。3.4 一個簡單的UDP接收端示例下面這是我在測試程序里實際用過的UDP接收代碼骨架主要負責接收PreScan發(fā)出的仿真狀態(tài)和傳感器數(shù)據(jù)#include winsock2.h #pragma comment(lib, ws2_32.lib) #include cstdio #include cstring #pragma pack(push, 1) struct SimStatus { double simTime; // 仿真時間單位秒 float egoSpeed; // 自車速度 float egoSteerAngle; // 自車轉向角 int frameId; // 幀序號 }; #pragma pack(pop) int main() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), wsaData); SOCKET sock socket(AF_INET, SOCK_DGRAM, 0); sockaddr_in localAddr{}; localAddr.sin_family AF_INET; localAddr.sin_port htons(5600); localAddr.sin_addr.s_addr htonl(INADDR_ANY); bind(sock, (sockaddr*)localAddr, sizeof(localAddr)); char buf[256]; SimStatus status; while (true) { int len recvfrom(sock, buf, sizeof(buf), 0, nullptr, nullptr); if (len sizeof(SimStatus)) { memcpy(status, buf, sizeof(SimStatus)); printf(t%.3f v%.2f steer%.4f frame%d\n, status.simTime, status.egoSpeed, status.egoSteerAngle, status.frameId); } } return 0; }這個示例的核心價值不在于代碼本身而在于演示了“PreScan發(fā)送、C接收”這種解耦關系。測試程序只需要關心端口號和結構體定義完全不需要理解PreScan內(nèi)部怎么跑這是自動化測試可以穩(wěn)定運行的前提。4. 模塊測試Demo搭一個車道保持模塊的C測試用例環(huán)境通了、通信方式定了現(xiàn)在進入正題怎么測一個具體模塊。我拿車道保持Lane Keeping Assist模塊舉例演示從PreScan場景到C測試用例的完整鏈路。4.1 場景側的準備在PreScan GUI里搭一個直道場景道路畫三條車道線自車起始位置在中間車道初始橫向偏移給一點比如0.3米這樣LKA模塊有糾偏的必要。車速設成80km/h仿真時長15秒。傳感器用前視攝像頭放在車頭擋風玻璃位置檢測車道線輸出車道橫向偏移量、車道曲率和航向角偏差。這些量會進Simulink模型。在Simulink模型里把攝像頭輸出接到一個LKA控制算法可以是PreScan自帶的模板也可以是你自己開發(fā)的Simulink模塊算法輸出目標方向盤轉角接到車輛的轉向執(zhí)行器。為了讓C測試程序能控制測試流程我在模型里加了一個外部接口輸入端口外部控制允許標志位1表示允許LKA介入輸出端口LKA激活狀態(tài)、目標轉角、實際轉角、橫向偏移量。這樣就把待測模塊的邊界定義清楚了輸入端是外部使能信號輸出端是模塊行為和效果指標。4.2 編譯成C仿真程序Simulink模型擺好后在PreScan里選擇編譯生成C代碼。這個過程PreScan會調(diào)用VS的編譯器把整個模型編譯成一個可執(zhí)行的仿真程序或者動態(tài)庫。編譯時間取決于模型復雜度這個例子大約兩分鐘。編譯完成后你會得到一個帶命令行參數(shù)的exe。啟動時指定實驗文件名ExSimulationRun.exe -experiment LaneKeepingDemo.pb后面可以跟-silent這種參數(shù)表示靜默運行不彈GUI。我從這以后所有自動化測試都默認加靜默模式杜絕了彈窗掛任務的問題。4.3 C測試控制程序的完整結構測試控制程序要做的事情很清晰啟動仿真進程、建立通信、按測試步驟注入指令、讀取狀態(tài)并斷言、最后結束仿真生成報告。核心代碼框架大致是這樣// LKA_module_test.cpp #include windows.h #include tlhelp32.h #include winsock2.h #pragma comment(lib, ws2_32.lib) #include cstdio #include thread #include chrono // 與PreScan模型中的外部接口定義保持一致 #pragma pack(push, 1) struct ModuleInput { int enableFlag; // 1允許LKA介入 int reserved[7]; }; struct ModuleOutput { double simTime; float lkaActive; // LKA是否激活 float targetSteer; // 目標轉角 float actualSteer; // 實際轉角 float lateralOffset; // 橫向偏移量 int frameId; }; #pragma pack(pop) int main() { // 1. 啟動PreScan仿真進程 STARTUPINFO si{sizeof(si)}; PROCESS_INFORMATION pi; char cmdLine[] SimulationRun.exe -experiment LaneKeepingDemo.pb -silent; if (!CreateProcess(nullptr, cmdLine, nullptr, nullptr, FALSE, 0, nullptr, nullptr, si, pi)) { printf(Failed to start Prescan simulation.\n); return -1; } CloseHandle(pi.hThread); // 2. 建立TCP連接控制通道 // 這里用socket連接仿真程序的9999端口代碼略 // 3. 等待仿真就緒讀取初始輸出 bool simReady false; for (int i 0; i 50; i) { // 嘗試讀取ModuleOutput若simTime 0則認為就緒 // 如果讀到有效數(shù)據(jù)simReady true; break; std::this_thread::sleep_for(std::chrono::milliseconds(200)); } if (!simReady) { printf(Simulation not ready in time.\n); TerminateProcess(pi.hProcess, -1); return -2; } // 4. 注入使能信號讓LKA開始工作 ModuleInput input{}; input.enableFlag 1; // 發(fā)送到仿真程序代碼略 // 5. 持續(xù)監(jiān)控輸出執(zhí)行斷言 bool passed true; for (int frame 0; frame 750; frame) { // 15s * 50Hz ModuleOutput out{}; // 從TCP讀取輸出數(shù)據(jù)代碼略 // 橫向偏移量應逐漸收斂到0附近 if (frame 100 frame 700) { if (out.lateralOffset 0.5f || out.lateralOffset -0.5f) { passed false; printf(FAIL at frame %d, lateralOffset %.3f\n, frame, out.lateralOffset); break; } } std::this_thread::sleep_for(std::chrono::milliseconds(20)); } // 6. 清理并輸出結果 input.enableFlag 0; // 發(fā)送停止信號 TerminateProcess(pi.hProcess, -1); printf(Test %s\n, passed ? PASS : FAIL); return passed ? 0 : 1; }代碼不算復雜但有幾個關鍵點值得展開說。4.4 斷言設計別只盯著單個數(shù)據(jù)點初學者寫斷言最容易犯的錯是在某個時間點采集一個值如果小于閾值就算通過。這在仿真測試里很不靠譜因為傳感器有噪聲控制算法的響應有動態(tài)過程單個點的瞬時值可能毫無意義。我寫斷言的思路是分三層第一層模塊行為斷言。比如LKA被激活后目標轉角不能突跳超過某個限值比如0.3弧度這能抓到控制指令抖振和異常突變。第二層控制效果斷言。比如橫向偏移量應該在3秒內(nèi)收斂到±0.3米以內(nèi)而不是一開始就必須小于某個值。這稱為“時間窗口閾值”的斷言方式更能反映控制系統(tǒng)收斂性。第三層穩(wěn)定性斷言。在最后5秒內(nèi)橫向偏移量的方差不能超過某個值避免出現(xiàn)持續(xù)震蕩卻恰好沒越界的情況。如果只做第一層和第二層某些不穩(wěn)的模塊也可能蒙混過關把第三層加進去整個測試的嚴謹度就上來了。5. 模塊調(diào)用教程共享內(nèi)存與單一實例管理器標題里還特別提到了“模塊調(diào)用教程”這個“模塊調(diào)用”在PreScan的語境里其實包含兩種含義我把兩種都講清楚。5.1 含義一C測試程序調(diào)用PreScan編譯產(chǎn)物的API這是最常見的一種也是我在前一章展示的方式PreScan把Simulink模型編譯成exe或DLLC測試程序通過進程間通信UDP/TCP/共享內(nèi)存調(diào)用它。這種調(diào)用的本質(zhì)是外部程序跟仿真程序之間的數(shù)據(jù)交換核心是接口協(xié)議要穩(wěn)定。這里有個深坑如果你每次測試都啟動一個新的PreScan仿真進程啟動開銷是很大的。一個復雜場景從進程創(chuàng)建到仿真就緒可能要10到30秒。如果跑幾百個用例光啟動就浪費大量的時間。所以模塊調(diào)用的一個重要設計模式是“復用常駐進程”啟動一個仿真進程后不要急著銷毀而是讓它運行在一個待命場景里測試程序通過命令通道給它下發(fā)場景切換指令、參數(shù)修改指令一個仿真進程服務多個測試用例每個用例之間只做場景重置和數(shù)據(jù)清空。這類似于你在服務器端開了一個worker進程客戶端不斷發(fā)任務給它處理而不是來一個任務就fork一個新進程。PreScan社區(qū)把這種機制叫做單一實例管理器Single Instance Manager實際用起來非常簡單在PreScan編譯產(chǎn)物的啟動參數(shù)里加一個-single它就會監(jiān)聽指定的端口接收后續(xù)的測試請求。5.2 含義二把自定義C模塊掛載到PreScan模型中另一種“模塊調(diào)用”是指你自己寫了一個C算法模塊想把它作為PreScan模型的一部分參與仿真而不是通過外部通信端口跟PreScan交互。這種情況在PreScan里的標準做法是S-Function。你在Simulink里添加S-Function模塊通過mex命令編譯C源碼生成對應的可執(zhí)行文件然后在PreScan模型里實例化它。編譯后的S-Function會和PreScan傳感器模型、車輛動力學模型一起參與整個仿真鏈路數(shù)據(jù)走的是Simulink內(nèi)部信號線不是外部網(wǎng)絡。S-Function方法適合把已有C算法嵌入到“仿真在環(huán)”的調(diào)試過程中但如果你只是想在外部控制PreScan跑測試不必走這條路。我自己的體會是S-Function更適合算法開發(fā)階段的快速驗證而外部C測試程序更適合系統(tǒng)級的自動化回歸兩者最好不要混在一起否則調(diào)試起來定位問題會很別扭。5.3 共享內(nèi)存調(diào)用的完整實現(xiàn)片段對于性能要求極高的模塊調(diào)用比如激光雷達點云處理UDP和TCP都不夠看共享內(nèi)存是唯一靠譜的選擇。我給出Windows下共享內(nèi)存的典型實現(xiàn)這段代碼也可以直接復用到你的測試框架里。服務端PreScan側通常由PreScan的共享內(nèi)存發(fā)送模塊完成// 創(chuàng)建共享內(nèi)存區(qū) HANDLE hMapFile CreateFileMapping( INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(LidarFrame), LPrescanLidarMemory); LPVOID pBuf MapViewOfFile( hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); auto* pLidar static_castLidarFrame*(pBuf); // PreScan側持續(xù)寫入點云數(shù)據(jù)客戶端C測試程序側HANDLE hMapFile OpenFileMapping( FILE_MAP_ALL_ACCESS, FALSE, LPrescanLidarMemory); if (hMapFile nullptr) { printf(OpenFileMapping failed, error%d\n, GetLastError()); return -1; } LPVOID pBuf MapViewOfFile( hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); auto* pLidar static_castLidarFrame*(pBuf); // 循環(huán)讀取點云數(shù)據(jù) for (int i 0; i pLidar-pointCount; i) { // 處理pLidar-points[i] }共享內(nèi)存需要注意兩個細節(jié)一是進程同步不能一邊寫一邊讀最好用互斥體或事件來協(xié)調(diào)讀寫時機二是句柄釋放每次測試結束后要調(diào)用UnmapViewOfFile和CloseHandle否則句柄泄漏多了之后長時間跑批會出現(xiàn)內(nèi)存映射失敗表現(xiàn)為“OpenFileMapping失敗錯誤碼5拒絕訪問”或者“錯誤碼8存儲空間不足”。5.4 為什么不要讓模塊調(diào)用變成“每次新建進程”我在項目里吃過這個虧。早期為了圖省事每條測試用例都用CreateProcess啟動一個新的PreScan仿真進程跑完立即殺掉。結果一天跑下來機器的句柄數(shù)和內(nèi)存碎片暴漲從下午開始就頻繁出現(xiàn)仿真啟動失敗或者共享內(nèi)存無法創(chuàng)建。后來我把架構改成“常駐仿真進程端口分發(fā)測試請求”的模式一組用例只啟動一個仿真進程用例之間通過協(xié)議切換場景問題直接消失。這個經(jīng)驗很重要PreScan仿真程序雖然支持命令行啟動但它不是為“一秒啟動、一秒銷毀”的短生命周期場景設計的。它的資源初始化包括加載場景、初始化傳感器模型、分配顯存、初始化通信端口這些都需要時間。設計自動化測試框架時把“仿真進程生命周期”和“測試用例生命周期”徹底解耦是保持長時間穩(wěn)定運行的關鍵。6. 自動化測試框架從單條用例到批量回歸和CI集成單個測試用例跑通之后接下來就是把它擴展成一套能支撐幾百條用例的自動化框架。這一步做得不好前面所有功夫都會白費。6.1 測試用例的標準化流程我定義了一套標準流程每條用例都必須遵循preStart準備場景文件、參數(shù)配置檢查端口和共享內(nèi)存是否可用start啟動仿真進程等待就緒信號run執(zhí)行測試步驟持續(xù)采集數(shù)據(jù)check根據(jù)斷言規(guī)則判定pass/failstop關閉仿真保存日志和現(xiàn)場數(shù)據(jù)record把結果寫入?yún)R總報告。整套流程用Python寫了一個調(diào)度器因為Python在文件處理、流程編排和Jenkins集成方面確實順手。調(diào)度器的邏輯很簡單遍歷用例清單對每條用例調(diào)用對應的C測試exe傳參指定場景和用例ID然后檢查返回值。測試exe返回0表示通過非0表示失敗調(diào)度器只負責記錄和匯總。我不建議把斷言邏輯寫在調(diào)度器里這會讓責任邊界模糊排查問題的時候會互相甩鍋。6.2 日志規(guī)范讓失敗可追溯自動化測試最讓人頭疼的是“這條用例失敗了但為什么失敗”如果日志里什么都沒有那就只能重新手動跑一遍場景那自動化就失去了意義。我在設計日志時定了幾個硬性要求每條用例一個獨立目錄按時間和用例ID命名仿真程序的控制臺輸出必須重定向到日志文件C測試程序的每個關鍵步驟都要打點包括啟動時間、就緒時間、注入指令時間、斷言判定時間失敗時必須把當時的輸入數(shù)據(jù)和輸出數(shù)據(jù)快照保存下來。日志格式我用JSON每行一個事件方便后續(xù)用腳本做統(tǒng)計分析{time: 12.345, event: assert, module: LKA, param: lateralOffset, value: 0.312, threshold: 0.5, pass: true} {time: 13.201, event: assert, module: LKA, param: lateralOffset, value: 0.537, threshold: 0.5, pass: false}這樣的日志出問題之后直接拉出來看能快速定位是哪個時刻哪個參數(shù)越界不需要開GUI復現(xiàn)。6.3 靜默模式與超時看門狗前面提到過非預期彈窗會導致自動化測試掛死。除了強制使用靜默模式之外我還給調(diào)度器加了一個超時看門狗如果某條用例運行時間超過設定上限通常是正常耗時的1.5倍調(diào)度器直接殺掉對應進程把這條用例標記為fail然后繼續(xù)跑下一條。看門狗的粒度要分兩層第一層是單條用例超時第二層是總跑批時間超時。有一次我跑一個大型場景矩陣某條特殊場景導致仿真卡死如果沒有超時看門狗整個流水線會卡在那里直到Jenkins的全局超時把它殺掉白白浪費幾個小時。加了看門狗之后單條用例卡住只影響這一條流水線整體的“不中斷能力”才是自動化測試能不能真正落地的關鍵。6.4 Jenkins集成端到端的持續(xù)回歸CI集成的最終目標是代碼提交后自動觸發(fā)PreScan回歸測試跑完出報告結果回傳到開發(fā)人員。我用的Jenkins流水線大致是這樣pipeline { agent { label prescan-win } stages { stage(Checkout) { steps { checkout scm } } stage(Build C Test) { steps { bat %VS_MSBUILD% prescan_test.sln /p:ConfigurationRelease /p:Platformx64 } } stage(Run PreScan Tests) { steps { bat python run_prescan_tests.py --configtest_suite.json } } stage(Publish Report) { steps { publishHTML(target: [ allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: test_output, reportFiles: index.html, reportName: PreScan Test Report ]) } } } post { always { junit test_output/*.xml } } }核心點是編譯C測試程序用MSBuild跑測試用Python調(diào)度器報告用HTML或JUnit XML格式。這樣CI系統(tǒng)就能把測試趨勢畫出來哪次提交讓某個場景掛了一眼就能看出來。6.5 結果報告從“跑完了”到“看得懂”測試報告并不是一個簡單pass/fail列表就夠的。我見過很多團隊CI跑完出一堆紅色但項目負責人根本不知道這意味著什么因為沒有上下文。我的做法是在測試用例的配置里加元信息包括需求編號、模塊負責人、嚴重等級。報告里不僅顯示pass/fail還要顯示“失敗用例屬于哪個模塊、影響的是哪個需求”。后來我還加了一個趨勢圖同一個用例在最近30次流水線里的通過率。這個趨勢圖幫助團隊發(fā)現(xiàn)了很多“偶發(fā)問題”——有些用例不是必掛而是隔三差五掛一次往往指向傳感器噪聲閾值設置不合理或者場景初始化不干凈。沒有趨勢圖這種偶發(fā)問題很容易被當作“環(huán)境抖動”忽略掉。7. 踩坑經(jīng)驗PreScan C自動化測試中真實遇到的高頻問題最后把我在這個領域里踩過的最有價值的坑集中列一遍。這些問題沒有一個在官方文檔里寫得很清楚但實際項目里幾乎都會遇到。7.1 VS版本不一致導致的DLL地獄前面提過這是第一位的老大難。PreScan編譯的仿真程序、你自己寫的C測試程序、還有第三方庫如果三者的VS工具集版本不一致最終結果就是運行時報找不到DLL或者報錯信息含糊不清。最氣人的是同樣的代碼在開發(fā)機上跑得好好的換到測試機就掛了。我的解決方案是項目里所有C工程統(tǒng)一用同一個VS版本編譯并且把版本信息寫進構建腳本測試機上提前裝Visual C Redistributable聚合包每次換新開發(fā)機時先在干凈環(huán)境里做一次完整編譯和跑批驗證不要等到部署那天才暴露問題。7.2 PreScan仿真啟動慢超時誤報很多場景的仿真啟動時間跟機器負載強相關第一次冷啟動可能8秒但同一臺機器在CI高峰期可能20秒。如果測試程序里寫死了“10秒內(nèi)必須就緒”那高峰期就會大量誤報fail。我的處理方式是啟動等待時間設成正常值的3倍同時采用“輪詢物理時間”而不是“固定sleep”的方式。每200毫秒探測一次仿真是否就緒最多等待90秒這樣既不會誤報也不會因為過度等待拖慢整體節(jié)奏。7.3 共享內(nèi)存句柄泄漏長時間跑批后測試程序突然出現(xiàn)共享內(nèi)存訪問失敗基本都是句柄泄漏。Windows的句柄數(shù)量不是無限的如果你每條用例都OpenFileMapping但從來CloseHandle跑幾百條用例之后必然爆掉。解決辦法是每次MapViewOfFile之后必須在作用域結束前UnmapViewOfFile和CloseHandle用RAII封裝讓資源生命周期管理交給C的析構函數(shù)內(nèi)部自檢機制每隔100條用例打印一次當前句柄數(shù)如果異常增長會立刻報警。7.4 端口被占用UDP收不到數(shù)據(jù)PreScan仿真程序每次啟動都會綁定固定的UDP端口如果上一個仿真進程沒有被完全殺掉端口還處于占用狀態(tài)新啟動的仿真程序就會綁定失敗表現(xiàn)是“UDP收不到任何數(shù)據(jù)”而日志里什么都沒有。我后來在啟動腳本里加了一步啟動仿真前先檢查端口占用情況如果有殘留進程就強制殺掉。netstat -ano | findstr :5600 taskkill /F /PID pid同時給仿真程序的進程名統(tǒng)一命名調(diào)度器在啟動前會把上一個殘留實例清掉避免因為異常退出導致進程殘留。7.5 結構體對齊、字節(jié)序和字段類型不匹配通信協(xié)議里結構體對齊不匹配是C測試里比較隱蔽的坑表面上看數(shù)據(jù)能收到但數(shù)值不對。除了加#pragma pack之外我后來更推薦的做法是不光定義結構體還定義序列化和反序列化函數(shù)并在函數(shù)里逐個字段賦值而不是直接memcpy。這樣做的優(yōu)勢是即使發(fā)送端和接收端的結構體定義有微小差異比如PreScan版本升級后某個字段類型變了也能在反序列化階段做字段校驗而不是把整個內(nèi)存塊硬懟過去導致數(shù)據(jù)全亂。7.6 斷言閾值定太緊隨機噪聲下偶發(fā)fail這個問題在傳感器數(shù)據(jù)測試里特別常見。攝像頭輸出車道線系數(shù)時光照和路面紋理變化會導致輕微噪聲如果你把橫向偏移量的容忍閾值設成±0.1米而在仿真里真實情況下該值在±0.15米波動那這條用例就會隔三差五失敗看起來像“玄學”。處理方式是在設計斷言前先做一輪噪聲摸底跑二十次相同的用例統(tǒng)計每個關鍵指標的正常波動范圍然后在這個范圍基礎上加一定余量作為斷言閾值。同時把閾值配置化不要寫死在代碼里方便在測試報告里看到閾值調(diào)整的歷史。7.7 GUI模式彈窗掛死最后再強調(diào)一次自動化測試必須使用靜默模式。PreScan的GUI模式在運行時可能彈出各種提示窗口可能是資源加載失敗也可能是某個數(shù)據(jù)文件缺失任何彈窗都會導致任務永遠卡在等待點擊狀態(tài)。用靜默模式不僅避免了這個問題還節(jié)省了渲染資源提升了測試速度。如果某些場景確實需要GUI輔助排查我建議只開一條單獨的手動調(diào)試流水線和自動化回歸流水線徹底分開。避免為了“偶爾的方便”讓整個自動化體系變得脆弱?;乜凑麄€過程PreScan的C自動化測試之所以值得投入不是因為它能替代人工場景搭建場景本身還是要在GUI里搭而是因為它把“反復執(zhí)行同一套驗證”這件事徹底自動化了。環(huán)境部分一次配好通信協(xié)議一次定好剩下的場景矩陣、回歸測試、CI集成全都是可持續(xù)積累的資產(chǎn)。對我來說最大的收獲在于團隊從“擔心改動會不會引入回歸”變成了“每次提交都有幾百條用例在自動守護”這種確定感是手動測試永遠給不了的。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产成人精品亚洲日本| 人人操人人摸人人看人人干| 欧美亚洲第一页| 久久婷婷五月天| 色婷婷久久综合超碰| 麻豆a'v电影| 国产中出内射一区二区| 91碰碰| 农村妇女精品一区二区| 强奸乱伦 亚洲一区| 亚洲精品美女久久久久久久久| 久久嫩草国产成人一区| 麻豆天美91| 五月丁香六月激情综合| 麻豆天美AV传媒第一页| 免费操逼视频下载| 天天草AV| 国产亚洲精品av一区| 欧美精品第四五页中文字幕在线观看| 亚洲在线91| 国产精品岛国片在线观看| 狠色婷婷久久一区二区三区_| 欧美综合亚洲综合| 精品一二三区久久AAA片| 久久久久921| 人人干黄色| 亚洲淫乱骚妇AV| 午夜福利1区2区3区| 成人婷婷丁香| 午夜啪啪片| 97香蕉人人乳| 无套内射人妻在线播放| 精品9999| 欧美性猛交美女自慰91| 国产乱伦性爱区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 婷婷五月天激情网| 综合网97| 亚洲 欧美 手机在线观看| 今日头条成人一区二区三区四虎精品| 加勒比在线观看一区二区| 国产白嫩精品久久| 成人三一级一片aaa| 青青11操操操操操操操操| 九九九九精品精| 午夜精品一区二区三区三上悠亚| 日本一级特级毛片视频| 免费久久9999| 丰满的三级少妇欧美久久久| 伊香蕉综合久久久久久久噜噜噜| 91中文精品日韩欧美在线| 妇女性内射冈站HDWWWCOM| 精品国产乱码久久久久久影片| 1769成人国产精品视频| 夜色97| 妺妺跟我一起洗澡没忍住| 97手机日韩| 亚洲色图尤物视频| 99热精品在线| 一区二区播放| 91bbbbbb| 亚洲综合色男人网| 麻豆av一区二区| 亚州黄站| 精品欧美老熟女一二区| 欧美精品丝袜久久久中文字幕| 1240青青草一区二区三区视频天爱| 国产亚洲国产超碰| 自偷自拍的亚洲视频| 美女视频尤物网在线看| 天天日日舔舔| 亚洲婷婷丁香在线| 久肏视频字幕| 夜夜嗨一区二区三区直播内容| 天天爽天天| 可免费观看的av毛片中日美韩| 美欧老女人97| 成人看片网站| 日本国产欧美高清在线| 国产中文大片资源中文字幕| 成人无码在线超碰网| 97久久国产| 麻豆国产成人精品| 天堂网 主播 亚洲| 亚洲三区视频| 丝袜av一区二区三区| 欧美成人一级麻豆| 色吧五月| 免费又黄又裸乳的视频| 黄色av网站在线播放| 无码人妻一区二区三区四区老鸭窝| 夜夜综合| 欧美色视频在线| 亚洲影视高清第一页| 91精品电影18| 18禁精品网站在线看| 九九九精品美女| 男生女生啊啊啊啊| 奸色色 男人天堂 天天射| 强奸乱伦日韩AV| 久久久久久久强迫| 欧美成人精品一区| 青女偷拍网| 日本一区二区中文字幕久久| 久久久久久十| 日韩欧美蜜桃精品久久中文字幕久久| 美女毛片999| 嗯~啊~快点 死我视频| 婷婷五月成人| 天天做天天爽| 九九伊人网| 家庭乱伦国产| 一本一道vs波多野结衣| 久久精品中文字幕无码l| 中国AV美女| 天美传媒精品久久视频| 亚洲情色 自拍| 中文子幕一二三| 日本一天色道久久久精品视频| 欧美1727免费观看视频| 日本午夜福利影院| 三级片网站在线播放| 国产无码一二三区| 日本午夜久久电影| 国内91熟女人妻丝袜天天精品视频在线| 超碰成人国产| 免费看一级a性色生活片久久无| 欧美日韩国产中文精品字幕自在自线| 一区操逼日比视频| 韩日性爱av| 久久久久久97| 亚洲性爱成人| 欧美日韩国产三级黄色| 99久久国产精品免费高潮| 亚洲动态色图| 一本色道综合久久欧美| 国产JDAV无码视频在线观看| 无码高清操逼| 亚洲欧洲成人在线电影| 99re免费视频精品全部| 亚一综合久久久久久久久久| 日韩中文字幕二区| 禁止观看美女黄| 九久久九精品视频| 97久久国产亚洲精品超碰热| 亚洲色图日韩丝袜制服一区二区五月在线| 97亚洲精品| 天堂中文日本在线观看| 乱欲性色| 久久久久成人网| 综合网亚洲1| 欧美人妻制服| 丁香五六月啪啪| 一级二级三级黑人无码| 国产成人自拍视频视频| 国产三级多多影院2022国产AA一级毛片无码| 操逼日批| 国产热RE99久久6国产精品首| 综合久久中文字幕综合日韩精品| 999久久久精品国产| JULIA人妻风俗店中出电影| 国产精品网站www| 九九热精彩视频| 久久精品一区一起草| 欧美人妻少妇| 另类天堂| 久久、1234| 日本精品久久久久久久| 97亚洲综合| 大黄片做爱的大的| 日韩影片中文字幕一区二区三区| 蜜区区视频79| 国产精品午夜福利亚洲综合网| 中文字幕日韩专区精品系列 | 青青伊人这里只有精品| 久久久久久久9最新免费视频观看| 亚洲人精品久久久| 在线观看一级α片刺激高潮视频| 亚洲另类在线观看| 黑丝91视频| 91劲爆| 2020久久免费视频| 丁香五月激情综合国产| 嫩草伊人久久精品| 亚洲精品国产精品成人| 二色av| 2026国产精品视频| 国产男人又猛又粗又爽| 久久中日麻豆| 亚洲国产精品V?在线播放| 日本综合久久| 亚洲日本天堂| 性色av大全| 俺去久久| 好色综合| 日韩另类色图| 亚洲色图图片| 激情丁香五月婷婷| 综合少妇网| 国产Aα| 嗯嗯啊啊用力视频免费| 国产 日韩 欧美一区| 亚洲春色激情小说| 3PAV乱伦视频| 欧美色偷拍| 亚洲清纯综合| 日本在线不卡一二区| 亚洲清纯综合| 日韩午夜啪啪视频| 果冻传媒A片麻豆熟妇人妻| 99碰碰| 久久这里只精品| 色噜噜人妻丝袜a∨先锋影 | 色翁荡息又大又硬又粗又爽| 嗯嗯,啊啊,国产精品| 综合网亚洲1| 亚洲国产av中文字幕久久| 精品久久久久9999| 国产精品久久久久久久无码AV| 色性欧美| 久久婷婷电影网| 日本曲间由美性生活片| 成年人网站在线免费观看| 天天综合网在线91| 亚洲综合草草| 97在线视频观看免费| 欧美综合加勒比在线| 人妻少妇久久久| 99色热国产视频精品| 色网综合网| 欧美色66| 超碰69| 久久综合久色欧美综合狠狠 | 99re在线视频国产| 青青青草原| 丝袜无码a片| 亚洲欧美91| 狠狠激情综合狠狠操中文字幕| 蜜臀精品1区2区| 天美传媒av 在线| 日本综合色图| 超碰在线欧美性爱激情| 丰满高潮18xxxx| 欧美黄色图片| 久九九九九九九热| 四虎国产成人精品免费一女五男| 91狠狠综| 亚洲 综合 第一页| 国产suv精品一区二区四| 精品欧美日韩在线观看| www亚洲免费| 大香蕉综合网| 欧洲亚洲人妻无码中字久久三区四区 | www.av在线视频| 中文字幕精品探花视频| 久久久久久久久999| 欧美草草高清日韩视频| 日本国产欧美一区三区二区| 无码乱人伦中文视频| 99欧美| 亚洲国产剧情少妇激情| #NAME?| 91亚洲综合| 人妻干天天| 999国产精品999| 97超碰美国| 亚洲综合贴图91| 亚欧美综合网| 国产强奸超碰AV| 920日本午夜免费| 91伊人大香蕉| 国产AV中文| 欧美一级久久久丰满| 精品人妻美妇91job| http://qxhbdz.com| A啊啊在线观看| 五月天久久人妻| 国产精品ⅴ无码大片在线看.| 欧美日韩国产中文精品字幕自在自线| 9九九九九视频在线观看| 人妻熟妇一区二区三区| 欧美高清18A片| 日婷婷| 亚洲AV噜噜狠狠网址蜜桃动漫| 国产区性爱在线视频秋霞豆| 爽爽淫人网| 双插在线| 天天看精品动漫视频一区| 天天肏夜夜肏| 九九九只有精品| 国产精品一区av在线| 亚洲精品一二三四区| 97伊人| 亚洲国产一区二区三区四区国产| 999狠狠综合| 天天舔九色婷婷| 无码二级三级| 亚洲九九夜夜| 国色综合天| 国产成人免费观看在线视频| 国产久久久久影院老熟女| 17c嫩草51久久91嫩草| 久久人人爽人人爽人人片Ⅴ| 久久精品综合| 人、人、摸,人、人、草| 四虎免费视频| 国产成人精品日本视频| 天天色综合影视网| 欧美精品第3页| 东京热,男人的天堂| 网友自拍第1页| 天天影视网色欲色香| 亚洲91射| 婷婷五月天av| 日韩乱插| 精品三级在线专区| 天天综合网AV91| 欧美白嫩女HD| 国产精品农村妇女| a片在线播放| 国产精品经典一卡久久久| 大香蕉久久| julia在线观看久久| 超碰免费欧美7| 99精品高潮| 欧美在线l亚洲| 狠狠躁日日躁夜夜躁A| 台湾佬中文娱乐网久久久久久久久久com| 日本Suv精品一区二区| 在线综合色| 久草线上视频免费看| 西西美女视频网| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 东京热熟女亚洲视频网站| 久久性爱视频99| 久偷拍| 免费的很黄很污的全部视频| 尤物视频新赏网鲜网色诱网| 婷婷在线播放| 最新国内自拍av免费| 香蕉免费一区二区三区不读| 丁香六月啪啪| 国产精品白丝在线播放| 91国产丝袜美女| 九月丁香| 手机在线A片| 97国产精品一区| 动漫片子网站3黄| 五月婷婷六月激情| 亚洲国产奇米影视久久| 亚洲97在线| 91欧美丨精品丨入口| 国产精品免费视频不卡| 九九视频黄色片| 色综合大香蕉| 和协影院中文字幕三区| 男人亚洲91首页在线| 色欲无码人妻日韩欧美精品| 极品色综合| 性交一区二区在线播放| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚欧成人综合影院| 亚洲玖玖爱| 97久久久精品| 久久久影院| 久操视频资源站公开| 亚洲在饯| 日本熟妇自慰性高潮一区二区三区| 欧美天天拍| 国产亚洲色婷婷久久99精品91葵花宝典| 欧美日韩久久精品爱爱| 伊人96在线| 久久综合中文国产| 99re这里只有精品中心播放| 夂久色| 日韩欧美经典在线观看| 久久毛卡| 中文幕97| 久久一区,青青青青草视频在线播放| 高潮的A片激情扒开一区| 精品玖九九久| 玖玖资源视频一区二区三区| 天天操人人操骚逼网站| 三级网站超变态精品| 伊人久久88国产女| 天天流夜夜操| 噜噜在线| 97人人超| 激情五月激情综合网| 无码高清专| 日韩性爱视频在线免费观看 | 久久精品黄色| 新怡红院| 精品玖九九久| 亚洲性高潮| 少妇高潮一区二区三区在线| 夜夜国自区| 啊啊啊啊啊舒服| 淫乱图区 | 欧美性生活男人的天堂| 夜草网站| 影音先锋日本一区二区| 精品中文字幕第一页| 国产强奸91| 午夜激情成人在线观看| 岛国艾薇凹凸视频天堂| 亚洲中文一区二区三区视频| 欧美久久伊人| 99热自拍| 欧美另类色图片| 97爱免费插| 嗯~啊~快点 死我视频| 久久久久久大| 夜夜福利| 蜜桃AV天堂| 欲香欲色综合天天伊人| 天天摸天天舔天天操| 日本Suv精品一区二区| 啊啊啊爽爽| 91精品国产91久久福利| 黑人白女精品一区| 激情久久久| 女优免费一区二区永久| 欧美少妇性乱| 夜夜夜夜久久久久| 色婷婷六月丁香七月婷婷| 日韩国产不卡在线视频| 在线观看日韩av不卡| 日本欧美国内在线| 成人无码专区精品视频| 久久99深爱久久99精品| 久久国产乱子伦精品免费女,网站| 亚洲激情天堂网| 中国熟女老妇仑乱一区二区三区| 欧美日韩系列| 唯美清纯 妖精视频| 精品人妻一区二区三区四区石在线| 一区不卡在线观看av| 国产精品久久久无码aV去| 美女黄频a美女大全免费皮| 99视频只有精品| 狠狠操一区二区| 国产熟码AV| A 天堂| 日韩性爱免费视频在线网站| 色av中文字| 亚洲女人毛茸茸91| 亚洲国产麻豆一区二区三区 | 2024人人操人人摸| 2019天天操天天爽天天拍| 久久久性爱| 中文字幕乱码人妻二区三区| 国产伦精品免编号公布| 秘书高跟黑色丝袜国产91在线| 欧美激情视频在线一区| 中文字幕黑人大片| 九九九九九九九| 国产成人91一区二区三区| 97久久超碰| 黑丝少妇麻豆| 制服丝袜第二页| 日韩熟女精一区二区三区不卡| 26uuu国产日韩综合在线观看| 天美传媒国产原创中文字幕亚洲欧美另类 | 岛国视频一二三区| 自拍丝袜美腿人妻| 大香蕉综合网| 欧美日综合| 99热日| 97在线观看播放视频| 欧美一区二区在线资源| 欧美美女视频| 亚洲 欧美都市激情| 老鸭窝在线视频播放| 思思热国产在线视频| 欧美色图私拍91| 欲色综合| 性在久久久久久| 亚洲欧美日韩有码| 国产色产精品在线观看| 久草成人福利导航| 女生久久网| 操狠狠| 福利视频网站| 日产国产精品中文久久婷婷| 日本成a人v网站在线观看| 丝袜美腿欧美| 午夜操一视频一区| 激激五月| 亚洲伊人久久综合97| 青青草黑寡妇男人天堂| 国产婷婷综合在线观看| 热久日综合| 日本狂喷奶水在线播放212| 欧美熟女妇同| 在线观看亚洲专区| 日韩精品 欧美激情| 人人妻人人色| 最新日日夜夜天天干干| 九九九久久久久| 超碰在线香蕉| 亚洲图片视频小说| 欧美图片偷拍| 成人av影院在线观看| 色网1| 天天干天天狼在线视频| 男人久久天堂| 欧美中字二区| 黄色片大香蕉| 中文字幕乱亚洲美女精品一区| 夜夜操av亚洲一区二区| 丁香六月东京热| 蜜屁av| 色婷婷在线视频精品导航| 亚洲制服aⅴ中文字幕| 亚洲天堂一区二区| 欧美另类色| 日韩性爱视频在线免费观看 | 亚洲黄色| 亚洲少妇在线影音| 国产成人+综合亚洲+天堂| 91综合中文字幕| 极品内射| www色色com| 国产精品懂色tv影视免费观看| 久久亚洲熟妇在线视频| 五月婷婷综合网| 激情 欧美 亚洲 小说| 狠狠爱夜夜干| 国产白嫩精品久久| 欧美在线观看综合国产| 一级黄色性爱A级片| 成人三级片一区二区三区视频| 国产精品久久久777| 亚洲图片偷拍视频区| 在线看的av| 亚洲一区二区av| 91l欧美在线| 天天干2019| 日本精品不卡一二三区| 操碰97| 欧美亚洲厕所精品偷拍91| 家庭乱伦国产| 精品视频一区二区| 97超碰免费人人性爱| 美女黄色一级A视频| 99精品九九九九九九| 97亚洲自在精品在线观看| 97香蕉网| 91久久午夜无码鲁丝片久久人妻| 蜜臀久久99精品久久久电影| 十八禁的黄污污免费网站| 色五月大香蕉| 色哟哟1区2区| 操一操摸一摸| 天天插天天操| 麻豆一区二区三区精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 黄色AV影视| 欧美人体性爱互联网第一页婷婷日本| 精品国产乱码久久久影院| 一区 欧美 日韩 麻豆| 性站| 人人爱操| 激情看片网站| 久久久久无码| 亚洲情色 自拍| 国产诱惑| 精品97精品97| 九九九影院| 久久香蕉综合一本到3atv| 香蕉综合网| 亚洲熟女av中文字幕| 亚洲欧美综合网| av橘色网站| 亚洲做性| 啊啊啊啊,啊啊好多水| 久久精品一区二区三区蜜桃臀| 夜夜福利| 情色五月天网| 啊啊啊在线看| 全国男人天堂网| 性欧美| 国产精品久久久蜜臀| 亚洲吊色| 青青草日韩免费观看高清在线| 久热久| 天天干夜夜操一区二区| 亚春色色| 久久精品一区二区一8| 2024年最新色情网站在线观看| 人妻另类 专区 欧美 制服| 在线人成亚洲视频免费观看| 乱伦a片视频| 色乱二区| 亚洲 欧美 手机在线观看| 欧美狠狠弄| 天美一二三在线观看Av| 欧美色图人妻| 精品人妻高清麻豆av| 中文字幕在线观| 无码人妻一区二区三区色欲aⅴ| 日韩在线欧美精品一区二区| 亚洲av淫乱| 日本在线一二| 熟妇激情| 高精欧美色| 五月综合婷婷久久网站| 亚洲色图一区二区三区| 九九视频黄色片| av婷婷色婷婷色六月| 欧美性猛交美女自慰91| 亚洲熟女一区| 久久久一区二区三区四区五区| 凹凸精品熟女在线观看| 亚洲精品啪视频| 你操综合| 久久久久久裸体| 日韩兔费看黄片| 日韩乱中文| 伊人网av| 大香蕉在线SuP| 91在线视频国产网站| 日韩在线观看字幕精品| 99久久综合网| 91 国产丝袜在线放观看| 999精品久久久久久久| 91在线免费观看处女| av亚欧| 和协影院中文字幕三区| 自偷自拍的亚洲视频| 国产后入内射| 94色色电影网| 99热这里只有精品地址| 国产丝袜欧美在线视频| 熟女性视频| 午夜a成v人电影| 亚洲清纯唯美| 亚洲色人妻综合| 色色色欧美| 日本肉体xxxx裸交| 60秒免费小视频| 91综合在线| 99自拍视频在线| 精品无码一区二区人妻久久蜜桃| 亚洲成人激情小说视频| 狠狠穞A片一區二區三區| 久久久久9999精品九九九| 天天日天天操天天射河南省| 午夜福利精品| 亚洲熟女乱色一区二区三区久久久| 欧州一区二区三区四区| 超碰97欧美在线| 亚洲牲交| 亚洲无套久久嗯嗯| 丰满熟女一区二区三区在线播放| 超碰在线成人| 日韩综合97p| 激情看片网站| 亚洲欧美综合图片| 99热精品在线播放| 春色综合网| 色婷婷五月天| 免费a v| 性色avv| 精品无码秘 人妻一区二区| 婷婷色婷婷| 天久久久噜噜噜久久国产精品爽爽 | 国产亚洲色婷婷久久99精品91葵花宝典| 色诱avtt| 久操网视频| 国产精品不卡一区二区三区| 日韩性爱人人爱人人操| 亚洲精品一卡二卡三卡福利视频网站| 日本欧美韩国国产在线| 理论久久婷婷网 8| 日韩成人无码| 狠狠夜色午夜久久综合在线| 无码最新| 四虎影视永久在线观看精品免费网站 | 9久综合网| 国产精品ww久久| 亚洲熟妇AV日韩熟妇在线| blacked精品一区国产| 男人天堂网手机版婷婷| 五月婷婷色色| 日本黄色精品专区网站| 夜夜 中文视频rt| 久久精品国产免费观看99| 9久9久9久9久视频网站| 久久久一区二区三区四曲免费听| 熟女人妻一区二区三区免费看 | 成人AV素股で擦久久| 国产精品黑人一区二区三区| 91欧美另类| 2024人人操人人摸| 日韩在线观看三级电影| 久久熟女久| 91狠狠色丁香婷婷综合久久精品| 校园春色五月天| 日韩 成人 有码| 日韩精品一区的| 超碰免费97| 亚码人妻| 曰韩精品九九无码| 免费在线观看国内色片网站网址 | 人人干黄色| 欧美成人精品一区二区男人蜜臀| 欧美另类色图片| 日本黄色大片一级视频免费麻豆| 人妻激情视频| 艳尻美人妻| 久热无码| 欧美超碰在线| 男人的天堂kva| 操美女人妻| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 天天超级碰碰碰| 久久av成人无码免费| 骚女天天综合网| 哑洲在线| 亚洲欧洲无码97久久精品| 日韩啪啪啪啪啪| 人人操人人搞人人草| 秋霞怕怕片| 国产精品久久久久久夜夜夜夜| 丝袜制服字幕在线| 免费久久精品麻豆一区二区av| 日韩成人性日韩成人性爱视频在线免费观看| 久久综合av| 2025亚洲男人天堂| 婷婷五月天综合网| 日本欧美亚洲高清在线看| 国产无码成人无码| 色综合加勒比| 亚洲丝袜少妇在线| 青青草中出视频 | 成人精品视频| 射丝袜高跟鞋99| 激情丁香五月婷婷| 国产精品宅男免费| 香蕉久久AⅤ...| 澳门黄片一香蕉视频| 亚洲情欲| 欧美熟女逼久久久久久| 亚洲极品| 久久美国毛片| 日日骚精品视频| 97国产天堂岛| 久草婷婷| 加勒比综合九九99视频在线播放| 狠狠狠一区二区三区| 蜜乳AV色欲AVAV无码| 亚洲天堂人妻熟妇视频| 精品中文字幕第一页| 一级日本牲交大片好爽在线看| 操国产高清| 伊人天天久久动态图| 97超碰欧美手机在线| 亚洲第一色页夜| 日日骚 av| 美女啪欧美一区| 色狠狠综合噜一二三区| 97视频在线观看播放与子乱对白在线……| 青青草日韩无码| 六月丁香久久| 色99在线| 日本91白丝| 欧美综合97www| 久久av色| 中文久久96| 中文字幕精品三级久久久| 欧美日韩人妻精品一区二区三区| 成人情色综合网| 一区二区三区看视频| 欧美高清色| 国产又黄又粗又猛大片| 飘花国产午夜精品不卡| 久久三| 久久极品伊人| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 人妻加勒比东京热| 国产自产91区13区| 亚洲 综合 第一页| 91中出在线| 中国AAAAAA黄色片| 逼操网站| 久久免费精彩视频| 欧洲乱码一区二区| 一区二三区四区视频大全套| 婷婷人妻激情| 亚洲一区二区AV| 日韩人妻播放| 色婷婷丁香五月| 日韩欧美丝袜诱惑| 国产精品97超碰| 2024年最新色情网站在线观看| 人人操人人操人人操人人操人人操人人人11.CM | 欧美色视频在线| 免费久久精品麻豆一区二区av| 99这里有精品视频| 蜜臀久久在线视频| 九九九999久久久网站| 亚洲āv网址在线观看| 无码外流操逼视频| 蜜桃臀av在线观看| 操死我了嗯嗯嗯| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 97网色| 一级日本牲交大片好爽在线看| 日韩性爱视频免费在线| 色综合潮| 国产激情在线| 日本高清_区二区三区 | av天天在线观看| 走光一区92下载| 久久久久9999| 色五月婷婷久久| 久久久少妇诱惑精品视频| 天天视频黄| 日韩av乱伦| 亚洲大胆人体av| 97视频在线播放| 亚洲欧洲综合视频在线| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲成人一区二区精品| 嗯嗯,啊啊,国产精品| 亚洲天天天| 日韩国产乱子伦App| 欧美一级欧美三级在线观看| 久久国产精品一区二区| 日本一区二区中文字幕久久| 91色情黑丝搞鸡在线观看一区二区三区三州 | 熟妇在线视频一区二区| 大香交| 中文字幕亚洲永久精品| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲激情视频| 日韩成人综合网| 婷婷另类小说| 国产一级特黄大片处女| 亚洲综合在线高清| 3PAV乱伦视频| 亚洲色图超碰在线| 台湾佬大香蕉| 亚洲人妻AV| 婷婷15月天青娱乐| h无码动漫在线观看| 欧美页片| 久久受www免费人成| 国产精品乱码久久久久久久久久久久| 97亚洲在线| 亚洲男人bt天堂| 国产精品网址| 好淫网一二三视区| 在线视频亚洲无码| 久九干| 亚洲黄色视频在线观看视频| 亚州成人a∨| 久久国产在线一区二区| 97久久超碰国产网站| 欧美激情性久久久久久| 欧美成人综合| 成人免费福利网站国产| julia ann久久| 欧美黄片视频在线观看免费| 国产三级中文字幕粉嫩| 黄片com.| 精品一级| 狼天天狼天天大香蕉| 色综合20p| 啪啪资源网| 精品九九九九九九九九九| 一二三四视频中文字幕在线看| 熟啊v色欧美热| 中国一级操逼视频| 精品一区二区三区18| 国产suv精品一区二区四区999| 国产精品操| 60秒试看最爽10分钟网站| 欧美大香蕉专区网| 一本色道熟妇| 91最新综合| 欧美日韩91| 亚洲97综| 香蕉人欧美综合| 亚洲综合骚逼| 中出789在线视频| 9999亚洲电影| 久久男人| 日本一区视频在线观看| 国产精品一区二区校花| 国产午夜激片Av毛片不卡| 无码最新| 亚洲图片欧美日韩| 粘花网06av视频| 制服中出中文人人精品| 伊人97色天使| 九九在线精品| 日本欧美国内在线| 亚洲精品日日夜夜52| 无码自拍SM| 18禁美女裸体无遮挡啪啪| 日本操逼视频不卡直接放| 91视频精品| 17c嫩草51久久91嫩草| 性爱视频免费网址| 欧美一级特黄淫片在线观看| 久久丁香久草综合网| 中文熟女五十乱码在线| 日本大片日本一区二区免费高清| 男人a天堂手机在线版| 婷婷久久五月| 围产精品一区二区三区视频播放| 乱子伦一区二区三区国产精品| 人人射人人操人人摸| 校园春色中文字幕AV| 亚洲精品啪视频| 97色欧洲| 欧美性色综合网| 日日干夜夜干| 91ise欧美| 亚洲天堂五月天国产| 黄色AV影视| 久久精品久久久久久久久| 国产不卡片| 操逼免费视频无码国产| 国产成人精品网站| 美骚妇av高清在线| 嗯嗯嗯啊啊啊操的我好爽 | 日韩美女操b| 国产精品自拍欧美在线| 视频分类 国内精品| 久久婷婷五月综合| 久久久草成人网站久久久草成人久久久草久久久 | 人妻黑丝袜电影| 亚洲影视高清第一页| 青青草公开在线免费不卡视频| 极品色电影院| 亚洲丝袜在线观看| 麻豆三极片| 欧美色视频在线| 亚洲中文sv| 亚洲91亚洲| 一区二区三区蜜桃成人撸久久东京热| 东京热亚洲一区二区| 爱欲AV| 欧美综合骚| 久久久免费视频18| 嗯嗯不要 视频| 激情 欧美 亚洲 小说| 色色色五月婷婷| 久噜噜| 100啪啪视频大全| 五月丁香色婷婷| 天天操天天7| 国产成人99久久亚洲综合| 欧美顶级黄色大片免费| 啊啊啊啊视频免费| 亚洲风情综合网| 日韩探花精品在线视频| 91久久18禁| 日韩成人私密一级精品av| 丁香六月婷婷| 熟女少妇一区二区三区| 亚洲精品天堂久久A∨51成人漫| 国产精品对白内射| 九九亚洲| 激情五月天社区| 国产AV线| 亚洲h片在线免费观看| 亚洲综合影视| 2017亚洲天堂| 五月激情天| 国产精品欧美在线观看| 97色碰| 久久婷婷成人综合色怡春院| 久久老子无码午夜伦不卡| 91痴汉| 五月婷婷深深爱| 国产精品诱惑| 99热在线不卡| 91在线精品一区二区三区| 91日日| 自拍大香蕉乱插| 色九九久九九| 久久久艹艹艹| 色就色综合| 大香交| 91女在线观看| 中文字幕一区二区在线日韩精品| 亚洲日韩乱码中文无码蜜桃臀网站| 午夜福利免费福利视频| 91n处女在线观看| 久久国产精品一级二级三级| 欧美黄色手机在线观看| 另类专区加勒比| 成人资源中文字幕在线观看天天| 黑人美精品 A片| 久肏视频字幕| 成人精品视频一区二区| 国产精品久久久久综合| 亚洲人妻在线精品| 久欲AV| 97 超碰 人人做 人人爱| 久久亚洲AV成人精品无码| 中文字幕一区二区三区50路| 久久久久久久久久久久欧美日| 操人91| 两性色网| 91人妻最真实刺激绿帽| 久久黄黄黄| 欧美性视频二区三区| 日本一区99| 亚州精人品大香蕉| 五月色网| 国产一区二区av综合| 精品国产91内射久久| 国产精品乱码久久久久久久| 少妇一区二区三区在线观看| 黑丝少妇| 丁香六月婷| 九九热精品| 亚洲精品成人激情在线| 午夜啪啪片| 久久成人午夜精品影院| 国产av激情无码久久天堂| 狠狠操使劲操| 日韩av性爱在线播放| 一级性爱视频免费在线| 精品一区二区三区国产 | 大香蕉国产中文自拍| 天堂麻豆天美| 97超碰欧美精品| 强奸乱伦大香蕉| 艹少妇网站| 国语av最新自产拍在线观看| 麻豆福利视频导航| 国产99999| 最新日韩黄片| 欧美日韩亚洲五月天婷婷| 国产精品在线网站| 青娱乐啪啪视频| 国产久久一区二区| 日韩淫色网| 青青草一区二区三区四| 欧美超碰人妻97| 7月婷婷综合| 欧美少妇第一页| 97就爱干| 欧美线天码中字| 亚洲素人综合| 色亚州人久干视频在线观看免费版| 蜜桃在线观看一区二区三区 | 一区二区三区日韩欧美| 色天使大香蕉| 欧美 亚洲 另类 综合| 久久夜精品一区二区三区| 色九九九九久| 农村妇女一级二级三级视频| 久妇网| a人欧美综合天堂麻豆| 日比av无码| 黄色片A级一区二区三区| 熟女高潮精品一区二区| 亚洲欧美清纯| 东北女人的毛片| 伊人玖玖网| 91视频综合在线| 99re这里| 加勒比日本在线| 日韩欧美日韩| 欧美日韩大香蕉| 无码免费精品高清| 精品精品精品| av草草在线电影| 深夜国产福利| 婷婷亚洲五月***久久| 精品-91人妻子系列| 超碰激情808| 四虎免费在线播放| 好涩综合| 国产精品久久伊人| 欧美日韩国产男人| 久久男人的天堂| 蜜乳av首页| 熟女久久久| 亚洲 欧美 偷拍 唯美| 久久精彩视频9| 中文三一区| 91精品国产麻豆国产自产在| 中文字幕诱惑制服人妻丝袜美丝袜美 | 中文乱码字字幕在线第5页| 免费中文在线| 大鸡巴久久久| 78超碰| 国产后入精品| 台湾佬中文娱乐网久久久久久久久久com | 欧美78| 亚洲美欧999| 尤物av网站免费在线播放| www.久久99| 欧美se综合| 国产精品自拍欧美在线| 91精品国久久久久久无码| 天天影视色香欲综合网小说| 美女刺激久久国产欧美| 亚洲美女高潮喷水视频| 国产美女口爆吞精视频| 精品一区96| 久操操AV电影| 97资源免费视频| 国产激情在线| daxiangjiao你懂的| 欧美精品自慰系列寂寞少妇 | 欧美精品宗合| 老师充足的奶水小说| 国产精品成人久久一区二区三区 | 男人的天堂在线| 天天爽人人综合免费7799| av天堂加勒比| 五月婷丁香| 欧美性生活免费网| 国产三级中文字幕粉嫩| 天堂精品小草| 这里只有精品视频在线| 日韩三级在线观看网站| 91高清欧美| 欧美亚洲AN| 人妻久久久久久久久久久久久久久| 中文字幕精品免费一区二区| 1769一区二区| 日韩无码精品综合久久| 欧美日韩1234| 天天色综合影视网| 狠狠操狠狠燥| 亚洲免费97免费| 日本一区二区电影网站| 91 亚洲 欧美 日韩 国产 综合| 欧美v亚洲v综合v国产v妖精| 91狠狠综合久久| 加勒比综合在线| 91久久国产精品| 国产又粗又长又大的视频| 欧美乱妇狂野欧美在线视频| 久久综合精品一区二区三区| 天美传媒国产原创中文字幕亚洲欧美另类| 亚洲操人| 一级啊性爱在线视频| 天天操夜夜嗨| 久久91视频| hd成人一区二区在线| 亚洲蜜桃V妇女| 丁香五月性| 99热免费| 用力操死我| 午夜毛片高清免费不卡| 日韩丝袜高跟制服在线观看| 夜夜爽爽夜夜精品视频| 无码精品啪啪啪一区二区三区三州|