测试之巅—自动化测试

发表于:2020-5-09 10:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:肖哥shelwin    来源:测试不将就

  这些年,自动驾驶的概念很火。美国汽车工程师协会提出了六级(L0-L5)分层模型,用来衡量自动驾驶的能力和水平。许多人对这个分类模型耳熟能详。
  自动化测试和自动化驾驶一样,也是人类的梦想。如何衡量自动化测试的水平呢?有人就参考自动驾驶的分层方法,对自动化测试也进行了类似的分级(参见《人工智能测试的六个层次》、《测试工程师不懂AI,还有未来吗?》等文章)。
  仔细看完具体的分类内容后,我发现这些分级方法存在模仿过度的问题。由于忽视了软件测试的本质,由于脱离了自动化测试的实际,而划分出在我看来有些错乱的类型。 例如,将难度最高的测试检查点自动化划分为L1层次。
  给自动化测试分等级,不能偏离测试的基本原理。软件测试是构造测试输入,作用于被测软件,然后观察其实际输出并与期望输出进行比较的过程。软件测试依赖于(1) 测试输入和(2) 期望输出。其中测试输入与测试数据、测试步骤、测试操作序列等概念等价。
  在已知测试输入和期望输出的情况下,自动化测试成为一个编程问题。无数通用或专用编程语言,例如Python、Java、Robot Framework等,能够帮助我们解决这个问题。
  编程需要人工。编程之后,测试就可以实现自动化执行。相比完全手动的L0,这个层次的自动化测试是L1。这也是自动化测试领域当今的主流水平。
  在L1基础上,要想更进一步,需要突破测试输入和期望输出的自动生成。这是两个问题。
  1,自动生成测试输入
  在进行软件测试时,测试人员需要精心构造测试数据和测试步骤,以期实现更高的覆盖,发现更多的bug。
  业界尝试了许多方法,来自动生成测试数据和步骤。例如随机方法、Fuzzing方法、基于搜索的方法、基于模型的方法、基于机器学习的方法等。
  这些方法或多或少存在以下问题:(1) 生成的用例数量过多,(2) 生成的用例长度过长,(2) 产生的误报率过高,(4) 测试的覆盖率过低等。除了有成本低的优势之外,它们与人工设计相比,质量还相差甚远。
  测试输入的生成处于研究阶段,可落地成果还较少。倘若突破了测试输入的自动生成,那么我们可以达到L2级的自动化测试。
  2,期望输出自动生成
  写过测试用例的人都知道,用例的相当篇幅是关于检查点的。为了一个个检查点,我们需要对说明文档抠字眼,需要与用户、与产品经理、与开发人员反复核对。即使这样,有时候用例失败报bug,结果由于我们的检查点不合理而被打回。
  这些现象从侧面反映了测试结果判定的难度。结果判定难,关键在于软件的期望输出获取难。这个难题又叫做oracle难题。这里oracle的意思是预言、神谕。可以说,做预言有多难,生成期望输出就有多难。人工都难,自动化就更难了。
  oracle自动化之难,难于上青天。
  过去几十年的研究表明,大家对测试oracle自动化基本还没多少办法。倘若突破了oracle生成的自动化,那么我们就可以实现L3级别的自动化测试。
  只有用例生成、用例执行和结果判定都自动化了,软件测试才能够实现端到端、一站式的自动化。这是自动化测试的终极目标,是测试之巅,是真正的“解放”。
  这张图就是我认为的自动化测试等级模型。这个模型很简单,也比较符合实际。说它符合实际,是因为自动化测试的现状就是:用例执行自动化80分,用例生成自动化20分,oracle自动化5分。
  基于这个实际,任何的新技术、新工具,例如机器学习、人工智能,只有解决了测试真正的瓶颈问题(用例生成和oracle生成),才能算明显地推动了测试的进步。

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号