第2.6節 iOS生成全量和增量報告

2.6.1 簡介

? ? ?在采集了覆蓋率數據后,就需要生成對應需求的全量和增量覆蓋率報告,以便對測試進行查漏補缺。IOS系統有兩種開發語言,所以生成報告的方式也不相同,下面就分別介紹一下Object C和Swift語言如何生成覆蓋率報告。

2.6.2 Object C項目生成全量報告

提取覆蓋率數據

1. 打開Xcode -> window -> Devices and Simulaters, 選擇運行測試的真機

2. 在Installed Apps中選擇測試的應用,然后點擊底部的齒輪按鈕選擇Download Container

3. 會得到一個xxxx.xcappdata文件

4. 右鍵點擊xcappdata文件 -> 顯示包內容, 進入AppData/Documents/arm64/, 拷貝里面的所有.gcda文件。這些數據文件都是覆蓋率數據,針對每個類會有一個覆蓋率數據文件,項目大的時候數據會非常多。

5. 進入項目目錄/Pods/XcodeCoverage, 打開env.sh, 找到 OBJECT_FILE_DIR_normal屬性和CURRENT_ARCH屬性的值, 這里要注意下如果CURRENT_ARCH的值是undefined就改成arm64(關鍵)

6. 打開Finder,使用shift+command+G按鈕輸入/,其中 OBJECT_FILE_DIR_normal 及 CURRENT_ARCH 是上一步找到的值,(尖括號注意去掉)

7. 把上面第4步拷貝的所有.gcda文件拷貝到第六步打開的目錄中

8,生成覆蓋率報告

打開終端, cd進入項目目錄/Pods/XcodeCoverage, 運行命令:

./getcov --show

即可自動生成覆蓋率報告

測試報告文件在路徑:/Users/*****/Xcode/DerivedData/GHDropMenuDemo-fyxjnfwoowzqbhefbawkfehlqwlt/Build/Products/Debug-iphoneos/lcov下

這個報告就是針對整個項目的全量報告,生成過程手動操作較多, 可以繼續研究下如果實現自動化。

2.6.3 Object C項目生成增量報告

由于iOS沒有生成增量報告的工具,我們經過調研與嘗試,可以通過以下方案進行處理:

1,通過lcov命令生成info報告數據

lcov -b <測試代碼路徑> -d <gcda目錄位置> -c -o result.info --rc lcov_branch_coverage=1

注意:測試代碼路徑中包含構建生成的類文件 gcno。

2,生成的info格式的報告文件就可以解讀,通過git diff拿到增量信息,然后再處理報告,處理方法和Swift是一樣的,后面我們統一介紹。

3,處理后的數據為diffreport.info文件,通過genhtml生成報告即可:

genhtml -o diffreport diffreport.info

2.6.4 Swift項目生成全量報告

1,收集生成覆蓋率數據文件

(1)拷貝第二步生成的覆蓋率數據文件,如:test.profraw;

(2)拷貝應用構建生成的可執行文件

路徑:

~/Library/Developer/Xcode/DerivedData/shoppingCart-efmklxddypsuvfgiumzoyfnmnudr/Build/Products/Debug-iphoneos/shoppingCart.app/shoppingcart

當然也可以解壓ipa文件或是app文件拿到可執行文件。

2,生成覆蓋率報告

(1)合并及轉換覆蓋率數據
?

xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_file1657885829980.profraw test.profraw -output merged.profrawxcrun llvm-profdata merge -sparse test.profraw -o test.profdata

(2)查看覆蓋情況命令

xcrun llvm-cov show ./shoppingCart --instr-profile=test.profdata

(3)生成匯總報告

xcrun llvm-cov report ./shoppingCart -instr-profile=test.profdata

(4)生成HTML報告

xcrun llvm-cov show ./shoppingCart 
--instr-profile=test.profdata --format=html
-use-color --output-dir ./coverage_report

(5) 生成XcodeCoverage報告

A, 生成info文件

