• 0
  • 0
分享
  • 软件测试团队的自动化测试权威指南——软件测试圈
  • 曼倩诙谐 2023-03-17 10:30:50 字数 3863 阅读 465 收藏 0

  根据《The Newstack》报道:软件测试平均消耗企业应用预算的30-40%。如果你参与了软件开发过程,那么你就会明白软件测试的重要性。如果bug在早期被发现,修复的成本无论是从金钱还是时间来考量,都会更低。

  随着软件开发项目的不断扩展,它们往往会变得更加复杂,随着项目开发周期变得越来越短,依靠手工测试来跟上进度可能会很有挑战性,所以越来越多的公司选择了自动化测试。因为这能够让他们在合理的时间范围内达到测试目的。

  但是什么是自动化测试,为什么它很重要?这是我们将在本指南中讨论的内容。

  自动化测试有什么好处?

  执行自动化测试的主要目的是减少构建产品所需的成本和时间,同时确保产品构建达到高标准。

1-1.jpg

来源:XBOSoft

  通过自动化测试,自动化工具和操作被添加到软件开发流程中。这样不仅速度更快,而且覆盖范围更广。如果测试是自动化的,那么每次都执行相同的测试,意味着你可以更快地找出更多的bug。自动化测试还可以出具更好的测试报告,最终,它在整个过程中节省了时间和费用。

  如果自动化测试的结果是可以接受的,那么就部署软件。如果没有,软件就会返回给开发人员,由他们进行必要的调整。假设有一个web应用程序在chrome浏览器上运行得很好,但是在旧版本的chrome浏览器上打开时,这些元素会现了故障。你可以利用Selenium测试自动化来识别所有的浏览器及其历史版本,在此基础上你可以重新编写代码。

  我们应该用自动化测试完全取代手工测试吗?

  随着自动化测试的实现,手工测试将会消失,这是IT行业的最大神话之一。然而,手工测试并没有消亡,至少在未来几年内不会消亡。自动化测试的主要目的是通过处理重复的测试用例来帮助减轻测试人员的带宽,这样手工测试人员就可以提出更独特的测试场景。另外,有一些特定类型的测试用例不能通过自动化测试来测试。例如,如果你的测试脚本与验证码有关,那么使用自动化测试是不可取的。

  让我们看另一个例子。假设你正在开发一个web应用程序,你想要测试的特性之一基于用户的输入返回数据,比如根据用户的活动显示在仪表板上的值,你可以通过自动化测试确定度量标准是否被正确计算。但是,你不能确定的是对于人类用户来说,仪表板是否具有视觉吸引力和直观性。你需要注意QA测试人员的细节。因此,在需要借助人工智能来测试web应用程序时,仍然需要手动测试。

  我们还必须记住,自动化测试并不是自动的。开发人员在确定所需的标准集之后仍然创建测试脚本和工作流程。这些测试可能被重复使用,但仅用于共享相同标准和需求的软件。

  自动化测试和手工测试都有它们的优点。关键是确定每个方面的哪个方面最适合你的软件,并相应地使用它们。

  自动化测试的类型

  自动化测试不是指单一的测试。有多种测试类型可以用来检查软件的性能、安全性和其他方面。以下是最常见测试类型的概述:

  回归测试

  这些确保现有代码或模块继续按预期运行,即使添加了新代码。在每次构建之后,通常会重复回归测试。

  冒烟测试

  也称为构建验证测试,冒烟测试用于检查应用程序最重要的特性或功能是否按预期运行。如果应用程序没有通过冒烟测试,它将被返回给开发人员进行调整。

  跨浏览器测试

  这些测试确保你的web应用程序在不同的浏览器上运行良好。由于不同的浏览器有不同的搜索引擎,它们之间可能会有一些差异,因为某些浏览器可能不支持某些元素。多亏了像Selenium这样的开源自动化测试框架,它使得自动化浏览器测试变得更加容易,为网络测试人员节省了大量的时间和精力。使用Selenium自动化测试测试人员能够确保网站在所有浏览器、浏览器版本和操作系统上完美呈现。

  响应测试

  除了在不同的浏览器上测试之外,你还需要确保你的网站能在不同的移动设备上运行。由于每个移动设备都有不同的视图端口,因此你需要确保你网站上的内容响应迅速,并在不同的移动视图端口上进行适当调整。现在,你的自动化测试脚本无法判断内容是否按照设计呈现。然而,使用一个开源的自动化测试框架,比如Selenium,你可以收集不同屏幕分辨率下你的网站的整页截图,然后你可以自己轻松地比较它们。

  用户界面测试

  这用户界面测试表示应用程序的前端。这是产品中最难测试的部分,因为用户输入变化很大。尽管用户界面可以像命令行界面一样简单,但用户界面测试中可能出现的按键序列或命令行变化可能很大。

  输入/输出测试

  这与用户界面测试相关联,并检查应用程序是否正确地将输入数据转换为输出数据。例如,你可以使用样本数据集来检查应用程序是否旨在执行计算,并以应有的方式导出输出函数。

  单元测试

  这些评估软件平台的单个单元。一个单元是任何软件中最小的可测试部分,通常只有一个或很少的输入,它通常还会导出一个输出。

  API测试

  API 测试有助于验证应用编程接口中请求和响应的交互。这些可以涉及各种端点,包括数据库、大型机、用户界面和网络服务。

  集成测试

  在集成测试中,所有的单元被合并,所有的单元被一起测试。进行这些测试是为了确保当不同的单元相互作用并且应用程序按预期工作时没有bug。

  验收测试

  这些是确保项目完成的测试。它们很难自动化,所以它们通常被保留在项目开发周期的最后阶段。

  性能测试

  这些评估应用程序在压力下的性能。这些测试的结果是添加限制或警告以防止意外问题的基础。

  随机性测试

  在随机性测试中,主要的想法是看看当你提供随机输入时,web应用程序是否会崩溃。

  在测试软件时,你可以选择以分层的方式或快速连续的方式使用这些测试中的一个或多个。有意义的方法取决于需要检查的应用程序问题。在这里,信息技术团队需要确定哪些测试需要自动化,哪些不需要。

  执行自动化测试的策略

  执行自动化测试的主要目的是减少构建产品所需的成本和时间,同时确保产品构建达到高标准。在决定自动化哪些测试时,企业应该注意哪种方法将产生最高的投资回报。

  迈克·科恩的敏捷自动化测试金字塔可以帮助建立一个实现自动化测试的好策略:

