【论文阅读笔记】Decomposition-Based Approach for Model-Based Test Generation

文章提出了一种通过系统分解解决基于模型的测试中的状态爆炸问题的方法。通过构建子系统依赖树,按照顺序遍历生成测试,提高了测试覆盖率并减少了测试生成时间。实验显示,这种方法能有效减少系统规模,提高测试覆盖率,并加速测试生成过程。

基于分解的基于模型的测试生成方法


Abstract:文章主要是通过把一个系统模型分解成合适的可单独分析的子系统模型来解决模型检验的状态爆炸问题


Intro:介绍了一下概念和文章内容

❓基于模型的测试(MBT):「测试」 - 基于模型的测试 - 未完成 - 知乎 (zhihu.com)

状态爆炸问题: MBT是基于对系统状态空间的穷举搜索吗,那状态数量就会跟着并发分量指数倍的涨,系统一复杂并发分量一多,直接穷举在实际操作中就是不可行的,这就是状态爆炸问题。

这篇论文提出来的一个解决方法,首先,给定一个测试目标,通过利用模型变量的依赖性把系统分解成子系统,这些子系统构成了一个树,然后通过访问这个树来生成子系统的测试,最后合并给整个系统测试。大概好像是这么个说法。


BASIC DEFINITIONS:一些基本定义

关于过渡系统的:

1.过渡系统 Transition system:M<A,P,Θ>。A是由G(G是由V构成的,V是变量vi的合集)、D(每个变量vi对应的值域)、关系和函数、解释函数构成的,代表的是系统的瞬时配置。P是下一时刻变量的集合。Θ是变量的初始状态。(感觉这里这条博客解释的比较容易看懂,反正就是搞成有限/无限状态机的原理那么理解)

example1/code1里给的是一个用M定义的安全注射系统(SIS)的例子,所有的定义照着这个例子看会好理解点。

Code 1. Transition system example - SIS

signature A://关于A的定义
V = {SafInject,Overridden,Press,WaterPress,Valve}
//五个变量:安全注入,推翻,压力,水压,阀门
D_SafInject = {OFF,OFF_VALVE,ALERT,ON}
//安全注入的取值范围:关/关阀门/报警/开
D_Overridden = boolean
//推翻的取值范围:是/否
D_Press = {Low,Mid,High,Unknown}
//压力的取值范围:低/中/高/未知
D_WaterPress = {0,...,1000}
//水压的取值范围
D_Valve = {open,closed}
//阀门的取值范围:开/关

program P://关于P的定义
SafInject':=
//SafInject变量下一时刻将变为(根据下面判断)
if Press = Low ⋀ ┐Overridden ⋀ Overridden' then OFF_VALVE
//如果当前压力是低,且当前没有被推翻,下一时刻被推翻,SafInject下一时刻就要变成关阀门了
……//剩下不写了一个思路,别的都是有依据变的,水压和阀门下一时刻状态是随机的

initial state Θ://关于初始状态变量值Θ的设置
SafInject = OFF, Overridden = FALSE, Press = Low, WaterPress = 0, Valve = closed

2.计算步骤 Computational step:按P和当前变量算下一时刻变量。

3.系统执行 System execution:状态转换,状态就是通过计算步骤得到的这样。

4.变量依赖 Variable dependency:两个变量有直接依赖关系,用DirDep(v)表示变量v的直接依赖集。

5.依赖图 Dependency graph:

当前提供的参考资料主要集中在宏基因组学、微生物数据分析工具以及相关领域的综述文章,并未直接涉及遗传扰动结果预测的子任务分解学习和基准测试的具体内容。然而,可以基于现有资料构建一个合理的解释框架来探讨这一主题。 ### STAMP 子任务分解学习 在处理复杂的生物信息学问题时,如遗传扰动结果预测,采用子任务分解的方法有助于提高模型训练效率并增强泛化能力。通过将整个预测过程划分为多个更易于管理的小任务,每个子任务专注于特定方面或阶段的数据特征提取与模式识别[^1]。例如,在遗传扰动背景下,可能涉及到不同类型的分子机制解析,包括但不限于转录调控网络重建、蛋白质相互作用预测等。 对于这些子任务的学习,通常依赖于监督式机器学习算法,其中标签化的数据集用于指导模型参数调整直至达到最优性能表现。值得注意的是,随着深度神经网络技术的发展,端到端架构也被广泛应用于此类场景之中,能够自动完成从原始输入到最终输出之间的映射关系建立工作[^2]。 ### 基准测试的重要性 为了评估所开发方法的有效性和可靠性,必须实施严格的基准测试程序。这不仅限于内部验证(即利用同一数据集中预留部分作为测试样本),还需要考虑外部独立验证——借助其他实验室公开发布的相似性质数据来进行交叉检验。理想情况下,应当设立一系列评价指标体系,涵盖准确性、敏感度、特异性等多个维度,从而全面衡量各个候选方案的实际应用价值[^3]。 ```python from sklearn.model_selection import train_test_split, cross_val_score from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # Example of splitting dataset and evaluating model performance using multiple metrics X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model.fit(X_train, y_train) predictions = model.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, predictions)}') print(f'Precision: {precision_score(y_test, predictions)}') print(f'Recall: {recall_score(y_test, predictions)}') print(f'F1 Score: {f1_score(y_test, predictions)}') scores = cross_val_score(model, X, y, cv=5) print(f'Cross-validation scores: {scores}') ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值