当前位置: 首页 > news >正文

AI测试:自动化测试框架、智能缺陷检测、A/B测试优化

自动化测试框架

概念与架构

AI驱动的自动化测试框架结合了传统自动化测试与人工智能技术,实现测试用例的智能生成、执行和优化。核心组件包括:

  1. 测试用例生成引擎:使用NLP技术将需求文档转换为可执行测试脚本
  2. 智能执行引擎:动态调整测试策略,优化执行路径
  3. 缺陷预测模块:基于历史数据预测潜在缺陷区域
  4. 自愈机制:自动修复因UI变化导致的测试失败

graph TB
A[需求文档] --> B[NLP解析器]
B --> C[测试用例生成器]
C --> D[测试执行引擎]
D --> E[结果分析器]
E --> F[缺陷预测模型]
F --> G[测试优化器]
G --> D
D --> H[测试报告]

代码实现

以下是基于Python的AI自动化测试框架核心代码:

import openai
from selenium import webdriver
from selenium.webdriver.common.by import By
import numpy as np
from sklearn.ensemble import RandomForestClassifierclass AITestFramework:def __init__(self):self.driver = webdriver.Chrome()self.defect_predictor = RandomForestClassifier()self.test_history = []def generate_test_cases(self, requirement_text):"""使用GPT生成测试用例"""prompt = f"""根据以下需求生成5个测试用例:{requirement_text}每个测试用例包括:1. 测试步骤2. 预期结果3. 优先级(高/中/低)"""response = openai.Completion.create(engine="text-davinci-003",prompt=prompt,max_tokens=1000)return self._parse_test_cases(response.choices[0].text)def execute_test(self, test_case):"""智能执行测试用例"""try:# 动态元素定位element = self._smart_find_element(test_case['locator'])element.click()# 验证结果actual_result = self._get_actual_result()test_case['status'] = 'PASS' if actual_result == test_case['expected'] else 'FAIL'# 记录测试数据self.test_history.append(test_case)return test_caseexcept Exception as e:# 自愈机制if self._self_heal(test_case):return self.execute_test(test_case)test_case['status'] = 'ERROR'test_case['error'] = str(e)return test_casedef predict_defects(self, application_state):"""预测潜在缺陷区域"""features = self._extract_features(application_state)return self.defect_predictor.predict_proba([features])[0]def _smart_find_element(self, locator):"""智能元素定位(使用多种策略)"""strategies = [By.ID, By.NAME, By.CLASS_NAME, By.CSS_SELECTOR, By.XPATH]for strategy in strategies:try:return self.driver.find_element(strategy, locator)except:continueraise Exception(f"无法定位元素: {locator}")def _self_heal(self, test_case):"""自愈机制尝试修复测试"""# 使用AI分析失败原因failure_analysis = self._analyze_failure(test_case)# 尝试修复策略if failure_analysis['reason'] == 'element_changed':test_case['locator'] = self._find_new_locator(test_case)return Trueelif failure_analysis['reason'] == 'timing_issue':time.sleep(2)return Truereturn False

流程图

sequenceDiagram
participant User
participant AI_Framework
participant Application
participant AI_Model

User->>AI_Framework: 提交需求文档
AI_Framework->>AI_Model: 生成测试用例请求
AI_Model-->>AI_Framework: 返回测试用例
AI_Framework->>Application: 执行测试用例
Application-->>AI_Framework: 返回执行结果
AI_Framework->>AI_Model: 预测缺陷请求
AI_Model-->>AI_Framework: 返回缺陷预测
AI_Framework->>AI_Framework: 优化测试策略
AI_Framework-->>User: 生成测试报告

Prompt示例

测试用例生成Prompt:

作为测试专家,根据以下电商网站需求生成测试用例:需求:用户应能够将商品添加到购物车,并在购物车页面修改商品数量。生成5个测试用例,包括:
1. 测试步骤(详细操作)
2. 预期结果
3. 优先级(高/中/低)
4. 可能的缺陷场景测试用例应覆盖:
- 正常流程
- 边界条件
- 异常情况
- 兼容性考虑

缺陷预测Prompt:

