GNS3 Copilot Manual Testing Guide
This document provides a comprehensive manual testing process for GNS3 Copilot to help ensure the project's functionality and stability.
Table of Contents
1. Environment Preparation Tests
1.1 Environment Dependency Checks
| Check Item |
Command |
Expected Result |
| Python Version |
python --version |
Python 3.10 or higher |
| Virtual Environment |
source venv/bin/activate |
Terminal shows virtual environment activated |
| Dependency Installation |
pip install -e . |
No errors, all packages installed successfully |
| Installation Verification |
gns3-copilot --help |
Displays help information |
1.2 GNS3 Server Checks
| Check Item |
Command |
Expected Result |
| Service Running Status |
Access http://localhost:3080 |
Shows GNS3 Web interface |
| API Version Check |
curl http://localhost:3080/v2/version |
Returns version information in JSON format |
| Project List |
curl http://localhost:3080/v2/projects |
Returns project list (may be empty) |
1.3 Environment Variable Checks
| Check Item |
Operation |
Expected Result |
| .env File |
ls -la | grep .env |
.env file exists in project root directory |
| Environment Variable Loading |
Check application logs |
Environment variables loaded correctly |
2. Application Startup Tests
2.1 Basic Startup Test
Test Steps:
| Verification Item |
Expected Result |
| Browser Auto-opens |
Default browser navigates to http://localhost:8501 |
| Page Loads Successfully |
Displays GNS3 Copilot title and sidebar navigation |
| No Console Errors |
Application logs normal, no abnormal errors |
| Application Responsive |
Page elements clickable, interaction normal |
2.2 Custom Port Startup Test
Test Steps:
gns3-copilot --server.port 8080
| Verification Item |
Expected Result |
| Application on Specified Port |
Browser navigates to http://localhost:8080 |
| Default Port No Conflict |
Port 8501 not occupied |
2.3 Network Access Startup Test
Test Steps:
gns3-copilot --server.address 0.0.0.0 --server.port 8080
| Verification Item |
Expected Result |
| External Access |
Other devices on same network can access http://<IP>:8080 |
3. Settings Page Tests
3.1 Navigate to Settings Page
| Operation Step |
Expected Result |
| Click "Settings" link in sidebar |
Page switches to Settings page |
| Display Configuration Form |
All configuration items displayed grouped by category |
3.2 GNS3 Server Configuration
3.2.1 API v2 Configuration Test
| Test Scenario |
Operation Steps |
Expected Result |
| Normal v2 Configuration |
Select API Version: v2, fill in Host, URL |
Save successful, displays "Configuration saved" |
| No Username/Password |
Leave username/password blank under API v2 |
Save successful (v2 doesn't require authentication) |
| Connection Test |
Click "Test Connection" button |
Displays "Connection successful" |
3.2.2 API v3 Configuration Test
| Test Scenario |
Operation Steps |
Expected Result |
| Normal v3 Configuration |
Select API Version: v3, fill in all fields |
Save successful |
| No Authentication Info |
Leave username/password blank under API v3 |
Save fails, prompts for authentication info |
| Connection Test |
Fill in correct username/password and test |
Displays connection success or failure |
3.2.3 Exception Cases Test
| Test Scenario |
Operation Steps |
Expected Result |
| Invalid URL |
Fill in http://invalid-host:9999 |
Prompts connection error on save |
| Empty Host |
Leave Host field blank |
Save fails, prompts required field |
| GNS3 Service Not Started |
Fill in correct URL but service not running |
Connection test fails |
3.3 LLM Model Configuration
3.3.1 OpenAI Configuration Test
| Test Scenario |
Operation Steps |
Expected Result |
| Normal OpenAI Configuration |
Select Provider: openai, fill in Model Name and API Key |
Save successful |
| Using GPT Model |
Model Name: gpt-4o-mini |
Save successful |
| Invalid API Key |
Fill in wrong Key, send test message |
Model call fails, displays authentication error |
3.3.2 DeepSeek Configuration Test
| Test Scenario |
Operation Steps |
Expected Result |
| Normal DeepSeek Configuration |
Select Provider: deepseek, fill in API Key |
Save successful |
| Using DeepSeek Model |
Model Name: deepseek-chat |
Save successful |
| Test Model Call |
Send test message |
AI responds normally |
| Test Scenario |
Operation Steps |
Expected Result |
| OpenRouter Configuration |
Select openrouter, fill in Base URL and API Key |
Save successful |
| Using Custom Model |
Model Name: google/gemini-2.5-flash |
Save successful |
| xAI Configuration |
Select xai, fill in corresponding parameters |
Save successful |
3.4 Other Settings
| Test Scenario |
Operation Steps |
Expected Result |
| Linux Credentials Configuration |
Fill in Linux Console Username and Password |
Save successful |
| Temperature Adjustment |
Drag slider to adjust |
Value changes between 0.0-1.0 |
| Voice Function Configuration |
Set VOICE=true |
Voice function enabled |
3.5 Configuration Persistence Test
| Operation Steps |
Expected Result |
| Modify all configurations and save |
.env file in project root directory updated |
| Restart application |
All configurations remain unchanged |
| Delete .env file |
Application uses default configurations |
4. Chat Page Tests
4.1 Session Management Tests
| Test Scenario |
Operation Steps |
Expected Result |
| New Session |
Click "New Session" button in sidebar |
Generates new thread_id, session selector shows "New Session" |
| View Session List |
View Session History dropdown in sidebar |
Displays all historical sessions (including title and thread_id) |
| Select Historical Session |
Select a historical session from dropdown |
Page displays that session's message history |
| Switch Session |
Select another session |
Successfully switches to selected session |
| Delete Session |
Click "Delete" button |
Displays deletion success prompt, session removed from list |
4.2 Project Selection (No Project State)
4.2.1 Project List Display Test
| Test Scenario |
Operation Steps |
Expected Result |
| Opened Projects |
Projects open in GNS3 |
Page displays "Workspace Selection" and project card list |
| No Opened Projects |
No projects open in GNS3 |
Displays prompt "Please select an opened project..." |
| Multiple Projects |
Multiple projects open in GNS3 |
Displays cards for all projects |
| Check Item |
Expected Result |
| Project Name |
Displays project name |
| Project ID |
Displays project UUID |
| Device Count |
Displays Device_Number |
| Link Count |
Displays Link_Number |
| Status |
Displays project status (opened/closed) |
| Select Button |
Displays "Select" button |
4.2.3 Select Project Test
| Operation Steps |
Expected Result |
| Click "Select" button of a project |
Enters chat interface, sidebar displays current project name |
4.3 Basic Chat Function Tests
| Test Scenario |
Operation Steps |
Expected Result |
| Send Text Message |
Type "你好" in input box and press Enter |
Message displays in chat interface, AI responds |
| Streaming Response |
Observe response process |
AI response displays progressively, not all at once |
| Tool Call Display |
When AI calls a tool |
Displays tool call information (tool name, parameters) and results |
| Multi-turn Dialogue |
Send multiple related messages continuously |
Context maintained, AI understands context |
| Empty Input |
Send spaces or empty string |
Prompts need to input content |
4.4 Session Title Generation Test
| Test Scenario |
Operation Steps |
Expected Result |
| First Turn Dialogue |
Send first message and get response |
Session list automatically generates new title |
| Title Content |
View generated title |
Title relates to dialogue content, length not exceeding 40 characters |
| Multi-turn Dialogue |
Continue dialogue |
Title no longer changes |
| Switch Session |
Switch to another session |
Each session title displays independently |
4.5 Switch/Exit Project Test
| Test Scenario |
Operation Steps |
Expected Result |
| Display Current Project |
View sidebar |
Displays "Current Project: {Project Name}" |
| Switch Project |
Click "Switch Project / Exit" button |
Returns to project selection interface |
| State Persistence |
Re-select previous project after switching |
Historical messages and context maintained |
4.6 Message History Rendering Test
| Check Item |
Expected Result |
| User Message |
Displays on right side, with user icon |
| AI Message |
Displays on left side, with robot icon |
| Tool Call |
Displays tool call box, containing tool name, parameters |
| Tool Response |
Displays tool response box, containing response content |
| Streaming Message |
Updates progressively, finally settles to complete content |
| Test Scenario |
User Input |
Expected Result |
| Query Complete Topology |
"查看当前项目拓扑" (View current project topology) |
Displays complete project topology JSON |
| Query Device Information |
"列出所有设备" (List all devices) |
Displays all devices list and their detailed information |
| Query Link Information |
"显示所有连接" (Show all connections) |
Displays all links list and their detailed information |
| Topology Context |
Query again after other operations |
Topology information based on currently selected project |
| Test Scenario |
User Input |
Expected Result |
| Get All Templates |
"获取可用节点模板" (Get available node templates) |
Lists all available templates on GNS3 server |
| Query by Name |
"查找 Cisco IOSv 模板" (Find Cisco IOSv template) |
Displays matching template information |
| Query by Type |
"查找所有路由器模板" (Find all router templates) |
Displays all router type templates |
| Test Scenario |
User Input |
Expected Result |
| Create Single Node |
"创建一个名为 R1 的路由器" (Create a router named R1) |
Node created successfully, returns node information |
| Specify Template |
"使用 Cisco IOSv 模板创建路由器 R2" (Create router R2 using Cisco IOSv template) |
Creates node using specified template |
| Create Multiple Nodes |
"创建 3 个交换机" (Create 3 switches) |
Creates multiple nodes, returns all node information |
| Creation Failure |
"创建不存在的设备" (Create non-existent device) |
Displays error message |
| Test Scenario |
User Input |
Expected Result |
| Start Single Node |
"启动 R1" (Start R1) |
Displays startup progress, node starts successfully |
| Start Multiple Nodes |
"启动所有路由器" (Start all routers) |
Displays batch startup progress |
| Progress Display |
Observe startup process |
Displays progress bar and startup status |
| Startup Failure |
"启动不存在的节点" (Start non-existent node) |
Displays error message |
| Test Scenario |
User Input |
Expected Result |
| Create Single Link |
"连接 R1 和 R2" (Connect R1 and R2) |
Link created successfully, returns link information |
| Specify Port |
"将 R1 的 g0/0 连接到 R2 的 g0/0" (Connect R1's g0/0 to R2's g0/0) |
Creates link using specified ports |
| Create Multiple Links |
"连接 R1-R2、R2-R3、R3-R1" (Connect R1-R2, R2-R3, R3-R1) |
Creates multiple links |
| Duplicate Link |
"再次连接 R1 和 R2" (Connect R1 and R2 again) |
Displays port occupied or creation successful (different ports) |
5.4.1 ExecuteMultipleDeviceConfigCommands Test
| Test Scenario |
User Input |
Expected Result |
| Single Device Configuration |
"在 R1 上配置 hostname Router1" (Configure hostname Router1 on R1) |
Configuration commands executed successfully |
| Multiple Device Configuration |
"在所有路由器上配置 loopback 0" (Configure loopback 0 on all routers) |
Batch configuration, returns results for all devices |
| Multiple Commands |
Configure hostname, banner motd, etc. on R1 |
Multiple commands executed sequentially |
| Complex Configuration |
"配置 OSPF 区域 0" (Configure OSPF area 0) |
Multiple configuration commands executed correctly |
| Test Scenario |
Input Format |
Expected Result |
| JSON Format |
Valid JSON configuration array |
Correctly parses and executes |
| List Format |
Python list format |
Correctly parses and executes |
| Format Error |
Invalid JSON format |
Displays format error prompt |
5.5.1 ExecuteMultipleDeviceCommands Test
| Test Scenario |
User Input |
Expected Result |
| View Configuration |
"在 R1 上显示 running-config" (Show running-config on R1) |
Displays complete running configuration |
| View Routing |
"在所有设备上显示路由表" (Show routing table on all devices) |
Batch displays routing tables for each device |
| View Interface |
"显示 R1 接口状态" (Show R1 interface status) |
Displays interface detailed information |
| Custom Command |
"在 R1 上执行 show version" (Execute show version on R1) |
Executes specified display command |
| Check Item |
Expected Result |
| Command Output Formatting |
Displayed in code block for easy reading |
| Multiple Device Results Separation |
Each device's results clearly separated |
| Error Handling |
When execution fails on one device, other device results display normally |
5.6.1 VPCSMultiCommands Test
| Test Scenario |
User Input |
Expected Result |
| Configure IP Address |
"在 PC1 上配置 ip 192.168.1.1/24" (Configure ip 192.168.1.1/24 on PC1) |
Configuration successful |
| Configure Gateway |
"在 PC1 上配置网关 192.168.1.254" (Configure gateway 192.168.1.254 on PC1) |
Configuration successful |
| Batch Configuration |
"配置所有 PC 的 IP 地址" (Configure IP addresses for all PCs) |
Batch configuration successful |
| Ping Test |
"在 PC1 上 ping 192.168.1.2" (Ping 192.168.1.2 from PC1) |
Displays Ping results |
| Traceroute |
"在 PC1 上 traceroute 8.8.8.8" (Traceroute 8.8.8.8 from PC1) |
Displays route tracing results |
5.6.2 Concurrent Execution Test
| Test Scenario |
Operation |
Expected Result |
| Multiple PCs Simultaneous Configuration |
Execute commands on multiple PCs simultaneously |
Commands execute concurrently, results returned correctly |
| Execution Order |
Check logs |
Each command executes in expected order |
| Test Scenario |
User Input |
Expected Result |
| Execute Single Command |
"在 Debian1 上运行 ls -la" (Run ls -la on Debian1) |
Displays command output |
| View System Information |
"在 Debian1 上运行 uname -a" (Run uname -a on Debian1) |
Displays system information |
| Batch Execution |
"在所有 Linux 设备上检查内存" (Check memory on all Linux devices) |
Batch execution, displays each device's results |
| Complex Command |
"在 Debian1 上运行 top -n 1" (Run top -n 1 on Debian1) |
Displays process information |
| Network Test |
"在 Debian1 上 ping google.com" (Ping google.com from Debian1) |
Displays Ping results |
5.7.2 Authentication Test
| Test Scenario |
Operation |
Expected Result |
| Correct Credentials |
Use correct username and password |
Successfully logs in and executes commands |
| Wrong Credentials |
Use wrong username and password |
Displays authentication failure error |
| No Credentials |
Linux credentials not configured |
Prompts need to configure credentials |
6. Help Page Tests
6.1 Help Page Display Test
| Operation Steps |
Expected Result |
| Click "Help" link in sidebar |
Page switches to Help page |
| Scroll page |
Displays complete help content |
| Check Format |
Markdown content renders correctly |
| Check Links |
All internal and external links clickable |
6.2 Help Content Test
| Check Item |
Expected Result |
| Project Introduction |
Correctly displays project description |
| Feature List |
Lists all main features |
| Usage Instructions |
Provides clear usage steps |
| FAQ |
Contains frequently asked questions and answers |
| Technical Support |
Provides contact information or links |
7. Boundary and Exception Tests
| Test Scenario |
Operation |
Expected Result |
| Empty Message |
Send empty string or only spaces |
Prompts need to input content |
| Super Long Message |
Send 5000+ character long message |
Handles normally, won't crash |
| Special Characters |
Send emoji, special symbols |
Handles normally |
| Chinese Input |
Send Chinese messages |
AI understands and responds correctly |
| Code Input |
Send code blocks or commands |
Handles correctly |
7.2 Connection Exception Tests
| Test Scenario |
Operation |
Expected Result |
| GNS3 Service Disconnected |
Operate after closing GNS3 service |
Displays connection error, prompts to check service |
| API Key Invalid |
Use invalid or expired API Key |
Displays authentication error |
| Network Interrupted |
Send message after disconnecting network |
Displays network error |
| Timeout |
API request timeout |
Displays timeout prompt |
7.3 Concurrency Tests
| Test Scenario |
Operation |
Expected Result |
| Multi-session Switching |
Quickly switch multiple sessions |
Each session data correct, no confusion |
| Fast Sending |
Continuously and quickly send multiple messages |
Messages processed in order, no loss |
| Multiple Browser Tabs |
Open application in multiple tabs simultaneously |
Each session runs independently |
7.4 Data Boundary Tests
| Test Scenario |
Operation |
Expected Result |
| Many Messages |
100+ messages in session |
Page displays normally, scrolling smooth |
| Many Projects |
20+ projects in GNS3 |
Project list displays normally |
| Many Devices |
50+ devices in project |
Operations normal, response timely |
8. Persistence Tests
8.1 Session Persistence Tests
| Test Scenario |
Operation Steps |
Expected Result |
| Session Save |
Create new session, send messages, close application |
Session exists after restarting application |
| Message History |
Send multiple messages, then restart |
All historical messages retained |
| Session Title |
Generate title, then restart |
Title remains unchanged |
| Selected Project |
Select project, then restart |
Project state maintained |
8.2 Configuration Persistence Tests
| Test Scenario |
Operation Steps |
Expected Result |
| Configuration Save |
Modify all configurations, then restart |
All configurations remain unchanged |
| .env File |
Check .env file content |
Configurations correctly written to file |
| Delete .env |
Delete .env, then restart |
Application uses default configurations |
8.3 Database Check
| Check Item |
Expected Result |
| Database File Exists |
gns3_langgraph.db exists in project root |
| Session Data |
SQLite stores all session records |
| Message Data |
Each session's messages correctly stored |
9. UI/UX Tests
9.1 Responsive Layout Tests
| Test Scenario |
Operation |
Expected Result |
| Desktop View |
View at 1920x1080 resolution |
Layout normal |
| Small Screen |
View at 1366x768 resolution |
Layout adaptive |
| Mobile |
Access using mobile browser |
Layout adapts to mobile |
9.2 Interaction Tests
| Test Scenario |
Operation |
Expected Result |
| Sidebar Collapse |
Click collapse button |
Sidebar collapses/expands |
| Scroll Behavior |
Scroll long message list |
Scrolling smooth |
| Button States |
Mouse hover over buttons |
Visual feedback |
| Input Box |
Click input box |
Gets focus, can input |
9.3 Loading State Tests
| Check Item |
Expected Result |
| Application Startup |
Displays loading animation |
| AI Response |
Displays loading indicator |
| Tool Execution |
Displays executing state |
| Error Prompts |
Displays friendly error messages |
9.4 Style Tests
| Check Item |
Expected Result |
| Color Scheme |
Colors harmonious, sufficient contrast |
| Font Display |
Fonts clear and readable |
| Icon Display |
All icons display correctly |
| Spacing Layout |
Element spacing reasonable |
10. Test Report Template
Test Report
# GNS3 Copilot Test Report
## Basic Information
| Item | Content |
|------|---------|
| Test Date | YYYY-MM-DD |
| Tester | [Tester Name] |
| Test Environment | - Python: [Version] <br> - GNS3 Server: [Version] <br> - Operating System: [OS] <br> - Browser: [Browser and Version] |
| Application Version | [Version Number] |
## Test Results Summary
| Item | Count |
|------|-------|
| Total Test Cases | XX |
| Passed | XX |
| Failed | XX |
| Skipped | XX |
| Pass Rate | XX% |
## Detailed Test Results
### 1. Environment Preparation Tests
| Case ID | Test Item | Status | Remarks |
|---------|-----------|--------|---------|
| 1.1 | Python Version Check | ✓/✗ | |
| 1.2 | Virtual Environment Check | ✓/✗ | |
| 1.3 | GNS3 Service Check | ✓/✗ | |
| ... | ... | ... | |
### 2. Application Startup Tests
| Case ID | Test Item | Status | Remarks |
|---------|-----------|--------|---------|
| ... | ... | ... | |
### 3. Settings Page Tests
| Case ID | Test Item | Status | Remarks |
|---------|-----------|--------|---------|
| ... | ... | ... | |
... (other test modules)
## Issues Found
### Issue 1
- **Problem Description**: [Detailed description]
- **Severity**: High/Medium/Low
- **Reproduction Steps**:
1. [Step 1]
2. [Step 2]
- **Expected Result**: [Expected result]
- **Actual Result**: [Actual result]
- **Screenshot**: (if available)
- **Related Logs**: (if available)
### Issue 2
...
## Improvement Suggestions
1. [Suggestion 1]
2. [Suggestion 2]
## Test Conclusion
[Test summary and conclusion]
## Signatures
| Role | Name | Date |
|------|------|------|
| Tester | [Signature] | [Date] |
| Reviewer | [Signature] | [Date] |
Appendix
A. Common Test Commands
# Start application
gns3-copilot
# Start application (custom port)
gns3-copilot --server.port 8080
# Run unit tests
python -m pytest tests/ -v
# View logs
tail -f log/gns3_copilot.log
# Check database
sqlite3 gns3_langgraph.db "SELECT * FROM checkpoints LIMIT 5;"
B. Test Environment Preparation
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -e .
# Configure environment variables
cp .env.example .env
# Edit .env file, fill in configurations
C. Test Checklist
- [ ] Environment preparation complete
- [ ] GNS3 server running normally
- [ ] Application startup successful
- [ ] Settings configuration complete
- [ ] Session management normal
- [ ] Project selection normal
- [ ] Basic chat functions normal
- [ ] All tool functions normal
- [ ] Help page normal
- [ ] Boundary exception handling normal
- [ ] Persistence functions normal
- [ ] UI/UX normal
Document Version: 1.0
Last Updated: 2024-12-24
Maintainer: GNS3 Copilot Team