1-2.jpg

来源:Search Software Equality

  传统测试旨在寻找bug。在传统的测试场景中,开发人员编写代码来实现特性,然后QA测试人员检查要修复的bug。

  然而,通过敏捷测试——如上面的金字塔所示——你有了一个更坚实的基础,因为大部分测试是在单元级的自动化测试中完成的。你在金字塔上爬得越高,你需要运行的测试就越少。

  敏捷测试系统告诉我们,测试套件应该包括编写许多小而快速的单元测试。此外,为了对你的web应用程序进行端到端测试,还需要进行一些高级别的测试。通过进行敏捷测试,不是寻找bug,实际上是避免了bug的产生!

  自动化测试框架

  仅仅决定什么时候自动化,什么时候不自动化是不够的。对于一个好的自动化策略,确定测试执行环境中涉及的指导方针、报告、过程和工作流同样重要。你使用的自动化测试框架也很重要。

  除了定义你可用的资源、报告的方式以及创建测试所涉及的工具和语言之外,你的自动化测试框架还应该优化这些测试,以便将人工干预的需求降到最低。

  你的自动化测试框架旨在帮助开发人员和测试人员更有效地工作。你需要一个优化的系统,使他们能够在项目的每个阶段轻松地创建、执行和报告。

  Selenium提供了很多自动化测试框架,几乎在所有的主要编程语言上,你可以根据你的需求和团队对Selenium自动化测试的理解来使用它们。

  选择正确的自动化测试工具

  选择自动化工具需要仔细考虑,以确保效率和有效性。你应该首先从许多可用的工具中检查哪些工具测试与你的产品相关的特定问题。一些工具针对特定问题进行测试,而其他工具则作为一体化解决方案进行推广。使用一个工具来解决多个问题当然更有效,但前提是它必须做到彻底。

  你的自动化测试工具要适合操作系统的现有开发框架。此外,它应该与软件开发工作流程中的其他工具集成,理想情况下,它还需要支持用于自动化测试的开发人员本地编程语言,如Python或Java。

  自动化测试的未来

  自动化测试领域是一个不断发展的领域,人工智能和日益复杂的机器学习算法的使用促进它的发展。这使得相关工具能够在未来专注于与软件测试最相关的领域,并解放开发人员,减少开发人员的工作量,提升工作效率。人工智能的发展还能够让越来越多的流程在未来实现自动化。

  我们也很有可能看到机器人过程自动化(RPA)的巨大进步。RPA技术使用人工智能来模拟潜在的用户动作,从而有效地自动化测试过程的另一个步骤,与此同时,RPA在低代码软件开发平台中也使用得越来越频繁。