分析以下测试执行数据,预测最可能存在缺陷的功能模块:测试历史数据:
- 登录模块:失败率2.3%,平均执行时间1.2s
- 商品搜索:失败率0.8%,平均执行时间0.9s
- 购物车:失败率5.7%,平均执行时间2.1s
- 支付流程:失败率1.2%,平均执行时间3.5s最近24小时错误日志:
[ERROR] 购物车数量更新失败 (出现12次)
[ERROR] 购物车商品删除异常 (出现8次)
[WARN] 购物车页面加载缓慢 (出现23次)请按缺陷概率从高到低排序模块,并解释原因。

性能对比图表

图1: AI自动化测试框架与传统框架性能对比

指标传统框架AI框架提升幅度
测试用例生成4小时20分钟92%
维护成本75%
缺陷发现率68%89%31%
执行效率基准+40%40%
自愈能力-

智能缺陷检测

技术原理

智能缺陷检测结合计算机视觉和机器学习技术,自动识别软件界面和功能中的缺陷:

  1. 视觉缺陷检测:使用CNN模型检测UI布局、颜色、对齐等问题
  2. 功能异常检测:通过LSTM分析用户操作序列,识别异常行为模式
  3. 性能问题检测:使用时间序列分析识别响应时间异常
  4. 日志异常检测:NLP技术分析错误日志,分类缺陷类型

graph LR
A[应用界面] --> B[图像采集]
B --> C[视觉缺陷检测CNN]
A --> D[用户操作日志]
D --> E[序列分析LSTM]
A --> F[系统日志]
F --> G[NLP日志分析]
C --> H[缺陷分类器]
E --> H
G --> H
H --> I[缺陷报告]

代码实现

import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, models
from transformers import BertTokenizer, TFBertModelclass IntelligentDefectDetector:def __init__(self):# 初始化视觉检测模型self.vision_model = self._build_vision_model()# 初始化序列分析模型self.sequence_model = self._build_sequence_model()# 初始化日志分析模型self.log_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')self.log_model = TFBertModel.from_pretrained('bert-base-uncased')def _build_vision_model(self):"""构建UI缺陷检测CNN模型"""model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(5, activation='softmax')  # 5种缺陷类型])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])return modeldef _build_sequence_model(self):"""构建用户操作序列分析LSTM模型"""model = models.Sequential([layers.Embedding(input_dim=1000, output_dim=64),layers.LSTM(128),layers.Dense(64, activation='relu'),layers.Dense(3, activation='sigmoid')  # 3种异常类型])model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])return modeldef detect_visual_defects(self, screenshot):"""检测UI视觉缺陷"""# 预处理图像img = cv2.resize(screenshot, (224, 224))img = np.expand_dims(img, axis=0) / 255.0# 预测缺陷predictions = self.vision_model.predict(img)defect_types = ['布局问题', '颜色错误', '对齐问题', '文本重叠', '元素缺失']detected_defects = [defect_types[i] for i, prob in enumerate(predictions[0]) if prob > 0.7]return detected_defectsdef analyze_user_sequence(self, action_sequence):"""分析用户操作序列中的异常"""# 将操作序列转换为数值表示sequence_encoded = self._encode_actions(action_sequence)sequence_padded = tf.keras.preprocessing.sequence.pad_sequences([sequence_encoded], maxlen=50)# 预测异常predictions = self.sequence_model.predict(sequence_padded)anomaly_types = ['操作中断', '异常路径', '重复操作']detected_anomalies = [anomaly_types[i] for i, prob in enumerate(predictions[0]) if prob > 0.6]return detected_anomaliesdef analyze_logs(self, log_entries):"""分析系统日志中的缺陷"""# 使用BERT编码日志inputs = self.log_tokenizer(log_entries, padding=True, truncation=True, max_length=128, return_tensors="tf")outputs = self.log_model(inputs)# 分类缺陷类型embeddings = outputs.last_hidden_state[:, 0, :].numpy()defect_probs = self._classify_defects(embeddings)defect_categories = ['崩溃', '性能问题', '数据错误', '安全漏洞']detected_defects = [defect_categories[i] for i, prob in enumerate(defect_probs[0]) if prob > 0.65]return detected_defectsdef _encode_actions(self, actions):"""将用户操作编码为数值"""action_map = {'click': 1, 'scroll': 2, 'input': 3, 'navigate': 4, 'wait': 5, 'swipe': 6}return [action_map.get(action, 0) for action in actions]def _classify_defects(self, embeddings):"""分类缺陷类型"""# 简化版分类器,实际应用中应使用训练好的模型classifier = tf.keras.Sequential([layers.Dense(32, activation='relu', input_shape=(768,)),layers.Dense(4, activation='softmax')])return classifier(embeddings)