xcrun llvm-cov export ./shoppingCart 
--instr-profile=test.profdata -use-color 
--format=lcov > ./newreport.info

B, 生成xcodecoverage報告

./lcov-1.14/bin/genhtml -o html ./newreport.info

C, 報告樣式如下:

2.6.5 Swift項目生成增量報告

在網絡上查了一下iOS增量報告的生成,幾乎沒有現成的方案,通過分析allreport.info文件,發現這個文件的信息如下所示:

一個Swift 項目的覆蓋率報告Info文件,具體的內容如下:

SF:/Users/sxf/Documents/精準測試/KimCode/iOSSDKInject/kim-ios/packages/kim-ios/Kim/DataHelper/KImPinYin.swift
FN:16,$s4Kima9KimPinYinC7preloadyyFZ
FN:20,$s4Kima9KimPinYinCACycfc
FN:24,$s4Kima9KimPinYinCfD
FN:28,$s4Kima9KimPinYinC12pinyinLoadedyyF
FN:33,$s4Kima9KimPinYinC7convertyS2SF
FN:42,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyF
FN:49,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FN:52,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FN:60,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyF
FN:67,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FN:70,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FN:78,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tF
FN:85,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFSbSS_Sit_SS_SittXEfU_
FN:88,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFADSgSS_SitXEfU0_
FNDA:2,$s4Kima9KimPinYinC7preloadyyFZ
FNDA:0,$s4Kima9KimPinYinCACycfc
FNDA:0,$s4Kima9KimPinYinCfD
FNDA:0,$s4Kima9KimPinYinC12pinyinLoadedyyF
FNDA:0,$s4Kima9KimPinYinC7convertyS2SF
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyF
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyF
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tF
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFADSgSS_SitXEfU0_
FNF:14
FNH:1
DA:16,2
DA:17,2
DA:18,2
DA:20,0
DA:21,0
DA:22,0
DA:23,0
DA:24,0
DA:25,0
DA:26,0
DA:28,0
DA:29,0
DA:30,0
DA:31,0
DA:33,0
DA:34,0
DA:35,0
DA:36,0
DA:37,0
DA:38,0
DA:42,0
DA:43,0
DA:44,0
DA:45,0
DA:46,0
DA:47,0
DA:48,0
DA:49,0
DA:50,0
DA:51,0
DA:52,0
DA:53,0
DA:54,0
DA:55,0
DA:56,0
DA:60,0
DA:61,0
DA:62,0
DA:63,0
DA:64,0
DA:65,0
DA:66,0
DA:67,0
DA:68,0
DA:69,0
DA:70,0
DA:71,0
DA:72,0
DA:73,0
DA:74,0
DA:78,0
DA:79,0
DA:80,0
DA:81,0
DA:82,0
DA:83,0
DA:84,0
DA:85,0
DA:86,0
DA:87,0
DA:88,0
DA:89,0
DA:90,0
DA:91,0
DA:92,0
DA:93,0
DA:94,0
DA:95,0
DA:96,0
DA:97,0
DA:98,0
DA:99,0
DA:100,0
BRF:0
BRH:0
LF:91
LH:3
end_of_record

文件中有多個這樣的數據塊組成,現在需要對這個數據塊進行分析,以便進行跨版本的覆蓋率合并。但是,從網上搜索相關介紹的時候,幾乎是沒有的。于是我們只能借助于其他的數據進行比對,比如說,生成html報告,使用如下命令:

xcrun llvm-cov show ./binapp --instr-profile=./commitA/coverage_mergedA.profdata --format=html -use-color --output-dir=./commitA/checkreport

打開報告,內容如下:

然后對照著這兩份數據,就可以大概了解一下相關的內容了:

1,類下的信息

