fix(测试跟踪): 覆盖用例中未统计关联的UI用例

--bug=1024707 --user=宋昌昌 【测试跟踪】首页-用例责任人分布中-已关联功能用例数量 统计中,未统计关联UI用例 https://www.tapd.cn/55049933/s/1353724
This commit is contained in:
song-cc-rock 2023-03-21 15:10:01 +08:00 committed by jianxing
parent 7a620db6be
commit e464791a14
5 changed files with 52 additions and 14 deletions

View File

@ -668,7 +668,7 @@
and test_case.project_id = #{request.projectId}
</if>
<include refid="filters"/>
<if test="request.caseCoverage == 'uncoverage' ">
<if test="request.caseCoverage == 'uncoverage'">
and test_case.id not in (
SELECT test_case_id FROM test_case_test WHERE test_type = 'testCase' and test_id IN (select id FROM
api_test_case WHERE `STATUS` is null or status != 'Trash')
@ -678,9 +678,24 @@
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'automation' and test_id IN (select id FROM
api_scenario WHERE `STATUS` != 'Trash')
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'uiAutomation' and test_id IN (select id FROM
ui_scenario WHERE `STATUS` != 'Trash')
)
</if>
<if test="!request.queryUi and request.caseCoverage == 'coverage'">
and test_case.id in (
SELECT test_case_id FROM test_case_test WHERE test_type = 'testCase' and test_id IN (select id FROM
api_test_case WHERE `STATUS` is null or status != 'Trash')
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'performance' and test_id IN (select id from
load_test)
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'automation' and test_id IN (select id FROM
api_scenario WHERE `STATUS` != 'Trash')
)
</if>
<if test="request.caseCoverage == 'coverage' ">
<if test="request.queryUi and request.caseCoverage == 'coverage'">
and test_case.id in (
SELECT test_case_id FROM test_case_test WHERE test_type = 'testCase' and test_id IN (select id FROM
api_test_case WHERE `STATUS` is null or status != 'Trash')
@ -690,6 +705,9 @@
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'automation' and test_id IN (select id FROM
api_scenario WHERE `STATUS` != 'Trash')
UNION
SELECT test_case_id FROM test_case_test WHERE test_type = 'uiAutomation' and test_id IN (select id FROM
ui_scenario WHERE `STATUS` != 'Trash')
)
</if>
<include refid="queryVersionCondition">
@ -850,13 +868,11 @@
FROM test_case_test
WHERE test_type = 'automation'
and test_id IN (select id FROM api_scenario WHERE `STATUS` != 'Trash')
<if test="queryUI">
UNION
SELECT test_case_id, test_id, test_type
FROM test_case_test
WHERE test_type = 'uiAutomation'
and test_id IN (select id FROM ui_scenario WHERE `STATUS` != 'Trash')
</if>
)
test_case_test
ON test_case.id = test_case_test.test_case_id

View File

@ -9,10 +9,12 @@ import io.metersphere.commons.utils.Pager;
import io.metersphere.dto.*;
import io.metersphere.i18n.Translator;
import io.metersphere.plan.dto.ChartsData;
import io.metersphere.request.testcase.TrackCount;
import io.metersphere.service.TestCaseService;
import io.metersphere.service.TrackService;
import io.metersphere.utils.DiscoveryUtil;
import jakarta.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -105,7 +107,15 @@ public class TrackController {
boolean queryUi = DiscoveryUtil.hasService(MicroServiceName.UI_TEST);
List<TrackCountResult> relevanceResults = trackService.countRelevance(projectId, queryUi);
statistics.countRelevance(relevanceResults);
long uiCountNum = 0L;
if (!queryUi) {
List<TrackCountResult> uiGroup =
relevanceResults.stream().filter(relevanceResult -> StringUtils.equals(relevanceResult.getGroupField(), TrackCount.UI_AUTOMATION)).toList();
if (CollectionUtils.isNotEmpty(uiGroup)) {
uiCountNum = uiGroup.get(0).getCountNumber();
}
}
statistics.countRelevance(relevanceResults, queryUi);
long size = trackService.countRelevanceCreatedThisWeek(projectId);
statistics.setThisWeekAddedCount(size);
@ -114,7 +124,7 @@ public class TrackController {
long total = list.size();
int coverage = trackService.countCoverage(projectId, queryUi);
statistics.setCoverageCount(coverage);
statistics.setUncoverageCount(total - coverage);
statistics.setUncoverageCount(total - coverage - uiCountNum);
if (total != 0) {
float coverageRageNumber = (float) statistics.getCoverageCount() * 100 / total;

View File

@ -163,7 +163,7 @@ public class TrackStatisticsDTO {
}
}
public void countRelevance(List<TrackCountResult> relevanceResults) {
public void countRelevance(List<TrackCountResult> relevanceResults, boolean queryUI) {
Map<String, Integer> chartData = new HashMap<>();
for (TrackCountResult countResult : relevanceResults) {
if (StringUtils.equalsIgnoreCase(TrackCount.TESTCASE, countResult.getGroupField())) {
@ -193,13 +193,15 @@ public class TrackStatisticsDTO {
chartData.put(Translator.get("scenario_case"), count);
}
}
if (StringUtils.equalsIgnoreCase(TrackCount.UI_AUTOMATION, countResult.getGroupField())) {
Integer count = chartData.get(Translator.get("ui_scenario_case"));
if (count == null) {
chartData.put(Translator.get("ui_scenario_case"), (int) countResult.getCountNumber());
} else {
count += (int) countResult.getCountNumber();
chartData.put(Translator.get("ui_scenario_case"), count);
if (queryUI) {
if (StringUtils.equalsIgnoreCase(TrackCount.UI_AUTOMATION, countResult.getGroupField())) {
Integer count = chartData.get(Translator.get("ui_scenario_case"));
if (count == null) {
chartData.put(Translator.get("ui_scenario_case"), (int) countResult.getCountNumber());
} else {
count += (int) countResult.getCountNumber();
chartData.put(Translator.get("ui_scenario_case"), count);
}
}
}
this.allRelevanceCaseCount += countResult.getCountNumber();
@ -210,6 +212,9 @@ public class TrackStatisticsDTO {
chartData.put(Translator.get("api_case"), 0);
chartData.put(Translator.get("performance_case"), 0);
chartData.put(Translator.get("scenario_case"), 0);
if (queryUI) {
chartData.put(Translator.get("ui_scenario_case"), 0);
}
}
this.chartData = chartData;
}

View File

@ -63,4 +63,9 @@ public class QueryTestCaseRequest extends BaseQueryRequest {
private Boolean toBeUpdated;
private String apiCoverage;
private String scenarioCoverage;
/**
* 是否查询UI
*/
private boolean queryUi;
}

View File

@ -792,6 +792,8 @@ public class TestCaseService {
}
public List<TestCaseDTO> listTestCase(QueryTestCaseRequest request, boolean isSampleInfo) {
boolean queryUi = DiscoveryUtil.hasService(MicroServiceName.UI_TEST);
request.setQueryUi(queryUi);
this.initRequest(request, true);
setDefaultOrder(request);
ServiceUtils.setBaseQueryRequestCustomMultipleFields(request);