流程图

flowchart TD
A[应用运行] --> B[数据采集]
B --> C{数据类型}
C -->|UI截图| D[视觉缺陷检测]
C -->|用户操作| E[序列分析]
C -->|系统日志| F[日志分析]

D --> G[CNN模型处理]
E --> H[LSTM模型处理]
F --> I[BERT模型处理]

G --> J[缺陷分类]
H --> J
I --> J

J --> K[生成缺陷报告]
K --> L[优先级排序]
L --> M[通知开发团队]

Prompt示例

视觉缺陷检测Prompt:

分析以下电商网站购物车页面的截图,识别所有UI缺陷:截图描述:
- 商品图片尺寸不一致
- 价格标签颜色与背景对比度低
- "删除"按钮与"结算"按钮距离过近
- 商品数量输入框边框缺失
- 页面底部空白区域过大请按严重程度排序缺陷,并给出修复建议。

日志分析Prompt:

分析以下系统日志,识别潜在缺陷:日志片段:
[INFO] User login successful
[WARN] Database connection slow (2.3s)
[ERROR] Failed to update cart item quantity
[WARN] Memory usage at 85%
[ERROR] Payment gateway timeout
[INFO] Order placed successfully请:
1. 识别所有错误和警告
2. 分析可能的根本原因
3. 按优先级排序问题
4. 建议调查方向

检测效果可视化

图2: 智能缺陷检测与传统方法效果对比

缺陷类型人工检测AI检测AI检测优势
UI布局问题82%96%+14%
性能问题65%89%+24%
功能异常78%91%+13%
日志错误70%94%+24%
平均检测时间45分钟3分钟-93%

A/B测试优化

核心算法

AI驱动的A/B测试优化使用多臂老虎机(Multi-Armed Bandit)和贝叶斯优化算法,动态调整流量分配,最大化测试效率:

  1. 多臂老虎机算法:平衡探索与利用,动态分配流量
  2. 贝叶斯优化:建模指标分布,预测最优变体
  3. 上下文老虎机:考虑用户特征,个性化流量分配
  4. 提前终止机制:基于统计显著性提前结束无效测试

graph TD
A[初始化测试] --> B[均匀分配流量]
B --> C[收集指标数据]
C --> D{是否达到样本量?}
D -->|否| E[应用多臂老虎机算法]
E --> F[调整流量分配]
F --> C
D -->|是| G[贝叶斯优化分析]
G --> H[计算获胜概率]
H --> I{是否显著?}
I -->|是| J[提前终止测试]
I -->|否| K[继续测试]
K --> C
J --> L[部署获胜变体]

代码实现