SF:/Users/sxf/Documents/精準測試/KimCode/iOSSDKInject/kim-ios/packages/kim-ios/Kim/DataHelper/KImPinYin.swift
FN:16,$s4Kima9KimPinYinC7preloadyyFZ
FN:20,$s4Kima9KimPinYinCACycfc
FN:24,$s4Kima9KimPinYinCfD
FN:28,$s4Kima9KimPinYinC12pinyinLoadedyyF
FN:33,$s4Kima9KimPinYinC7convertyS2SF
FN:42,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyF
FN:49,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FN:52,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FN:60,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyF
FN:67,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FN:70,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FN:78,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tF
FN:85,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFSbSS_Sit_SS_SittXEfU_
FN:88,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFADSgSS_SitXEfU0_
FNDA:2,$s4Kima9KimPinYinC7preloadyyFZ
FNDA:0,$s4Kima9KimPinYinCACycfc
FNDA:0,$s4Kima9KimPinYinCfD
FNDA:0,$s4Kima9KimPinYinC12pinyinLoadedyyF
FNDA:0,$s4Kima9KimPinYinC7convertyS2SF
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyF
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0B12SelectMemberCRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyF
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0B4UserVRszlE23sortByDisplayNamePinyinSayADGyFADSgSS_SitXEfU0_
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tF
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFSbSS_Sit_SS_SittXEfU_
FNDA:0,$sSa4Kima8KimModel0b18GroupMemberContactC0CRszlE23sortByDisplayNamePinyin15moveAdminToFistSayADGSb_tFADSgSS_SitXEfU

類中的函數信息:

FN:16,$s4Kima9KimPinYinC7preloadyyFZ

  • FN:代表方法
  • 16:代表開始行號
  • 后面的是方法名以及模塊相關的信息。

FNDA:2,$s4Kima9KimPinYinC7preloadyyFZ

  • FNDA:代碼方法的覆蓋情況
  • 2:代表方法中的代碼可能執行的次數,但不一定是所有的行都執行了,需要具體分析;
  • 后面的是方法信息,與FN相照應。

2,方法覆蓋率信息

FNF:14 FNH:1

通過對比html報告,可以看出:

FNF:代碼這個文件中的總方法數;

FNH:為覆蓋的方法數

而我們合并覆蓋率報告的時候,可以先對比一下總方法數是否一樣,如果相同,再去考慮如何處理覆蓋的方法數;如果不同,則選擇最新版本的方法數;在生成增量報告的時候,無需要修改此處內容,生成的報告會根據函數信息,直接展示函數覆蓋情況。

3,行覆蓋率信息

LF:91 LH:3

LF: 代碼這個文件的總行數,總行數以最新的版本為準;

LH:為覆蓋的行數,合并覆蓋率后,需要統計一下合并后的覆蓋行號,更新一下這個數;

DA:84,0

DA:XX 代表文件中的第幾行

0:最后的數字代碼此行執行了多少次,如果為0則表示沒有執行到,也就是沒有覆蓋。

4,分支覆蓋

BRF:0 BRH:0

BRF:為總分支數

BRH:為覆蓋的分支數,一般的Swift文件都是0

2.6.6 iOS增量報告生成

通過分析info文件,再結合獲取一個需求的diff信息,就能生成對應的增量覆蓋率。具體邏輯如下所示:

1,根據一定的diff策略,拿到對應需求的diff文件以及diff的行號。

由于git diff得到的信息,再計算相應的diff行號,可能存在有些行不是開發修改的行號;雖然情況不多,但也是有存在的機率。

2,根據diff信息,再過濾全量報告的allreport.info文件

3,遍歷完所有的diff文件,生成增量報告diffreport.info文件;

4,通過genhtml命令,將diffreport.info文件,生成增量覆蓋率報告。

genhtml -o diffreport diffreport.info

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/74218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/74218.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/74218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32技能綜合鞏固

一、深入理解ARMCPU架構及其指令格式、ARM匯編語言編程方法 1.匯編語言編程&#xff0c;實現LED燈 新建keil項目&#xff0c;選擇芯片 選擇運行環境以及配置 添加.s文件 匯編程序&#xff1a; AREAMYDATA,DATA AREAMYCODE,CODE ENTRY EXPORT__main __main MOVR0,#10 M…

