Files
2026-07-13 13:31:35 +08:00

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 របស់អ្នក។

នេះជារូបរាងរបស់វា៖ Inspector

អ្នកក៏អាចរត់ឧបករណ៍នេះក្នុងរបៀប 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 ដែលអ្នកជ្រើសរើសបាន។

ឧទាហរណ៍

ប្រភពបន្ថែម

បន្ទាប់បន្សំ


ការបដិសេធ
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឺមត្រូវ។ ឯកសារដើមដែលមានភាសា មាតុភាសាគួរត្រូវបានចាត់ទុកថាជា ប្រភពដើមដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។