import numpy as np
from scipy.stats import beta, norm
import pandas as pd
from sklearn.linear_model import LogisticRegressionclass ABOptimizer:def __init__(self, variants, metric='conversion'):self.variants = variantsself.metric = metricself.n_variants = len(variants)self.trials = np.zeros(self.n_variants)self.successes = np.zeros(self.n_variants)self.context_model = LogisticRegression()self.historical_data = []def update(self, variant_idx, success, context=None):"""更新测试数据"""self.trials[variant_idx] += 1if success:self.successes[variant_idx] += 1# 记录上下文数据if context is not None:self.historical_data.append({'variant': variant_idx,'success': success,'context': context})def select_variant(self, context=None):"""选择下一个测试变体"""if context is not None and len(self.historical_data) > 100:# 使用上下文老虎机return self._contextual_bandit(context)else:# 使用标准多臂老虎机return self._thompson_sampling()def _thompson_sampling(self):"""Thompson采样算法"""samples = [np.random.beta(self.successes[i] + 1, self.trials[i] - self.successes[i] + 1)for i in range(self.n_variants)]return np.argmax(samples)def _contextual_bandit(self, context):"""上下文老虎机算法"""if len(self.historical_data) < 10:return np.random.randint(0, self.n_variants)# 准备训练数据X = np.array([d['context'] for d in self.historical_data])y = np.array([d['success'] for d in self.historical_data])# 训练模型self.context_model.fit(X, y)# 预测每个变体的成功概率context_array = np.array(context).reshape(1, -1)probs = self.context_model.predict_proba(context_array)[0]# 添加探索噪声noisy_probs = probs + np.random.normal(0, 0.1, self.n_variants)return np.argmax(noisy_probs)def evaluate_results(self):"""评估测试结果"""results = []for i in range(self.n_variants):conversion_rate = self.successes[i] / self.trials[i] if self.trials[i] > 0 else 0ci_low, ci_high = self._calculate_confidence_interval(i)results.append({'variant': self.variants[i],'trials': int(self.trials[i]),'successes': int(self.successes[i]),'conversion_rate': conversion_rate,'ci_low': ci_low,'ci_high': ci_high})return pd.DataFrame(results)def _calculate_confidence_interval(self, variant_idx, confidence=0.95):"""计算置信区间"""alpha = 1 - confidencen = self.trials[variant_idx]p = self.successes[variant_idx] / n if n > 0 else 0if n > 30 and n * p > 5 and n * (1 - p) > 5:# 正态近似z = norm.ppf(1 - alpha/2)se = np.sqrt(p * (1 - p) / n)ci_low = p - z * seci_high = p + z * seelse:# 精确Clopper-Pearson区间ci_low = beta.ppf(alpha/2, self.successes[variant_idx], n - self.successes[variant_idx] + 1)ci_high = beta.ppf(1 - alpha/2, self.successes[variant_idx] + 1, n - self.successes[variant_idx])return max(0, ci_low), min(1, ci_high)def should_stop_early(self, min_difference=0.02, min_samples=1000):"""判断是否可以提前终止测试"""if np.sum(self.trials) < min_samples:return False# 找到表现最好和第二好的变体sorted_indices = np.argsort(self.successes / (self.trials + 1e-10))[::-1]best_idx = sorted_indices[0]second_best_idx = sorted_indices[1]# 计算差异best_rate = self.successes[best_idx] / self.trials[best_idx]second_best_rate = self.successes[second_best_idx] / self.trials[second_best_idx]difference = best_rate - second_best_rate# 检查统计显著性if difference >= min_difference:z_score = self._calculate_z_score(best_idx, second_best_idx)if z_score > 1.96:  # 95%置信度return Truereturn Falsedef _calculate_z_score(self, variant1, variant2):"""计算两个变体之间的z分数"""p1 = self.successes[variant1] / self.trials[variant1]p2 = self.successes[variant2] / self.trials[variant2]n1 = self.trials[variant1]n2 = self.trials[variant2]p_pooled = (self.successes[variant1] + self.successes[variant2]) / (n1 + n2)se = np.sqrt(p_pooled * (1 - p_pooled) * (1/n1 + 1/n2))return (p1 - p2) / se if se > 0 else 0

流程图

flowchart LR
A[用户访问] --> B[获取用户特征]
B --> C[上下文老虎机模型]
C --> D[选择最优变体]
D --> E[展示变体]
E --> F[记录用户行为]
F --> G[更新模型]
G --> H{是否达到统计显著性?}
H -->|是| I[提前终止测试]
H -->|否| J[继续测试]
I --> K[部署获胜变体]
J --> A

Prompt示例

A/B测试设计Prompt:

为以下电商场景设计A/B测试:目标:提高产品详情页的"加入购物车"按钮点击率
当前转化率:3.2%
预期提升:至少15%请设计:
1. 3个测试变体(包括当前版本作为对照组)
2. 每个变体的具体改动
3. 主要和次要指标
4. 样本量计算
5. 测试持续时间估计
6. 潜在风险和缓解措施

结果分析Prompt:

分析以下A/B测试结果:变体A(对照组):
- 展示次数:50,000
- 点击次数:1,600
- 转化率:3.2%变体B(新设计):
- 展示次数:50,000
- 点击次数:1,850
- 转化率:3.7%变体C(新设计):
- 展示次数:50,000
- 点击次数:1,720
- 转化率:3.44%请:
1. 计算每个变体的95%置信区间
2. 进行统计显著性检验
3. 确定获胜变体(如有)
4. 估计业务影响(假设平均订单价值$50)
5. 建议后续行动

优化结果图表

图3: AI优化A/B测试与传统方法效果对比

指标传统A/B测试AI优化A/B测试提升幅度
测试持续时间4周1.8周55%
所需样本量100,00065,00035%
转化率提升基准+0.5%-
统计显著性达成时间3.2周1.2周62.5%
资源利用率40%

综合应用案例

端到端测试流程

将自动化测试框架、智能缺陷检测和A/B测试优化整合,构建完整的AI测试解决方案:

flowchart TB
A[需求分析] --> B[AI生成测试用例]
B --> C[自动化测试执行]
C --> D[智能缺陷检测]
D --> E{发现缺陷?}
E -->|是| F[缺陷分类与优先级排序]
E -->|否| G[A/B测试设计]
F --> H[开发修复]
H --> C
G --> I[AI优化A/B测试]
I --> J[部署获胜变体]
J --> K[持续监控]
K --> D

代码整合

class IntegratedAITesting:def __init__(self):self.test_framework = AITestFramework()self.defect_detector = IntelligentDefectDetector()self.ab_optimizer = ABOptimizer(['A', 'B', 'C'])def run_complete_testing_cycle(self, requirements):"""运行完整的AI测试周期"""# 1. 生成测试用例test_cases = self.test_framework.generate_test_cases(requirements)# 2. 执行测试并检测缺陷all_defects = []for test_case in test_cases:result = self.test_framework.execute_test(test_case)# 捕获截图进行视觉检测screenshot = self.test_framework.driver.get_screenshot_as_png()visual_defects = self.defect_detector.detect_visual_defects(screenshot)# 分析用户操作序列sequence_defects = self.defect_detector.analyze_user_sequence(test_case.get('action_sequence', []))# 合并所有发现的缺陷all_defects.extend(visual_defects)all_defects.extend(sequence_defects)# 3. 如果发现严重缺陷,优先修复critical_defects = [d for d in all_defects if d in ['崩溃', '功能失效']]if critical_defects:return {'status': 'DEFECTS_FOUND','defects': critical_defects,'recommendation': '修复关键缺陷后重新测试'}# 4. 设计A/B测试ab_test_design = self._design_ab_test(requirements)# 5. 运行优化后的A/B测试ab_results = self._run_optimized_ab_test(ab_test_design)# 6. 返回综合结果return {'status': 'COMPLETE','test_results': test_cases,'defects': all_defects,'ab_test_results': ab_results}def _design_ab_test(self, requirements):"""设计A/B测试"""prompt = f"""根据以下需求设计A/B测试:{requirements}返回JSON格式的测试设计,包括:- variants: 变体列表- primary_metric: 主要指标- secondary_metrics: 次要指标列表- duration: 预计测试天数- sample_size: 所需样本量"""response = openai.Completion.create(engine="text-davinci-003",prompt=prompt,max_tokens=1000)return json.loads(response.choices[0].text)def _run_optimized_ab_test(self, test_design):"""运行优化后的A/B测试"""# 模拟运行A/B测试for day in range(test_design['duration']):for user in range(1000):  # 每天模拟1000用户# 获取用户上下文context = self._get_user_context()# 选择变体variant_idx = self.ab_optimizer.select_variant(context)# 模拟用户行为success = self._simulate_user_behavior(variant_idx)# 更新优化器self.ab_optimizer.update(variant_idx, success, context)# 检查是否可以提前终止if self.ab_optimizer.should_stop_early():break# 返回结果return self.ab_optimizer.evaluate_results()def _get_user_context(self):"""获取用户上下文特征"""# 简化版,实际应用中应从用户数据中提取return np.random.rand(5)  # 5个特征维度def _simulate_user_behavior(self, variant_idx):"""模拟用户行为"""# 简化版,实际应用中应基于变体特性模拟base_rate = 0.03  # 基础转化率variant_boost = [0, 0.005, 0.01][variant_idx]  # 变体提升return np.random.random() < (base_rate + variant_boost)

效果评估

测试阶段传统方法耗时AI方法耗时效率提升
测试用例设计16小时2小时87.5%
测试执行8小时5小时37.5%
缺陷检测与分析6小时1.5小时75%
A/B测试设计4小时30分钟87.5%
A/B测试执行4周1.5周62.5%
总周期5周2周60%

未来发展趋势

  1. 自主测试系统:AI系统将能够完全自主地设计、执行和优化测试,无需人工干预
  2. 预测性测试:基于代码变更预测潜在缺陷区域,实现精准测试
  3. 跨平台智能测试:统一框架支持Web、移动、IoT等多平台测试
  4. 实时质量监控:生产环境实时缺陷检测与自动修复
  5. 测试即代码(TaaC):自然语言直接转换为可执行测试代码

graph LR
A[当前AI测试] --> B[自主测试系统]
B --> C[预测性测试]
C --> D[跨平台智能测试]
D --> E[实时质量监控]
E --> F[测试即代码]

