Skip to main content

app testing 领域文章阅读

·97 words·1 min

没啥原因,就是想看了

NCF 概念 #

传统测试中关注导致crush的漏洞或者能产生危害的漏洞(crush->expolition)

而 non-crash functional (NCF) 问题用工具比较难以检测,一个常见的类别是前端ui显示错误,但是后端接口正常,这种问题很难被检测到

用一个文章里面的example来解释,存储照片时把空格解析成%20,很影响用户体验,也很影响后面的小功能继续开发

Alt text

经常折腾编码的小伙伴一定体验过存东西的时候不管编码问题直接大力飞砖

然后开发新功能直接火葬场 debug三天三夜也找不到问题所在这种事

LLM 检测NCF的几种方法 #

intuition上来讲,传统的工具无法做到对NCF的良好检测是因为不厚human like,LLM的出现在intuition上提供的一种比较human like的check方法

A Study of Using Multimodal LLMs for Non-Crash Functional Bug Detection in Android Apps讲得比较宽泛,做了很多概念上的研究和努力

目前看到比较好的方法是另一篇Zhe Liu团队正在预印的文章Vision-driven Non-crash Functional Bug Detection for Mobile Apps

https://github.com/testtestA6/VisionDroid

其中提供了详细的prompt供我们学习,这个项目结合

  1. NCF检测这个新需求
  2. 截图+文本信息 形成视觉提示使LLM更好理解上下文
  3. 交互式多模态LLM问答任务

来增强对于NCF的检测,其中 截图+文本信息形成视觉提示 和 LLM测APP NCF的方法检测在古书中早有记载

但看起来文章完成了有机结合,发挥了主观能动性,体现了温故而知新的学习态度

Property-based Testing #

Property-Based Testing for Validating User Privacy-Related Functionalities in Social Media Apps

这篇文章纯软工测试方面了

属性驱动测试(Property-Based Testing)是一种软件测试方法,它的主要思想是通过定义属性和约束,测试系统的行为是否符合预期的规范

Fuzz Testing和Property-based Testing是有区别的区别

他们的行为和侧重不一样

Property-based Testing 希望系统符合预期

Fuzz Testing希望系统不符合预期

Property-based Testing被多用在app testing中可能是为了用约束属性的方式来尽量模拟用户输入,从而找到更多事实有用的bug

嗯fuzzing可能出来一些永远不可能被触发的漏洞

Decomposed Prompting #

这是一篇将递归,子问题(dp)思维带入带LLM的文章

https://github.com/allenai/DecomP

Alt text

经常折腾动归的小朋友都折腾过f(10) = f(9)+f(8)z这种子问题思想

Cot相当于写了个for循环然后再sum

而Decomposed Prompting鼓励使用更加合理的方式规划子问题

大道至简