This is an automated email from the ASF dual-hosted git repository. narro pushed a commit to branch feat-797 in repository https://gitbox.apache.org/repos/asf/incubator-devlake-website.git
commit a2b04a59693e286e4048230534eaca255f9f3b36 Author: narro wizard <cong.w...@merico.dev> AuthorDate: Sat Jul 26 09:26:01 2025 +0000 docs(QA): add quality assurance domain and related CSV upload APIs - Add new domain tables for quality assurance: qa_apis, qa_projects, qa_test_cases, and qa_test_case_executions - Update documentation to include new domain layer models and CSV upload APIs for QA data - Add sample CSV files and explanations for QA data import #797 --- docs/DataModels/DevLakeDomainLayerSchema.md | 55 ++++++++++++++++++ docs/Plugins/customize.md | 86 +++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) diff --git a/docs/DataModels/DevLakeDomainLayerSchema.md b/docs/DataModels/DevLakeDomainLayerSchema.md index 93473bfee22..235c9820371 100644 --- a/docs/DataModels/DevLakeDomainLayerSchema.md +++ b/docs/DataModels/DevLakeDomainLayerSchema.md @@ -899,6 +899,61 @@ This table can support tag-based analysis, for instance, '_No. of bugs closed in <br/> +### Domain 7 - Quality Assurance + +#### qa_apis + +This table stores information about APIs for quality assurance testing. + +| **field** | **type** | **length** | **description** | **key** | +|:--------------------|:-----------------------------|:-----------|:--------------------------------------------------------------------------------|:--------| +| `id` | varchar | 500 | Unique identifier for the API | PK | +| `name` | varchar | 255 | Name of the API | | +| `path` | varchar | 255 | API endpoint path | | +| `method` | varchar | 255 | HTTP method (GET, POST, PUT, DELETE, etc.) | | +| `create_time` | timestamp with time zone | | When the API was created | | +| `creator_id` | varchar | 255 | ID of the user who created the API | | +| `qa_project_id` | varchar | 255 | ID of the QA project this API belongs to | | + +#### qa_projects + +This table stores information about quality assurance projects. + +| **field** | **type** | **length** | **description** | **key** | +|:---------------|:-----------------------------|:-----------|:-------------------------------------|:--------| +| `id` | varchar | 500 | Unique identifier for the project | PK | +| `name` | varchar | 255 | Name of the QA project | | + +#### qa_test_cases + +This table stores information about test cases in quality assurance. + +| **field** | **type** | **length** | **description** | **key** | +|:----------------|:-----------------------------|:-----------|:-------------------------------------|:--------| +| `id` | varchar | 500 | Unique identifier for the test case | PK | +| `name` | varchar | 255 | Name of the test case | | +| `create_time` | timestamp with time zone | | When the test case was created | | +| `creator_id` | varchar | 255 | ID of the user who created the case | | +| `type` | varchar | 255 | Type of test case (api or functional)| | +| `qa_api_id` | varchar | 255 | ID of the related API (required when type is api) | | +| `qa_project_id` | varchar | 255 | ID of the QA project | | + +#### qa_test_case_executions + +This table stores information about test case executions in quality assurance. + +| **field** | **type** | **length** | **description** | **key** | +|:-------------------|:-----------------------------|:-----------|:-----------------------------------------|:--------| +| `id` | varchar | 500 | Unique identifier for the execution | PK | +| `qa_project_id` | varchar | 255 | ID of the QA project | | +| `qa_test_case_id` | varchar | 255 | ID of the test case being executed | | +| `create_time` | timestamp with time zone | | When the execution record was created | | +| `start_time` | timestamp with time zone | | When the test execution started | | +| `finish_time` | timestamp with time zone | | When the test execution finished | | +| `creator_id` | varchar | 255 | ID of the user who executed the test | | +| `status` | varchar | 255 | Execution status (PENDING, IN_PROGRESS, SUCCESS, FAILED) | | + + ## Get Domain Layer Models in Developer Mode When developing a new plugin, you need to refer to domain layer models, as all raw data should be transformed to domain layer data to provide standardized metrics across tools. Please use the following method to access the domain data models. diff --git a/docs/Plugins/customize.md b/docs/Plugins/customize.md index 17d1840acf2..ca8b9ad6002 100644 --- a/docs/Plugins/customize.md +++ b/docs/Plugins/customize.md @@ -216,3 +216,89 @@ The following is an issue_commits.CSV file sample: |jira:JiraIssue:1:10159|d28785ff09229ac9e3c6734f0c97466ab00eb4da| |jira:JiraIssue:1:10202|0ab12c4d4064003602edceed900d1456b6209894| |jira:JiraIssue:1:10203|980e9fe7bc3e22a0409f7241a024eaf9c53680dd| + +### Upload `qa_apis.csv` file + +> POST /plugins/customize/csvfiles/qa_apis.csv + +The HTTP `Content-Type` must be `multipart/form-data`, and the form should have three fields: + +- `file`: The CSV file +- `qaProjectId`: It will be used as qa_project_id for the imported data +- `incremental`: Boolean value indicating whether this is an incremental update (true/false) + +Upload a CSV file and import it to the `qa_apis` table via this API. The following fields are required: + +| Field Name | Data Type | Description | +|------------------|---------------|---------------------------------| +| id | varchar(500) | Unique identifier for the API | +| name | varchar(255) | API name | +| path | varchar(255) | API path | +| method | varchar(255) | HTTP method (GET, POST, etc.) | +| create_time | timestamp | Creation timestamp | +| creator_name | varchar(255) | Creator name (will create a record in accounts table and write creator_id to qa_apis table) | + +#### qa_apis.csv sample: +|id |name |path |method|create_time |creator_name|qa_project_id| +|--------------------|--------------|------------------|------|-------------------------|------------|-------------| +|qa:api:1:101 |Login API |/api/v1/login |POST |2025-07-01 10:00:00 |tester1 |project101 | +|qa:api:1:102 |User Info API |/api/v1/user/{id} |GET |2025-07-01 11:30:00 |tester2 |project101 | +|qa:api:1:103 |Logout API |/api/v1/logout |POST |NULL |tester1 |project102 | + +### Upload `qa_test_cases.csv` file + +> POST /plugins/customize/csvfiles/qa_test_cases.csv + +The HTTP `Content-Type` must be `multipart/form-data`, and the form should have four fields: + +- `file`: The CSV file +- `qaProjectId`: (max length 500) Will be used as qa_project_id and will create/update a record in qa_projects table +- `qaProjectName`: (max length 255) Will be written to the `name` field of qa_projects table. Together with qaProjectId, this will create a new record in qa_projects table if not exists. +- `incremental`: Boolean value indicating whether this is an incremental update (true/false) + +Upload a CSV file and import it to the `qa_test_cases` table via this API. The following fields are required: + +| Field Name | Data Type | Description | +|------------------|---------------|---------------------------------| +| id | varchar(500) | Unique test case ID | +| name | varchar(255) | Test case name | +| create_time | timestamp | Creation timestamp | +| creator_name | varchar(255) | Creator name (will create a record in accounts table and write creator_id to qa_test_cases table) | +| type | varchar(255) | Test case type, api or functional | +| qa_api_id | varchar(255) | Related API ID, if type is api | + +#### qa_test_cases.csv sample: +|id |name |create_time |creator_name|type |qa_api_id |qa_project_id| +|--------------------|-------------------|-------------------------|------------|-------|---------------|-------------| +|qa:case:1:201 |Login Test |2025-07-02 09:00:00 |tester1 |api |qa:api:1:101 |project101 | +|qa:case:1:202 |User Profile Test |2025-07-02 10:30:00 |tester2 |api |qa:api:1:102 |project101 | +|qa:case:1:203 |UI Navigation Test |2025-07-02 11:45:00 |tester3 |functional|NULL |project102 | + +### Upload `qa_test_case_executions.csv` file + +> POST /plugins/customize/csvfiles/qa_test_case_executions.csv + +The HTTP `Content-Type` must be `multipart/form-data`, and the form should have three fields: + +- `file`: The CSV file +- `qaProjectId`: It will be used as qa_project_id for the imported data +- `incremental`: Boolean value indicating whether this is an incremental update (true/false) + +Upload a CSV file and import it to the `qa_test_case_executions` table via this API. The following fields are required: + +| Field Name | Data Type | Description | +|-----------------------|---------------|---------------------------------| +| id | varchar(500) | Unique execution ID | +| qa_test_case_id | varchar(255) | Related test case ID | +| create_time | timestamp | Creation timestamp | +| start_time | timestamp | Test execution start time | +| finish_time | timestamp | Test execution finish time | +| creator_name | varchar(255) | Creator name (will create a record in accounts table and write creator_id to qa_test_case_executions table) | +| status | varchar(255) | Execution status (PENDING, IN_PROGRESS, SUCCESS, FAILED) | + +#### qa_test_case_executions.csv sample: +|id |qa_test_case_id |create_time |start_time |finish_time |creator_name|status |qa_project_id| +|--------------------|-------------------|-------------------------|------------------------|------------------------|------------|----------|-------------| +|qa:exec:1:301 |qa:case:1:201 |2025-07-03 14:00:00 |2025-07-03 14:05:00 |2025-07-03 14:15:00 |tester1 |SUCCESS |project101 | +|qa:exec:1:302 |qa:case:1:202 |2025-07-03 15:30:00 |2025-07-03 15:35:00 |NULL |tester2 |IN_PROGRESS|project101 | +|qa:exec:1:303 |qa:case:1:203 |2025-07-04 09:00:00 |NULL |NULL |tester3 |PENDING |project102 |