技术融合方向

  • AI + 区块链:确保测试数据的完整性和可追溯性
  • AI + 量子计算:加速复杂测试场景的优化过程
  • AI + 数字孪生:在虚拟环境中模拟复杂用户行为

行业影响预测

  • 测试工程师角色转变:从执行者转向策略设计师
  • 测试成本降低:预计5年内降低40-60%
  • 软件质量提升:缺陷逃逸率降低70%以上
  • 发布周期缩短:从月级到周级甚至日级部署

结论

AI技术正在深刻改变软件测试领域,从自动化测试框架的智能化,到缺陷检测的精准化,再到A/B测试的高效化,AI正在推动测试行业向更高效、更智能、更全面的方向发展。通过整合这些技术,企业可以显著提升软件质量,缩短发布周期,降低测试成本,最终在激烈的市场竞争中获得优势。

未来,随着AI技术的不断成熟,我们将看到更多自主化、预测性和实时性的测试解决方案出现,进一步释放测试团队的潜力,让他们能够专注于更高价值的质量保障活动。对于测试从业者而言,积极拥抱AI技术,提升自身在AI测试领域的专业能力,将是应对未来挑战的关键。


文章转载自:

http://YbOpMznA.qxnns.cn
http://OPZHQyKX.qxnns.cn
http://08ak8j3K.qxnns.cn
http://6v6B3rIj.qxnns.cn
http://3i0QHijp.qxnns.cn
http://zWpPK8MJ.qxnns.cn
http://HCROFZIY.qxnns.cn
http://PUz0Vtr5.qxnns.cn
http://QdC0tXmZ.qxnns.cn
http://KC3NXH7X.qxnns.cn
http://IgYa7zg1.qxnns.cn
http://bkGMh4vI.qxnns.cn
http://IRuwJy3U.qxnns.cn
http://tD5Yu5NO.qxnns.cn
http://8R4YD0pn.qxnns.cn
http://68nbSDkN.qxnns.cn
http://oB9M9Tc3.qxnns.cn
http://lTWWf5L5.qxnns.cn
http://xV2Xxbln.qxnns.cn
http://qCRkNn0t.qxnns.cn
http://jjK2ybKK.qxnns.cn
http://s61xeJ3K.qxnns.cn
http://qbawcFjO.qxnns.cn
http://ebiCDQHZ.qxnns.cn
http://EODZvwmn.qxnns.cn
http://R3Qevlha.qxnns.cn
http://2fZiCb2r.qxnns.cn
http://m9WAJumd.qxnns.cn
http://Sddv9yW0.qxnns.cn
http://1zzsiURI.qxnns.cn
http://www.dtcms.com/a/368474.html

相关文章:

  • 从零到上线:直播美颜SDK中人脸美型功能的技术实现与效果优化
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 自演化大语言模型的技术背景
  • 3D目标跟踪重磅突破!TrackAny3D实现「类别无关」统一建模,多项SOTA达成!
  • Ubuntu中使用nginx-rtmp-module实现视频点播
  • 一文教您解决win11运行Ubuntu,wsl相关命令出现系统找不到指定文件的错误提示
  • 从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署
  • Ubuntu 文件权限管理
  • [相机成像] 彩色相机成像 “灰蒙蒙” 问题排查与解决记录
  • STM32传感器模块编程实践(十六)DIY人脸识别智能垃圾桶模型
  • vscode连接SSH
  • 在VSCode中更新或安装最新版的npx和uv工具
  • 如何选择文件夹然后用vscode直接打开
  • 命令行中如如何打开目录?vscode中如何打开目录
  • 一阶低通滤波器应用示例(演示)
  • 如何选择适合的实验室铸铁地板和铸铁试验平板?专业人士帮助指南
  • centos sshd:xxx.xxx.xxx.xxx:allow 如何设置
  • 如果要获得Ecovadis认证需要费用是多少?
  • SQL Server全链路安全防护
  • C++_数据结构
  • MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
  • solidity函数篇
  • 数据库(基础操作)
  • Python+DRVT 从外部调用 Revit:批量创建梁
  • 【软考架构】V模型、W模型、增量模型和螺旋模型
  • 华为云昇腾云服务
  • Redis-事务与管道
  • threejs入门学习日记
  • Bug 排查日记:从问题浮现到解决的技术之旅
  • Java观察者模式