川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > 常见问题

软件自动化测试基础知识(上)

作者:川石学院 日期:2021-10-12 16:40:11 点击数:

  软件自动化测试基础知识(上)

  一、自动化软件测试的定义

  随着敏捷与DevOps的兴起,自动软件测试得到了迅猛的发展。那么什么是自动化软件测试呢?自动化软件测试分为广义定义和狭义定义。从广义定义来说:自动化软件测试包括从软件测试的分析、设计到软件测试的环境部署、数据准备、测试用例的生成、执行以及结果分析到最后产出报告均达到自动化的水平。从狭义定义来说:自动化软件测试仅仅包括软件测试用例的执行的自动化。

软件自动化测试基础知识(上)(图1)

  二、 软件自动化测试模型

  金字塔模型是Mike·Cohn先生提出的,见图1-1所示

软件自动化测试基础知识(上)(图2)

图1-1 软件自动化测试金字塔模型

  Mike·Cohn先生认为开发人员在开发的时候应该做好单元测试,一旦在单元测试中发现问题,可以很快定位到产品中的相应代码。由于现在的开发都是采用面向对象的方法,基于代码层面的集成测试,变得越来越困难,现在比较流行的是基于协议层面的接口测试或者基于API进行的代码级别的黑盒测试。由于用户操作是在GUI层面的,所以基于GUI的测试也是个非常重要的。但是过多的单元测试给开发带来很大的工作量,许多时候单元测试代码比产品代码本身还要大。另外受到需求的变更,这些代码随时需要维护;另外由于基于GUI的自动化测试的速度相当慢,运行一个测试用例几乎需要占用几秒到几十秒,在数万到数十万、数百万测试集的场景下,这种自动化测试是应对不了的。所以基于纺锤型的自动化测试模型出现了,如图1-2所示

软件自动化测试基础知识(上)(图3)

图1-2 软件自动化测试纺锤模型

  在这种模型下,大量的工作交给了接口测试或者API测试。单元测试和基于GUI的自动化测试仅仅完成重要的代码和关键的业务流程。这是现在自动化测试的发展趋势。

  三、软件自动化测试应该注意的事项

  •   自动化测试工具本身也是软件,也要重视工具本身的质量

  自动化测试工具也是通过编写代码实现的,所以肯定也存在缺陷或不符合软件测试需求或者产品需求的地方。在工作中经常会发生如下情形:当自动化测试工具显示出某个测试用例的测试结果没有通过,然后开发工程师对相应部分的产品代码进行排查,同时测试工程师配合开发工程师也对测试代码以及测试数据进行排查,最后发现没通过的原因可能在产品代码上,也可能在测试代码上,还可能在测试数据上。为了提高测试代码的质量,通常采用以下几种方法

  (1)书写测试代码前,先对相应的测试用例进行严格的评审工作。使得开发、测试、运维以及需求人员在早起对于产品的需求就有一致的理解。

  (2)当测试代码书写完毕,对测试代码进行严格的验证。

  (3)检查是否存在测试数据发生问题,建议采用测试数据与测试代码分离的机制。

  由于测试代码相对于产品代码简单,所以走读检查比较容易实施。虽然对测试用例评审与对测试代码走读都很费时间和精力,但这是控制测试代码质量的最好办法。对测试用例的评审、对测试代码的走读最好由专门的负责人员安排专门的场所(如会议室)进行,如有可能,最好请相关人员,如软件测试工程师、开发工程师、需求工程师、运维工程师一起参加,以便更有效地达到评审或走读的效果。

  •   自动化测试工具要随用户的需求变化而变化

  百度百科中提到,“自动化测试的前提条件之一是软件需求变动不频繁”。但是,现实情况是用户的需求经常变化。而“拥抱变化”是敏捷开发提倡的一个理念,所以,使用自动化工具进行软件测试时,需要注意:当用户的需求发生变更时,开发要及时调整产品代码,与此同时,测试工程师也应该及时对测试代码进行调整。在后面的章节中会提到自动化测试中成本最高的往往在脚本维护中。

  •   不是所有的功能都可以作自动化测试

  在软件测试界一直以来有一句非常经典的话:“自动化测试永远代替不了手工测试”。

  使用自动化测试工具的同行都会感受到自动化测试工具给工作带来的便利,但是并不是所有的功能都可以通过自动化测试方式来实现,如James Whittaker在他的《探索式软件测试》一书中提到的超模软件测试(其实就是一种用户体验性测试),由于这种类型的软件测试没有统一的标准,且具有一定的主观性,所以不适合用自动化方式来进行测试。对于如何选用自动化测试,在第1.2.1-5节将有所详细地描述。

  •   探索式软件测试也可由自动化测试来实现

  “探索式软件测试”是软件测试专家CemKaner博士于1983年提出,由于它符合快速交付的理论,且随着近年来敏捷和DevOps的兴起,探索式软件测试也被重新提出。但是,许多人可能存在一种误解,认为探索式软件测试只能通过手工测试的方法实现,而不能采用自动化测试。然而,就像James Whittaker在《探索式软件测试》一书中提到的“强迫症软件测试法”,由于这种方法具有典型的机械重复性,所以最好采用自动化工具来实现,这样可以节省很多精力,还可以带来很好的效果。

  •   是否需要采用自动化测试,需要考虑测试的效率

  自动化测试虽好,但它也具有一定的局限性。如果采用现有的自动化测试工具,那么学习、熟悉、了解这些自动化测试工具要花费一定的时间和精力。如果自己开发自动化测试工具,开发的过程更要花费相当的时间和人力。所以,对于一些需求还不稳定,需求变化很频繁或者对特定客户订制的一些很容易用手工测试来进行的小的功能,就不需要用自动化测试方式了。对于如何选用自动化测试,在后面将有所详细地描述。

  •   自动化测试可以覆盖软件测试中的每个阶段

  很多刚入门的软件测试的新手往往认为自动化测试只限于系统测试和验收测试,而不适用于单元测试和集成测试,其实,这不完全正确的。开源工具JUnit、TestNG、unittest、Pytest以及ParaSoft公司出品的Jtest、Ctest、C++Test和Google公司开发的Gtest等工具都是基于单元测试或集成测试的。但是它们也承担了接口测试和基于GUI测试的测试框架的角色。

  •   不要盲目选用现有的自动化测试工具

  目前市面上有许多自动化测试工具,如本章开始部分提到的那些产品。如何选用这些自动化工具请参见后面的章节。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-10-12 16:40:11
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-10-12 16:40:11
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-10-12 16:40:11
  • 建筑工程专业朱同学成功转行为软件测试人!2021-10-12 16:40:11
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-10-12 16:40:11
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-10-12 16:40:11
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-10-12 16:40:11
  • 文科生转行软件测试照样拿下高薪15K!2021-10-12 16:40:11
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-10-12 16:40:11
  • 毕业1年,迷茫的他最终选择转行软件测试2021-10-12 16:40:11