P2Rank網頁端:預測蛋白結合口袋+vina分子對接

P2Rank 是一種基于機器學習的蛋白質口袋預測工具&#xff0c;用于識別蛋白質結構中的潛在配體結合位點。它采用了一種基于物理特征的打分方法&#xff0c;結合隨機森林&#xff08;Random Forest&#xff09;機器學習模型&#xff0c;以提高口袋預測的精確度。 該程序有在線工具…

安裝windows server 2016沒有可選硬盤,設備安裝過ubuntu系統

如果在安裝 Windows Server 2016 時無法識別已安裝過 Ubuntu 的硬盤&#xff0c;可能是由于硬盤分區格式&#xff08;如 ext4&#xff09;與 Windows 不兼容&#xff0c;或缺少必要的驅動程序。以下是詳細的解決方案&#xff1a; 1. 檢查 BIOS/UEFI 設置 確認硬盤模式 ? 重啟電…

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN

Debian系統_主板四個網口1個配置為WAN&#xff0c;3個配置為LAN 一、重新配置網口 1、查看當前網口的狀態 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改網絡配置文件 sudo vi /etc/network/interfaces 注意WAN口的網關地址如果是192.168.3.1的話&#xff0c;L…

springboot整合Thymeleaf web開發出現Whitelabel Error Page

背景 在做java端上應用開發的時候&#xff0c;從資源和部署操作成本兩方面考慮&#xff0c;一般會將前端的靜態資源直接與后端應用一起打包&#xff0c;通過springboot內嵌的Tomcat提供web服務。進入web首頁登錄一直到后續業務流程正向操作&#xff0c;頁面都能正常加載靜態資…

JavaScript元素尺寸與位置

目錄 client 家族與 offset 家族 一、client 家族&#xff1a;內容區域 內邊距 示例代碼 應用場景 二、offset 家族&#xff1a;內容區域 內邊距 邊框 滾動條 示例代碼 應用場景 三、綜合應用場景 1. 動態調整元素高度 2. 拖拽元素 3. 判斷元素是否在視口內 四…

GZ073網絡系統管理賽項賽題第1套模塊A:網絡構建解題筆記

2. 設備 接口或VLAN VLAN名稱 二層或三層規劃 說明 S1 VLAN10 CAIWU Gi0/1至Gi0/4 財務部 VLAN20 XIAOSHOU Gi0/5至Gi0/8 銷售部 VLAN30 YANFA Gi0/9至Gi0/12 研發部 VLAN40 SHICHANG Gi0/13至Gi0/16 市場部 VLAN50 AP Gi0/20至Gi0/21 無線AP管理 VL…

jmeter web壓力測試 壓測

