14 KiB
ការធ្វើតេស្ត និងកែបញ្ហា
មុនពេលអ្នកចាប់ផ្តើមធ្វើតេស្តម៉ាស៊ីនបម្រើ MCP របស់អ្នក វាមានសារៈសំខាន់ក្នុងការយល់ដឹងពីឧបករណ៍ដែលមានឲ្យប្រើ និងការអនុវត្តល្អបំផុតសម្រាប់ការកែបញ្ហា។ ការធ្វើតេស្តមានប្រសិទ្ធិភាពធានាថាម៉ាស៊ីនបម្រើរបស់អ្នកអនុវត្តតាមដែលគេរំពឹង និងជួយឲ្យអ្នកស្គាល់និងដោះស្រាយបញ្ហាបានរហ័ស។ ផ្នែកខាងក្រោមបង្ហាញពីវិធីសាស្ត្រដែលបានណែនាំសម្រាប់ផ្ទៀងផ្ទាត់ការអនុវត្ត MCP របស់អ្នក។
ទិដ្ឋភាពទូទៅ
មេរៀននេះគ្របដណ្តប់ពីរបៀបជ្រើសរើសវិធីសាស្ត្រធ្វើតេស្តដែលត្រឹមត្រូវ និងឧបករណ៍ធ្វើតេស្តដែលមានប្រសិទ្ធភាពខ្ពស់។
គោលបំណងរៀន
នៅចុងបញ្ចប់នៃមេរៀននេះ អ្នកនឹងអាចធ្វើបច្ចុប្បន្នភាពដូចខាងក្រោម៖
- ពណ៌នាវិធីសាស្ត្រផ្សេងៗសម្រាប់ធ្វើតេស្ត។
- ប្រើឧបករណ៍ផ្សេងៗដើម្បីធ្វើតេស្តកូដរបស់អ្នកបានយ៉ាងមានប្រសិទ្ធភាព។
ការធ្វើតេស្តម៉ាស៊ីនបម្រើ MCP
MCP ផ្តល់ឧបករណ៍ជួយអ្នកធ្វើតេស្ត និងកែបញ្ហា ម៉ាស៊ីនបម្រើរបស់អ្នក៖
- MCP Inspector: ឧបករណ៍បញ្ជារបញ្ជា(Command line tool) ដែលអាចរត់បានទាំងជា CLI និងជាឧបករណ៍មើលក្រាហ្វិក។
- ការធ្វើតេស្តដោយដៃ: អ្នកអាចប្រើឧបករណ៍ដូចជា curl ដើម្បីធ្វើការសំណើវែប ប៉ុន្តែឧបករណ៍ណាមួយដែលអាចរត់ HTTP បានក៏អាចប្រើបាន។
- ការធ្វើតេស្តឯកតា: អាចប្រើស៊ុមធ្វើតេស្តដែលអ្នកចូលចិត្តដើម្បីធ្វើតេស្តលក្ខណៈរបស់ម៉ាស៊ីនបម្រើ និងម៉ាស៊ីនអតិថិជន។
ការប្រើ MCP Inspector
យើងបានពណ៌នាអំពីការប្រើប្រាស់ឧបករណ៍នេះនៅមេរៀនមុនៗ ប៉ុន្តែសូមនិយាយពីវាទៅមួយចំនួននៅកម្រិតខ្ពស់។ វាជាឧបករណ៍ស្នាដៃ Node.js ហើយអ្នកអាចប្រើវាតាមការហៅកម្មវិធី npx ដែលនឹងទាញយកនិងដំឡើងឧបករណ៍នេះបណ្តោះអាសន្ន ហើយវានឹងសម្អាតខ្លួនបន្ទាប់ពីរត់សំណើរបស់អ្នក។
MCP Inspector ជួយអ្នក៖
- ស្វែងរកសមត្ថភាពម៉ាស៊ីនបម្រើ: រកឃើញធនធាន ឧបករណ៍ និងការចាក់ផ្សាយដែលមានស្រាប់ដោយស្វ័យប្រវត្តិ
- តេស្តការប្រតិបត្តិឧបករណ៍: ព្យាយាមប៉ារ៉ាម៉ែត្រផ្សេងៗ និងមើលចម្លើយក្នុងពេលពិត
- មើលមេតាដាតាម៉ាស៊ីនបម្រើ: ពិនិត្យព័ត៌មានម៉ាស៊ីនបម្រើ ស្កេម៉ា និងការកំណត់ค่า
ការរត់ឧបករណ៍ទូទៅមានដូចខាងក្រោម៖
npx @modelcontextprotocol/inspector node build/index.js
ពាក្យបញ្ជាខាងលើចាប់ផ្តើម MCP និងផ្ទាំងតំណាងរបស់វា ហើយចាប់ផ្តើមផ្ទាំងវែបក្នុងកម្មវិធីរុករករបស់អ្នក។ អ្នកអាចរំពឹងឃើញផ្ទាំងគ្រប់គ្រងបង្ហាញម៉ាស៊ីនបម្រើ MCP ដែលបានចុះបញ្ជី ខួបខួបនៃឧបករណ៍ធ្វើតេស្តធនធាន និងការចាក់ផ្សាយ។ ផ្ទាំងនេះអនុញ្ញាតឲ្យអ្នកធ្វើតេស្តការប្រតិបត្តឧបករណ៍ជាអន្តរកម្ម មើលមេតាដាតាម៉ាស៊ីនបម្រើ និងមើលចម្លើយក្នុងពេលពិត ដើម្បីឲ្យងាយស្រួលក្នុងការផ្ទៀងផ្ទាត់ និងកែបញ្ហាការអនុវត្ត MCP របស់អ្នក។
អ្នកក៏អាចរត់ឧបករណ៍នេះក្នុងរបៀប CLI ដែលអ្នកត្រូវបន្ថែមអាំងធ្រីប --cli។ នេះគឺជាឧទាហរណ៍នៃការរត់ឧបករណ៍នេះក្នុងរបៀប "CLI" ដែលបង្ហាញឧបករណ៍ទាំងអស់នៅលើម៉ាស៊ីនបម្រើ៖
npx @modelcontextprotocol/inspector --cli node build/index.js --method tools/list
ការធ្វើតេស្តដោយដៃ
ក្រៅពីការរត់ឧបករណ៍ Inspector ដើម្បីធ្វើតេស្តសមត្ថភាពម៉ាស៊ីនបម្រើ វិធីសាស្ត្រមួយទៀតដែលស្រដៀងគ្នาคือរត់ម៉ាស៊ីនអតិថិជនដែលអាចប្រើ HTTP ដូចជា curl។
ជាមួយ curl អ្នកអាចធ្វើតេស្តម៉ាស៊ីនបម្រើ MCP តាមសំណើ HTTP ដោយផ្ទាល់៖
# ឧទាហរណ៍៖ គន្លងព័ត៌មានម៉ាស៊ីនបម្រើសាកល្បង
curl http://localhost:3000/v1/metadata
# ឧទាហរណ៍៖ អនុវត្តឧបករណ៍មួយ
curl -X POST http://localhost:3000/v1/tools/execute \
-H "Content-Type: application/json" \
-d '{"name": "calculator", "parameters": {"expression": "2+2"}}'
ដូចដែលអ្នកអាចមើលឃើញពីការប្រើប្រាស់ curl ខាងលើ អ្នកប្រើសំណើ POST ដើម្បីហៅឧបករណ៍ដោយប្រើផ្ទុកទិន្នន័យដែលមានឈ្មោះឧបករណ៍ និងប៉ារ៉ាម៉ែត្រ។ ប្រើវិធីសាស្ត្រដែលសមរម្យសម្រាប់អ្នក។ ឧបករណ៍ CLI ជាទូទៅមានល្បឿនលឿនក្នុងការប្រើ ហើយអាចបាន스크립់បាន ដែលមានប្រយោជន៍នៅបរិយាកាស CI/CD។
ការធ្វើតេស្តឯកតា
បង្កើតតេស្តឯកតាដើម្បីធានាថាឧបករណ៍ និងធនធានរបស់អ្នកដំណើរការតាមដែលគេរំពឹង។ នេះគឺជាឧទាហរណ៍កូដធ្វើតេស្តមួយ។
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# សម្គាល់ម៉ូឌុលទាំងមូលសម្រាប់ការធ្វើតេស្ត async
pytestmark = pytest.mark.anyio
async def test_list_tools_cursor_parameter():
"""Test that the cursor parameter is accepted for list_tools.
Note: FastMCP doesn't currently implement pagination, so this test
only verifies that the cursor parameter is accepted by the client.
"""
server = FastMCP("test")
# បង្កើតឧបករណ៍តេស្តពីរកូពី
@server.tool(name="test_tool_1")
async def test_tool_1() -> str:
"""First test tool"""
return "Result 1"
@server.tool(name="test_tool_2")
async def test_tool_2() -> str:
"""Second test tool"""
return "Result 2"
async with create_session(server._mcp_server) as client_session:
# សាកល្បងដោយគ្មានប៉ារ៉ាម៉ែត្រ cursor (មិនបានបញ្ចូល)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# សាកល្បងជាមួយ cursor=None
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# សាកល្បងជាមួយ cursor ជាខ្សែអក្សរ
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# សាកល្បងជាមួយ cursor ខ្សែអក្សរទទេ
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
កូដខាងលើធ្វើ៖
- ប្រើបណ្ណាល័យ pytest ដែលអនុញ្ញាតឲ្យអ្នកបង្កើតតេស្តជាអនុគមន៍ និងប្រើសេចក្ដីបញ្ជាក់ assert។
- បង្កើតម៉ាស៊ីនបម្រើ MCP ជាមួយឧបករណ៍ពីរផ្សេងគ្នា។
- ប្រើប្រកាស
assertដើម្បីត្រួតពិនិត្យថាករណីពិចារណាមួយត្រូវបានបំពេញ។
សូមមើល ឯកសារ ពេញលេញនៅទីនេះ
ដោយផ្អែកលើឯកសារខាងលើ អ្នកអាចធ្វើតេស្តម៉ាស៊ីនបម្រើរបស់អ្នកដោយផ្ទាល់ ដើម្បីធានាថាសមត្ថភាពត្រូវបានបង្កើតដោយអនុលោម។
SDK សំខាន់ៗទាំងអស់មានផ្នែកធ្វើតេស្តដូចគ្នា ដូច្នេះអ្នកអាចកែលម្អ អនុវត្តទៅ runtime ដែលអ្នកជ្រើសរើសបាន។
ឧទាហរណ៍
ប្រភពបន្ថែម
បន្ទាប់បន្សំ
- បន្ទាប់: Deployment
ការបដិសេធ៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឺមត្រូវ។ ឯកសារដើមដែលមានភាសា មាតុភាសាគួរត្រូវបានចាត់ទុកថាជា ប្រភពដើមដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
