并发类的覆盖驱动测试代码生成
文章插图
摘要:以往的并发测试技术 , 主要是在探索手动编写测试代码的交织空间 , 以暴露共享内存访问的错误交织 。 这些技术假定了故障诱发测试的可用性 。 在本文中 , 我们介绍了 AutoConTest , 这是一种由覆盖率驱动的方法 , 用于生成有效的并发测试代码 , 以实现高交织覆盖率 。AutoConTest 由三个组件组成 。 首先 , 它使用捕获共享内存访问的执行上下文的覆盖率指标 , 在顺序测试代码生成过程中动态、迭代地计算覆盖率要求 。 其次 , 它根据计算结果明智地选择这些顺序代码 , 并将它们组合起来进行并发测试 , 从而实现了增加上下文相关的交错覆盖范围 。 第三 , 探讨了新覆盖的交错 。 我们已经将 AutoConTest 实现为自动化工具 , 并使用 6 个现实世界中的并发 Java 主题对其进行了评估 。 结果表明 , AutoConTest 能够生成有效的并发测试 , 从而实现高交织覆盖率并快速暴露并发故障 。AutoConTest 仅花费了不到 65 秒(包括程序分析 , 测试生成和执行)的时间来暴露程序主体中的错误 。
简介多核芯片技术的飞速发展让并发编程被普遍采用 , 并发编程由共享内存空间中的多个线程共同执行 。 由于线程同步的内在复杂性 , 并发程序很容易出错
尽管编写引发故障的测试既麻烦又费力 , 但它们的可用性对于暴露软件故障至关重要 。因此 , 针对顺序程序的测试代码的自动生成是一个活跃的研究主题 。 将这些技术用于并发测试 , 既带来机遇 , 也带来挑战
对顺序程序采用自动测试代码生成的主要障碍是有效测试预言的自动派生 , 它可以准确地区分失败测试和成功测试 。 幸运的是 , 并发测试大大减轻了这一障碍 。 最近对真实故障的特征研究表明 , 检查的并发故障中有 56-70%导致可见的 oracle 违规 , 例如崩溃或挂起 。 此外 , 使用有效的并发正确性标准(例如 , 可序列化性)可以帮助检测那些没有表现出明显的 Oracle 违规行为的并发错误 。
与顺序测试不同 , 并发测试的挑战在于线程调度的不确定性 。 即使对于可能触发并发故障的测试 , 我们也经常需要执行多次测试才能暴露出错误的(即违反 oracle 的)线程交织 。尽管已经提出了一些有助于交错探索的技术 , 但是由于交错空间的巨大性 , 我们实际上只能探索少量测试的交错空间 。 由于有效的并发故障检测通常需要大量随机生成的测试 , 因此这对使用随机测试生成技术施加了严格的约束 。
现有的关于并发测试的著作大多研究如何根据交织覆盖标准指导给定并发测试的交织空间探索 。 然而 , 很少有研究用于交织覆盖标准的并发测试代码的生成 。 确实 , 这是一个重要的问题 , 因为如果我们能够生成并发测试代码 , 从而有效触发与给定交织覆盖范围标准相关的共享内存访问的交织 , 则可以大大提高测试效率 。 在探索大量与并发故障检测无关或对提高交错覆盖率无效的交错方面 , 它节省了多余的精力 。
自动生成交织覆盖率的测试会带来两个主要挑战 。 首先 , 它需要估计关于所有可能的并行测试的覆盖要求(即交织) 。然而 , 计算交织覆盖标准的可执行域恰好需要上下文敏感和同步敏感的分析 , 这对于并行程序来说是机器无法确定的 。 其次 , 它需要估计生成的并发测试可以覆盖的一组交织 , 以避免生成多余地探索交织的测试 。 但是 , 由于需要进行线程敏感的分析 , 因此精确估算的成本等于实际探索测试的交织空间的成本 , 这一点很棘手 。 先前的工作通过使用上下文无关的分析来估计交织覆盖范围 , 从而解决了挑战 。 但是 , 这种近似会导致需求的不可行或缺失 。
问题公式化
文章插图
2.1 面向对象的并发测试
文章插图
β 和 γ 序列将由两个不同的线程同时执行 。 β 和 γ 序列的示例可以在图 2 中找到 。 像现有的作品一样 , 我们对每个测试采用两个并发线程的最小配置 。这是因为以前的研究表明 , 如果在两个线程之间强制执行一定的部分顺序 , 则可以保证检出的并发错误中有 96%会显露出来 。
为了允许 P(t)触发共享内存访问 , 我们将 β 和 γ 中 CUT 类型的方法调用参数(包括对象接收器)限制为单个 CUT 类型的“被测对象”(SOUT) , 以便由 这两个序列可能会访问 SOUT 字段并触发共享内存访问 。 α 的作用是在同时执行 β 和 γ 之前初始化 SOUT 。 请注意 , 调用序列可以创建和变异其他对象 , 例如 , 那些与 CUT 类型不同的方法参数引用的对象 。 这些对象将不会在线程之间共享 。
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 面临|“熟悉的陌生人”不该被边缘化
- 中国|浅谈5G移动通信技术的前世和今生
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面