下載地址 Apache JMeter - Download Apache JMeter 1. 設置線程組 2. 設置http請求頭 3. 設置http請求體 4. 設置結果條目 常用函數 ${__RandomString(8, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)}${__javaScript( ${__Random(1000, 10000)} /…

大語言模型(LLM)應用開篇 | RAG方法論概述 | 構建知識庫探索

大型語言模型應用開篇 | RAG技術 | 構建知識庫探索 1、大語言模型&#xff08;LLM&#xff09;應用開篇2、RAG技術2.1 基于RAG實現知識庫問答系統的基本步驟2.2 RAG與其他技術的關系與區別 1、大語言模型&#xff08;LLM&#xff09;應用開篇 現在是2025年&#xff0c;DeepSeek…

fbx bip互轉 測試OK

目錄 fbx bip互轉 3dmax插件fbx轉bip: 測試可以轉: MotionBuilder fbx轉bip fbx bip互轉 3dmax插件fbx轉bip: 測試可以轉: 不用插件!!無腦把Mxiamo轉bip骨骼動畫 - CG軟件插件腳本交流 - Powered by Discuz!

8個實用銷售工具

CRM系統&#xff08;客戶關系管理系統&#xff09; 特點&#xff1a;能集中管理客戶信息&#xff0c;如聯系方式、交易記錄、偏好等&#xff0c;還可對銷售流程進行自動化管理。 用途&#xff1a;幫助銷售團隊跟蹤客戶&#xff0c;分析客戶行為&#xff0c;預測銷售趨勢&am…

【家政平臺開發(6)】筑牢家政平臺安全防線:全方位隱私與安全需求解析

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析&#xff0c;剖析家政行業現狀、挖掘用戶需求與梳理功能要點&#xff0c;到系統設計階段的架構選型、數據庫構建&#xff0c;再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化…

IP 地址規劃中的子網劃分:/18 網絡容納 64 個 C 段(/24)的原理與應用解析

整體表格說明 這是某市教育城域網中某縣教育相關機構的IP地址規劃表&#xff0c;明確了某縣一中和某縣教育局的IP地址范圍&#xff0c;包括終端使用地址段、業務互訪地址段。 概念解析 64個C段終端及互聯地址 C段地址&#xff1a;一個C段是IP地址中的一個/24網絡&#xff08;…

python生成并繪制各種類型聲音噪聲

python生成并繪制各種類型聲音噪聲 1、效果 白噪聲: 工業設備振動噪聲: 2、噪聲類型 主要噪聲類型有: 白噪聲:全頻段能量均勻分布 直接生成高斯分布隨機數粉紅噪聲:能量隨頻率增加按1/f衰減(適合聲學測試) 使用IIR濾波器對白噪聲進行濾波處理布朗噪聲:能量隨頻率增加…

軟考-數據庫系統工程師第四版pdf

軟考-數據庫系統工程師第四版pdf git中的文件相對沒有那么清楚&#xff0c;網盤的有高清版 github下載 這里我給出倉庫地址 鏈接: https://github.com/yaodada123/ruankao-pdf https://github.com/yaodada123/ruankao-pdf gitee下載 https://gitee.com/yao-hengchao/ruank…

Linux(24)——系統調優

目錄 一、tuned 軟件包&#xff1a; 1、安裝并啟用 tuned &#xff1a; 2、驗證 tuned 軟件包&#xff1a; &#xff08;1&#xff09;是否安裝&#xff1a; &#xff08;2&#xff09;是否啟用&#xff1a; &#xff08;3&#xff09;是否正在運行&#xff1a; 二、系統…

文件系統--軟硬鏈接/動靜態庫

inode 是文件系統中的一個重要概念&#xff0c;用于存儲文件的元數據。 inode 的結構和內容 文件權限&#xff1a;定義了文件所有者、所屬組以及其他用戶對文件的讀、寫、執行權限。文件所有者和所屬組&#xff1a;記錄了文件的所有者和所屬的用戶組信息。文件大小&#xff1…

WebSocket原理詳解(二)

WebSocket原理詳解(一)-CSDN博客 目錄 1.WebSocket協議的幀數據詳解 1.1.幀結構 1.2.生成數據幀 2.WebSocket協議控制幀結構詳解 2.1.關閉幀 2.2.ping幀 2.3.pong幀 3.WebSocket心跳機制 1.WebSocket協議的幀數據詳解 1.1.幀結構 WebSocket客戶端與服務器通信的最小單…

MySQL 進階 面經級

會用數據庫&#xff0c;找大廠工作是遠遠不夠的。 本人2025美團暑期AI面試好幾個MySQL場景問題不會答&#xff0c;已臟面評。遂在此整理學習&#xff01; 文章目錄 美團AI面1.數據庫分片sharding的概念&#xff0c;它有什么優勢和挑戰?優勢Sharding 挑戰 2. 分庫分表的常見策…

基于單片機的智能奶茶機(論文 +源碼)

1總體架構設計 本課題為基于單片機的智能奶茶機設計&#xff0c;其系統架構上設計如圖2.1所示&#xff0c;整個系統包括了DS18B20溫度傳感器、繼電器模塊、LCD液晶、蜂鳴器、按鍵、STC89C52單片機等器件&#xff0c;在功能上用戶可以通過按鍵鍵控制選擇甜度和添加物以及設置溫度…