loadrunner簡單實用教程.ppt
《loadrunner簡單實用教程.ppt》由會員分享,可在線閱讀,更多相關(guān)《loadrunner簡單實用教程.ppt(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。
,,性能測試技術(shù)交流,主要內(nèi)容,一、性能測試的基本概念 二、性能測試流程 三、LoadRunner操作介紹 四、測試結(jié)果分析,一、 性能測試的基本概念,,什么是軟件性能,用戶視覺的軟件性能: 軟件性能就是軟件對用戶操作的響應時間。 管理員視角的軟件性能: 軟件性能首先表現(xiàn)在系統(tǒng)的響應時間,其次還會關(guān)心系統(tǒng)狀態(tài)的相關(guān)信息。 開發(fā)視角的軟件性能: 最關(guān)注的是使性能表現(xiàn)不佳的因素和由于大量用戶訪問引起的軟件故障,也就是我們所說的性能瓶頸。,性能測試的常用方法,1 性能測試 2 負載測試 3 壓力測試,測試方法基本概念,性能測試 通過模擬生產(chǎn)運行的業(yè)務壓力量和使用場景組合,測試系統(tǒng)的性能是否滿足生產(chǎn)性能要求。 特點: 這種方法的主要目的是驗證系統(tǒng)是否具有系統(tǒng)宣稱具有的能力。,測試方法基本概念,負載測試 通過在被測系統(tǒng)上不斷增加壓力,直到性能指標。如通過量,響應時間,資源利用率等。 特點: 這種方法的主要目的是找到系統(tǒng)處理能力的極限, 用這種方法可以比較系統(tǒng)調(diào)優(yōu)前后的性能差異。,測試方法基本概念,壓力測試 壓力測試是指系統(tǒng)在一定飽和狀態(tài)下(CPU:75%,內(nèi)存:70%),例如CPU,內(nèi)存等在飽和使用情況下,系統(tǒng)能夠處理的會話能力,以及系統(tǒng)是否出現(xiàn)錯誤。 其中,JVM的可用內(nèi)存,數(shù)據(jù)庫的連接數(shù),數(shù)據(jù)庫服務器的CPU利用率等都可以做為壓力的依據(jù)。 特點: 這種方法的主要目的是檢查系統(tǒng)處于壓力情況下,應用的表現(xiàn),一般用于測試系統(tǒng)的穩(wěn)定性。,軟件性能測試的幾個主要術(shù)語,響應時間:應用系統(tǒng)從請求發(fā)出開始到客戶端收到最后一個字節(jié)數(shù)據(jù)所消耗的時間 并發(fā)用戶數(shù):登錄到系統(tǒng)中進行業(yè)務操作的總用戶數(shù)。服務器實際承受的壓力不只取決于業(yè)務并發(fā)用戶數(shù),還取決于用戶的業(yè)務場景。 吞吐量: 指單位時間內(nèi)系統(tǒng)處理的客戶請求的數(shù)量,直接體現(xiàn)了軟件系統(tǒng)的性能承受能力。 性能計數(shù)器:描述服務器或操作系統(tǒng)性能的一些數(shù)據(jù)指標。 思考時間:指的是用戶在進行操作時,每個請求之間的間隔時間,因為用戶在使用系統(tǒng)時,不大可能持續(xù)不斷地發(fā)出請求。,,二、性能測試流程,設(shè)計測試計劃,在性能測試正式開展之前,需要針對本次性能測試設(shè)計測試方案。 測試方案的內(nèi)容主要包括: 項目背景 性能測試需求 測試環(huán)境信息 性能測試場景 測試實施計劃 參與人員以及職責,測試環(huán)境、工具、數(shù)據(jù)準備,測試環(huán)境準備 我們的測試環(huán)境與客戶的實際環(huán)境是有較大的不同,測試環(huán)境的網(wǎng)絡、計算機硬件軟件都無法做到和客戶完全相一致。軟件在客戶那功能不正常,也許就是因為客戶安裝了某個不知名的其他軟件造成的。因此壓力測試需要遵循一些基本的原則:,搭建測試環(huán)境的基本原則,要滿足軟件運行的最低要求。 選用與被測軟件相一致的操作系統(tǒng)和軟件平臺。 營造相對獨立的測試環(huán)境。 無病毒的環(huán)境。,測試環(huán)境建議,因為在測試過程中比較重視測試環(huán)境的“真實性”,所以在客戶的實際環(huán)境執(zhí)行測試,需注意以下幾點: 1)盡可能地降低對客戶現(xiàn)有業(yè)務地影響,挑選在夜間 或者在客戶業(yè)務不繁忙的時段進行性能。 2)測試過程中會產(chǎn)生大量數(shù)據(jù)或因為系統(tǒng)故障導致數(shù) 據(jù)被破壞,要有很好地備份和恢復過程。 3)若是在公司內(nèi)部進行性能測試,盡量避免一臺服務 器上裝多個應用,盡量少的人使用被測試服務器, 這樣可以減少其它因素給系統(tǒng)性能帶來的影響。,數(shù)據(jù)的準備,在做性能測試時比較容易忽略數(shù)據(jù)的重要性,實際上后臺數(shù)據(jù)庫中數(shù)據(jù)量的多少會影響壓力測試的結(jié)果。比如我們測試一個查詢操作,數(shù)據(jù)庫表里就幾行記錄,這樣的測試是失效的。因為即使該數(shù)據(jù)表沒有建任何索引話,一個全表掃描也花不了什么時間,如果有大量數(shù)據(jù)的話,索引覆蓋的問題都能暴露出來。 因此在做壓力測試時要清楚數(shù)據(jù)庫中數(shù)據(jù)量的大小,具體需要多少數(shù)據(jù)量可以根據(jù)客戶數(shù)據(jù)庫中的數(shù)據(jù)數(shù)量進行模擬,否則測試結(jié)果會與客戶實際情況有一定的差距。,測試腳本的錄制、編寫與調(diào)試,制作腳本如下步驟: 腳本錄制,錄制過程中插入事務,插入集合點; 查找動態(tài)數(shù)據(jù)(關(guān)聯(lián)); 參數(shù)替換; 添加檢查點; 單腳本回放; 腳本加壓回放;,,三、LoadRunner操作介紹,LoadRunner常用組件,Virtual User Generator(虛擬用戶腳本生成器):用于捕獲最終用戶業(yè)務流程和創(chuàng)建自動性能測試腳本(也稱為虛擬用戶腳本)。 Controller: 用于組織、驅(qū)動、管理和監(jiān)控負載測試 負載生成器:用于通過運行虛擬用戶生成負載 Analysis: 有助于您查看、分析和比較性能結(jié)果,LoadRunner相關(guān)術(shù)語,1)場景 場景是一種文件,用于根據(jù)性能要求定義在每一個測試會話運行期間發(fā)生的事件。 2)Vuser 在場景中,LoadRunner用虛擬用戶或Vuser代替實際用戶,Vuser 模擬實際用戶的操作來使用應用程序。一個場景可以包含幾十、幾百甚至幾千個Vuser。 3)Vuser腳本 Vuser腳本用于描述Vuser在場景中執(zhí)行的操作。 4)事務 要度量服務器的性能,需要定義事務。事務表示要度量的最終用戶業(yè)務流程,建議錄制的時候插入事務而不要等錄制完后再插入事務。 5)集合點 為了能夠模擬所有虛擬用戶同時并發(fā),需要在業(yè)務操作前添加集合點,當全部用戶到達該集合點時,釋放所有用戶,注意,只能向腳本Action部分添加集合點。,利用vugen制作腳本,LR用Vuser(虛擬用戶)來代替實際的用戶。Vuser執(zhí)行的操作是用Vuser腳本來描述的。 Vuser腳本生成器(也稱Vugen)是LR用于開發(fā)Vuser腳本的主要工具。Vugen通過錄制客戶端與服務器之間的活動來錄制腳本。例如:在數(shù)據(jù)庫應用程序中,測試工具的腳本生成器(Vugen)會監(jiān)控數(shù)據(jù)庫的客戶端,并跟蹤發(fā)送到數(shù)據(jù)庫服務器和從數(shù)據(jù)庫服務器接收的所有請求。 當Vuser與服務器直接通信時,不需要在用戶界面中耗費系統(tǒng)資源,這樣就可以在一個工作站中同時運行大量Vuser,進而可以使用很少的測試計算機來模擬非常大的服務器負載。,選擇協(xié)議,C/S(Client/Server)結(jié)構(gòu)的win32應用程序一般可以選用winsocket協(xié)議。 B/S(Browser/Server)結(jié)構(gòu)的通過瀏覽器瀏覽數(shù)據(jù)的一般選用Web(Http/Html)協(xié)議。 1基于瀏覽器的應用程序推薦使用HTML-based Script 2 不是基于瀏覽器的應用程序推薦使用 URL-based Script。 3 如果基于瀏覽器的應用程序中包含了 JavaScript 并且該腳本向服務器產(chǎn)生 了請求,比如DataGrid 的分頁按鈕等,也要使用URL-based 方式錄制 4 基于瀏覽器的應用程序中使用了 HTTPS 安全協(xié)議,使用URL-based,,Winsocket協(xié)議,Http協(xié)議,Vuser腳本的三個部分,這里我們簡單講講Vuser腳本的三個部分: 創(chuàng)建的每個Vuser腳本都至少包含三部分:vuser_init、一個或多個 Actions及vuser_end。錄制期間,可以選擇腳本中VuGen要插入已錄制函數(shù)的部分。通常情況下,可以將登錄到服務器的活動錄制到 vuser_init部分中、將客戶端活動錄制到 Actions 部分中,并將注銷過程錄制到vuser_end部分中。 運行多次迭代腳本,只有腳本的Actions部分被重復,而Vuser_init和Vuser_end部分只運行一次。 如果我們測試的只是登錄操作,需要登錄操作循環(huán)被執(zhí)行。那么我們也可以將登錄操作錄制在action中。,工具條,錄制腳本的時候會產(chǎn)生如下圖所示的工具條:,錄制腳本建議,錄制腳本的時候,會使用LR的默認設(shè)置,把腳本錄制到Vuser_init中,此時我們會等錄制完成后,再將腳本剪切粘貼到actions和Vuser_end部分中去。這是個不可取的做法,比較好的做法是在錄制的過程中,就應該通過上圖所示的工具條選擇我們錄制的操作需要錄制到腳本的哪個部分。,腳本設(shè)計常用技巧-參數(shù)化,參數(shù)化:錄制完腳本后點擊工具欄上的,參數(shù)化,此時參數(shù)列表中沒有任何參數(shù),點擊New新建一個參數(shù),假如我要參數(shù)化用戶名,參數(shù)取名為UserName,參數(shù)化設(shè)置,參數(shù)化設(shè)置,Select next row有以下幾種選擇: Sequential:按順序一行一行的讀取數(shù)據(jù)。 Random: 隨機取值 Unique: 取唯一的值,這樣需要保證數(shù)據(jù)表中有足夠的數(shù)據(jù)。 Update value one有以下幾種選擇: Each Iteration 每一次迭代 Each Occurrence 每一次出現(xiàn) Once 每次取一樣的值,參數(shù)化,在參數(shù)列表中建立好需要的參數(shù)后,在腳本中,框選 要參數(shù)的字符,右擊鼠標,選擇Replace With a Parameter,找到所需要的參數(shù),點擊OK,參數(shù)化就完 成了。,腳本設(shè)計常用技巧-關(guān)聯(lián),關(guān)聯(lián): 我們的系統(tǒng)經(jīng)常會有些動態(tài)的數(shù)據(jù),比如新增記錄之前系統(tǒng)會給一個流水號,我們的腳本在錄制的時候捕獲了這個號碼,但是每次新增流水號肯定不同,拿腳本中的原始流水號去新增記錄,肯定違反數(shù)據(jù)表的主鍵約束 。如果我們在receive的包中找到那個流水號,并把它作為參數(shù)給send包,那么問題就迎刃而解了,這就是關(guān)聯(lián)(其實也是一種參數(shù)化) 關(guān)聯(lián)是腳本設(shè)計中相對麻煩的工作,關(guān)聯(lián)成功與否直接影響腳本執(zhí)行成功,若實在找不出關(guān)聯(lián)的地方,則可與開發(fā)人員咨詢哪個地方返回了需要關(guān)聯(lián)的數(shù)據(jù)。,腳本設(shè)計常用技巧-關(guān)聯(lián),LoadRunner有自動關(guān)聯(lián)功能,能自動捕捉腳本中需要關(guān)聯(lián)的數(shù) 據(jù),但得把Tools?Recording Options?Correlation?Enable correlation during Recording選上,或者腳本錄制完成后,運 行一遍,然后點擊 則會找了腳本中需要關(guān)聯(lián)的數(shù)據(jù),可以點擊Correlate完成關(guān) 聯(lián),但自動關(guān)聯(lián)操作往往不能完全按照用戶的意圖來完成,而且 自動關(guān)聯(lián)公對web和數(shù)據(jù)庫應用等有限的協(xié)議有效,如果要對其 他的類型的應用的腳本進行關(guān)聯(lián)操作,就須使用手工關(guān)聯(lián)操作方 式。,腳本設(shè)計常用技巧-關(guān)聯(lián),關(guān)聯(lián)步驟: 1) 準備一個固定的操作步驟(包括輸入數(shù)據(jù)等都要求相同) 2) 在LoadRunner的VU Generator中使用該步驟錄制形成腳本, 并保存腳本。 3) 重復上一步動作,使用相同的步驟錄制一個新的腳本并保存。 4) 執(zhí)行期間命令Tools?Compare with vusers,在彈出來的對話 框中選擇步驟(2)所保存的腳本。 5) 在WinDiff的比較窗口中查看兩個腳本的不同之處,并對每個 腳本的不同之處進行分析,使用關(guān)聯(lián)函數(shù)對需要關(guān)聯(lián)的數(shù)據(jù) 進行關(guān)聯(lián)。 關(guān)聯(lián)常用函數(shù):Web_reg_save,從web服務器返回的信息找到批定的內(nèi)容并將其保存到參數(shù)中。,Vuser腳本的兩種查看方式,Vuser腳本的兩種查看方式:Script View和Tree View。我們通過View菜單條Script View和Tree View 來切換。基于圖標的Tree View和基于文本的script View有各自的作用。 注意: 在Tree View模式下點擊Start Record 是會出錯的。只能在Script View下來錄制腳本。 如果你在查看data.ws文件,那么Vugen將不允許你切換到Tree View模式下。,Tree View模式查看返回數(shù)據(jù),,Tree View模式查看返回數(shù)據(jù),從圖中可以看出,Tree View模式下可以看到每個語句相關(guān)的Request和Reponse 數(shù)據(jù),Reponse數(shù)據(jù)按照Object的結(jié)構(gòu)關(guān)系用樹型表達,擊擊每個Object可以看到Object的HTML碼。,如何調(diào)試腳本,錄制好腳本,進行參數(shù)化以及關(guān)聯(lián)后,我們還得確定腳本是能正常運行的,是可以模擬用戶操作的,我們腳本很少能錄制好后,參數(shù)化好腳本后回放時就沒有錯誤的,出錯時我們需要調(diào)試,LR的編譯器提供調(diào)試腳本的功能。我們可以調(diào)試和優(yōu)化我們的腳本。,如何調(diào)試腳本,腳本調(diào)試先后在單腳本回放下和加壓回放下兩種情況下進行。也就是在vugen中和在controller中進行。在controller中主要看在加壓狀態(tài)下參數(shù)是否能正確地傳遞與賦值,動態(tài)數(shù)據(jù)是否能正確地獲得。,如何設(shè)計場景,場景:場景可以理解為單個腳本在某種條件或某種環(huán)境 運行時的環(huán)境特點,即腳本的運行環(huán)境。 比如可以在場景中設(shè)置需要監(jiān)控的服務器及相關(guān)計數(shù)器,多少并發(fā) 用戶,虛擬用戶產(chǎn)生方式,集合點策略,以及Run-time setting(運 行時設(shè)置),場景的執(zhí)行時間,這些如何設(shè)置需要根據(jù)實際情況進 行,場景的設(shè)置過程可以簡單理解為模擬真實環(huán)境的過程。 場景實則是一種.lrs文件,當場景設(shè)計完成后,可以將該場景保存 下來,供以后使用,這樣就不用重復設(shè)計場景了。,如何新建場景,打開Controller方法: 在VU-Gen(腳本生成器)中,Tools?Create Controller Scenario,添加Load Generator Machines,點擊“Generators”按鈕,出現(xiàn)Load Generators窗口 點擊Connect,如果狀態(tài)變成ready,則表示連接正常,如果狀態(tài)為Failed該機器不能連接,檢查原因。,添加虛擬用戶數(shù),如何確定并發(fā)用戶數(shù),估算并發(fā)用戶數(shù)公式 C=nL/T 估算峰值并發(fā)用戶數(shù) C’ ≈ C+3√C (根號) 其中:C是平均的并發(fā)用戶數(shù);C’是并發(fā)用戶峰值;n是 login session的數(shù)量;L是login session的平均長度;T是考 察的時間段長度。,估算并發(fā)用戶數(shù),假如有一個OA系統(tǒng),系統(tǒng)有3000個用戶,平均每天有400個用戶要訪問該系統(tǒng),對一個典型用戶來說,一天之內(nèi)從登錄到退出系統(tǒng)的平均時間為4小時,而在一天的時間內(nèi),用戶只在8小時內(nèi)使用該系統(tǒng),求峰值并發(fā)數(shù)為多少? 由上述兩個公式可以得到: C=400*4/8=200 C’=200+3√200=242,設(shè)置Schedule—產(chǎn)生虛擬用戶,Schedule里面主要用來設(shè)置任務計劃。 點擊 按鈕進入Schedule設(shè)置窗口,設(shè)置Schedule—運行虛擬用戶,設(shè)置Schedule—退出虛擬用戶,設(shè)置場景運行時間,點擊,設(shè)置集合點策略,設(shè)置集合點策略,點擊Policy按鈕,進入策略設(shè)置窗口,添加性能計數(shù)器--windows,在添加性能計數(shù)器之前需要具有服務器的系統(tǒng)管理員權(quán)限,以便獲取機器資源。 Windows:假設(shè)服務器為windows,IP為:192.188.13.14, 具有管理員權(quán)限的用戶名和密碼為administrator/abc 命令如下: 1)運行?cmd 2) net use \\192.168.13.14 /user:administrator 3)按下enter,會提示輸入密碼 4)輸入密碼abc 5)按下enter,提示命令操作成功,則完成連接。,添加性能計數(shù)器,點擊Add按鈕,輸入服務器IP,執(zhí)行測試,運行場景前需要注意的事項:每個組的虛擬用戶數(shù)、迭代次數(shù)、think time、參數(shù)化時的取值間隔、確認虛擬機的LoadRunner Agent Service打開 運行前使Generator機器處理Ready狀態(tài) 確認被監(jiān)測的機器已經(jīng)連接上去,并且添加自己所需要的計數(shù)器 運行之前一定要確認系統(tǒng)中壓力點的數(shù)據(jù)量是多少 確認以上都設(shè)置正確時再點擊 運行測試場景,四、 測試結(jié)果分析,,內(nèi)存分析方法,內(nèi)存分析方法用于判斷系統(tǒng)有無遇到內(nèi)存瓶頸,是否需要通過增加內(nèi)存手段來提高系統(tǒng)性能表現(xiàn)。 1)首先查看Memory/Available Mbytes指標 該計數(shù)值是描述系統(tǒng)可用內(nèi)存的直接指標,如果該指標的數(shù)據(jù)比較小,系統(tǒng)可能出現(xiàn)了內(nèi)存方面的問題。 2)操作系統(tǒng)經(jīng)常會用磁盤交換的方式提高系統(tǒng)可用的內(nèi)存量或提高內(nèi)存的使用率,我們可以關(guān)注page/sec,Page/read/sec和page fault/sec的值,這三個值直接反映了操作系統(tǒng)進行了磁盤交換的頻度。 Page/sec:表明由于硬件頁面錯誤而從磁盤取出的頁面數(shù),或由于頁面錯誤而寫入磁盤以釋放工作集空間的頁面數(shù)。 Page Read/sec:頁的硬故障,Page/sec的子集,該值比較大測表示是磁盤讀而不是緩存讀。閾值為5。 Page Faults/sec:每秒由處理器處理的失效頁的全部數(shù)量。當一個進程需要的代碼或數(shù)據(jù)不在它的工作區(qū)(它的空間在物理內(nèi)存中)中時,發(fā)生失效頁。,內(nèi)存分析方法,如果Page/sec的計數(shù)持續(xù)高于幾百,很可能會有內(nèi)存方面的問題產(chǎn)生,但Page/sec的值很大不一定表明內(nèi)存有問題,而可能是使用內(nèi)存映射文件程序所致。Page Faults/sec說明了每秒發(fā)生頁面失效的次數(shù),頁面失效得越多,則說明操作系統(tǒng)向內(nèi)存中讀取的次數(shù)越多。 3)根據(jù)磁盤相關(guān)計數(shù)器綜合分析,如果Page Read/sec很低,同時%Disk Time和Average Disk Queue Length的值很高,則可能有磁盤瓶頸,但是,如果隊列長度增加的同時Page Read/sec并未降低,則是由于內(nèi)存不足。,處理器分析方法,1)%Processor Time:如果該值持續(xù)超過85%,表明瓶頸是CPU??梢钥紤]增加一個處理器或換一個更快的處理器。 2)%User Time:表示非核心操作耗費的CPU,如數(shù)據(jù)庫操作,如排序,執(zhí)行aggregate functions等。如果該值很高,可考慮增加索引,盡量使用簡單的表聯(lián)接,水平分割大表格等方法來降低該值。 3)%Privileged Time:(CPU內(nèi)核時間)是在特權(quán)模式下處理線程執(zhí)行代碼所花時間的百分比。如果該參數(shù)值和“Physical Disk”參數(shù)值一直很高,表明I/O有問題??煽紤]更換更快的硬盤系統(tǒng)。 4)% DPC Time:表示CPU消耗在網(wǎng)絡上的時間,該計數(shù)器越低越低越好。在多處理器系統(tǒng)中,如果這個值大于50%并且Processor:% Processor Time非常高,加入一個網(wǎng)卡可能會提高性能,提供的網(wǎng)絡已經(jīng)不飽和。,磁盤分析方法,%Disk Time:指所選磁盤驅(qū)動器忙于為讀或?qū)懭胝埱筇峁┓账玫臅r間的百分比。在Physical Disk計數(shù)器中,如果只有%Disk Time比較大,其他值都比較適中,硬盤可能會是瓶頸。若幾個值都比較大,且數(shù)值持續(xù)超過80%,則可能是內(nèi)存泄漏。 Avg.Disk Queue Length:指讀取和寫入請求(為所選磁盤在實例間隔中列隊的)的平均數(shù)。該值應不超過磁盤數(shù)的1.5~2 倍。要提高性能,可增加磁盤。 根據(jù)Disk sec/Transfer進行分析:指秒計算的在此盤上寫入數(shù)據(jù)的所需平均時間。 Excellent----15ms 良好----30~60ms 超過60ms則需要考慮更換硬盤的RAID方式了。,分析原則,服務器硬件瓶頸?網(wǎng)絡瓶頸(如果是局域網(wǎng),可以不考慮)?服務器操作系統(tǒng)瓶頸(參數(shù)設(shè)置)?中間件瓶頸(參數(shù)配置,數(shù)據(jù)庫,Web服務器等)?應用瓶頸(SQL語句,數(shù)據(jù)庫設(shè)計,業(yè)務邏輯,算法等) 注:以上過程并不是每個分析中都需要的,要根據(jù)測試的目的和要求來確定分析的深度,對于一般的要求,分析到系統(tǒng)在將來大的負載壓力(并發(fā)用戶數(shù),數(shù)據(jù)量)下,系統(tǒng)的硬件瓶頸在哪里就夠了。,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- loadrunner 簡單 實用教程
鏈接地址:http://m.kudomayuko.com/p-1857409.html