1-3.jpg

来源:Hackernoon

  这些技术——RPA、人工智能、低代码编程,甚至自动化测试本身——都还处于相对初级的发展阶段。随着技术以前所未有的速度发展,很难预测软件开发的未来。正是这些无限的可能性使得软件自动化测试领域更加令人兴奋。

  总结

  在本文中,我们探讨了自动化测试的重要性,尽管自动化测试正在兴起,并且在减少停机时间和成本方面发挥着重要作用,但它永远不能取代手工测试的复杂性。因而认识到什么需要自动化,什么不需要自动化是很重要的。在执行Selenium自动化测试时要注意的重要一点是,它支持许多编程语言和许多框架,这让根据团队技能集和易用性采用不同的框架变得很容易。



作者:佚名    

来源:http://www.51testing.com/html/96/n-7793596.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,皮尤研究中心的一项调查显示,Twitter的用户们仍然在使用这个社交媒体平台,但自从去年年底埃隆·马斯克完成对该公司的收购后,在上面发帖的人正在变得越来越少。  当地时间周三,这份调查的作者表示:“研究中心对该网站用户实际行为的新分析发现,马斯克收购前最活跃的用户(按推文量排序为前20%的用户),在收购后的几个月里出现了明显的发帖量下降趋势。在收购完成之后,这些用户每月的平均推文数量下降了约25%。”  此外,调查显示,在过去一年中使用过Twitter的美国成年人中,约有60%的人表示他们最近已经中断了这项服务,四分之一的人表示他们一年后不会再使用Twitter。  新的数据凸显了...
            0 0 856
            分享
          •   十年测试心路历程:  由于历史原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等。  我大学学的计算机专业,有一定的编程基础。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。有人留言问到我,在一线城市做功能测试,如果定个小目标,想拿到年薪二十万,需要具备哪些技能?  首先必须熟练整个产品的业务流程、业务是基础,这样保证产品在快速迭代时、不仅保证新功能的完整性,而且快速回归原有功能不受影响。然后需要掌握一些常用测试工具来辅助测试:  Web端测试:浏览器开发者工具使用,network、con...
            0 0 1137
            分享
          • 读者提问:我们公司的项目一个功能打一个版本分支,按理来说开发改问题的时候我们可以测其他功能的,但是开发又说不行。这样比较耽误测试时间,影响项目正常上线,不知道这是什么原因是造成的呢 ?阿常回答:建议增加一套开发环境通常每个开发会有自己的功能特性分支,然后有一个主分支是对应生产环境,另一个分支对应测试环境。猜测你们是缺少开发环境的,所以开发验功能只能在测试环境操作,这就耽误了测试人员验证其他功能。阿常碎碎念:以上问答始发于 2022/3/24 「软件测试圈」,来源于小布丁向阿常的提问
            0 0 1383
            分享
          •   随着金融科技的不断发展与创新,大数据人工智能、云计算等技术在金融领域的应用日益深入,数字金融领域不断涌现出物联网和数字货币等新兴场景。这无疑加剧了各个银行之间的竞争,谁能推出时效性高、创新性高、体验性好的产品,谁就能在市场取得先机。这一趋势无疑对金融系统安全带来了巨大的挑战,也对提出了更高的要求。  测试作为产品研发生命周期的重要一环,在质量保障上已经扮演了越来越关键的作用。手工测试因投入大,效率低等弊端,已经逐渐无法满足金融科技背景下产品快速迭代的需要。通过各项技术开展自动化测试是金融科技背景下银行测试的必经之路。  自动化测试简介与分类  自动化测试是指把以人为驱动的测试行为转化为机器...
            14 14 2130
            分享
          • 一、白盒测试的主要测试方法1、代码检查法;2、静态结构分析法;3、静态质量度量法;4、逻辑覆盖法;5、基本路径测试法(应用最广泛);6、域测试7、符号测试;8、Z路径覆盖;9、程序变异。二、基本路径测试法1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。2、基本路径测试法的基本步骤程序的控制流图:描述程序控制流的一种图示方法。程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执...
            14 14 937
            分享
      • 51testing软件测试圈微信