大话2免费版一级星盘炼化表

    1. <form id=zhudObCNh><nobr id=zhudObCNh></nobr></form>
      <address id=zhudObCNh><nobr id=zhudObCNh><nobr id=zhudObCNh></nobr></nobr></address>

      自動化測試框架知識,讀這一篇就夠了!

      翻譯

      自動化測試因其節約成本、提高效率、減少手動幹預等優勢已經日漸成爲測試人員的“潮流”,從業人員日益清楚地明白實現自動化框架是軟件自動化項目成功的關鍵因素之一。本篇文章將從什麽是真正的自動化測試框架、自動化腳本如何工作以及自動化測試框架會如何在測試過程中爲你提供競爭優勢三個方面進行闡述,讓您通過這一篇文章,踏入自動化測試框架的領域。

      自動化測試的優勢

      自動化測試的流行和諸多優勢並不意味著它是靈丹妙藥,定制型項目、周期短、測試易用性等情況並不適合自動化測試。但不可否認的是,如果認真計劃和執行自動化測試框架,確實會爲軟件開發和測試公司帶來以下好處:
       

      最短時間-最大收益


      構建任何可行的自動化測試框架和自動化腳本都可以最大程度地減少編寫和運行測試所花費的時間,從而可以在短時間內獲得最大的輸出。另外,擁有優秀的自動化測試框架後,人力就可以從諸如同步、錯誤管理、本地配置,報告生成、解釋等這些常見問題中解脫出來。
       

      可重複使用和可讀的自動化代碼


      當你使用現有組件庫中提到的代碼時,大可以放心,它在以後的時間內仍然是可讀和可重複使用的,並且所有相關任務(如報告、同步和故障排除)都將變得更易訪問。
       

      資源優化

      一些公司没有如设想的一般从自动化实施中受益,因为从自动化测试中获得的效益取决于采用它的灵活性。 如果自动化系统是灵活的,并且与从事各个组件的不同团队兼容,那么在資源優化和知识共享方面可以提供巨大的收益。

      自動化測試框架的定義

      在其他很多行業中,“自動化”指的是通過智能算法自動處理流程,流程運行是很少或完全不需要人工幹預。而在軟件行業中,自動化測試指的是通過自動化工具(授權版本或開源版本皆可)對軟件應用程序進行各種測試。從技術角度來說,自動化測試框架是一組定制的、可以用來執行腳本化測試和全面報告測試結果的交互式組件。
      要成功地構建自動化測試框架,需要考慮到軟件質量保障專家的建議,他們可以幫助觀察並幫助控制整個測試過程,提高測試結果的准確性。經過精心設計的自動化測試框架能讓測試人員以一種實用、簡化的方式執行自動化測試。

      自動化測試框架的類型

      以工具爲中心的框架

      不管是商业自动化工具和开源自动化工具,都有有助于在测试环境中生成报告、测试套件和分布式测试执行的系统基础设施。比如Selenium 自动化框架,该框架具有主要组件WebDriver——基于Web浏览器的插件,用于控制和操作 Web 浏览器中的应用程序的 DOM 模型。Selenium 测试自动化框架还拥有实用的编码库和记录回放工具。

      另外一个专用于工具的重要框架是 Serenity,它是围绕 Selenium Web 驱动程序构建的加速器。 在这种情况下,为加快测试自动化实施过程的速度,社区将特定组件组合在一个公共实体中。

      诸如 TestComplete,Ranorex HP QTP 这些工具专用框架时,就很难做出明确的判断,因为它们都是由带有动作模拟器、报告和脚本 IDE 的已部署基础架构预先构建的。

      以應用爲中心的框架

      这种类型的框架是为实现某个特定应用程序项目自动化而定制的。以應用爲中心的框架支持某个指定目标的应用程序实现测试自动化的需求,由从开源库构建的组件驱动。这种框架可以围绕SUT创建友好的测试环境来运行一些基本功能,包括部署开发的应用程序、运行应用程序、测试用例执行、直接测试结果报告和便于编码的包装器控件。以應用爲中心的框架还会有一个组件来支持在不同操作系统和浏览器上跨各种云环境的测试运行。

      關鍵字驅動框架


      關鍵字驅動框架主要可以吸引缺乏编码经验的新手开发和测试人员,它既可以是以工具爲中心的框架,也可以是以项目为中心的框架。關鍵字驅動框架可以让编码不熟练的员工参与编写、理解自动化脚本。用于编码的關鍵字集(如 Login、NavigateToPage、Click、TypeText)作为關鍵字存储库安装在代码库里,根据提供的關鍵字引用编写脚本的电子表格将被传递到關鍵字解释器来执行测试

      理想的自動化測試框架的主要組件

      如果要实现功能强大且性能卓越的测试自动化框架(无论是开源还是商业的),就必须把包括构成其核心的某些组件考虑在内。 有些框架可能包括所有组件,也有些框架只包括其中几个,所以不必在每个框架中都涉及到下面提到的所有组件。

      1. 测试基础组件

      a)單元測試

      單元測試基礎組件可以作爲任何自動化測試框架的基本部分。它可以用于以下情況:
       
      ● 通过@test 或[test]等特定的形式来定义正在使用的测试方法
      ● 执行影响自动化测试最终结果的断言
      ●運行簡單明了的測試
       
      无论是从命令行、IDE、专用工具还是 CI(持续集成)系统运行测试,为了确保单元测试以简单的方式运行,单元测试库都提供了测试运行器。
       
      单元测试库支持几乎所有编程语言,比如以下这些:Java 的 JUnit 和 TestNG,.NET 的 NUnit 和 MSTest,Python 的 unittest(前身为 PyUnit)。

      b)集成和端到端測試

       在執行集成和端到端測試自動化的同時,也非常合適去實踐現有測試庫提供的功能。由應用程序UI驅動的API級測試需要有消除不必要的編碼負擔的組件,這樣能讓與被測應用程序的交互變得更容易。因而,測試人員就不會受到連接到應用程序、發送請求、接收結果響應這些編碼工作的困擾。

      这种类型的几个重要测试组件有:Selenium(可用于主要语言)、protractor(特定于 JavaScript)、Karate DSL(Java 特定的 API 级集成测试)。

      c)行爲驅動開發(BDD)

      专门用于BDD的组件以行为规范为目标,以可执行代码的形式创建可执行规范。在这部分,测试人员可以将预测行为的不同特性和场景转化为代码。尽管不像其他测试工具哪有直接跟被测应用程序交互,但可以作为BDD过程的支持,创建与自动化测试的范围和意图相一致的活动文档。BDD组件的典型例子有:cucumber(支持主要语言)、Jasmine (JavaScript)、SpecFlow (for .NET)。

      2、測試數據管理

      在軟件測試自動化和測試創建過程中,最大的困難是如何利用測試數據管理系統。隨著自動化測試數量的增加,始終存在這樣一個問題:確保執行特定測試所需的某些測試數據在執行測試時可用或可創建。目前對這種情況並沒有一個萬無一失的解決方案,這就要求采用可靠的測試數據管理方法來讓自動化工作成功運轉。
       因此所采用的自動化測試框架需要配置充分,以便能提供基本的補救措施來進入或創建、清除要執行的測試數據。解決這一問題的方法是使用適當的模擬工具,使數據更加簡化、更加清晰、更易于理解。

      3、mock、stubs和虛擬資産

        在对自动化测试进行实践和探索的历程中,可能会出现以下情况:

      ●希望將模塊與在單元測試中有經驗的已連接組件隔離

      ●處理在現代應用程序的集成,或端到端測試中常見的繁瑣而關鍵的依賴關系
       
      在这些情况里,就会觉得创建mock、stubs和虚拟资产来反映连接组件的行为模式是非常必要的,还可能会发现处理 mock 和 stub 是一项大范围、大体量的任务。无论如何,测试人员都会意识到,在开发自动化测试框架期间选择有用的虚拟化工具是件十分重要的事。

      實現模式的通用機制

      除了以上提及自動化框架組件,還有一些有用的機制可以幫助創建、使用和維護自動化測試,例如:


      包装器方法(Wrapper methods):使用 Selenium WebDriver 组件时,创建自定义包装器会让人更轻松地处理错误。 创建了用于 Selenium API 调用的自定义包装后,就可以更好地处理超时、异常处理和故障报告。 这之后,创建了自动化测试的人员可以重新使用,这样就可以避开复杂流程的关注点,专注于进行有价值的测试。

      抽象方法(Abstraction methods):抽象机制意味着可读性的提高和冗余细节的掩盖。例如,在创建 Selenium WebDriver 测试时使用页面对象的目的是在网页上公开用户输入操作,包括输入凭据或单击页面上的某处,目标是通过超越或绕过探索页面特定元素的需求来实现高级测试方法。 此方法适用于许多类似的应用程序和自动化测试。

       測試結果報告

      在選擇將測試結果報告到自動化框架中的庫或機制時,需要將查看這份報告的目標受衆考慮在內。在這方面,需遵循以下幾個注意事項:

      ●诸如 Junit 和 TestNG 之类的单元测试框架生成的报告主要针对如 CI(持续集成)服务器之类的接收系统,这些系统最终会对其进行解释并以其他软件可使用的 XML 格式进行呈现。
       
      ●当寻求使用大多数人都能理解的语言作为进行报告的工具时,你可能需要考虑使用与单元测试框架兼容的商业工具,比如用于 Junit、NUnit 和 TestNG 的 UFT-Pro。
       
      ●另一种选择是利用诸如 ExtentReports 之类的第三方库,该库以易于理解的格式创建测试结果报告,包括通过饼形图、图形或图像进行可视化解释。

      輔助平台

      除了自动化测试框架本身,一些跟持续集成相关的輔助平台也会对自动化测试有很大的帮助。比如CI可以进行交付件部署、测试调度;源代码平台可管理産品和测试脚本的代码;依赖管理器一般是针对某种语言类库的依赖管理工具,比如用nexus管理公司员工开发的通用java类型;禅道ZTF包含持续集成、单元测试和版本库管理等特性。

      CI平台

      为了以更快、更连贯的方式进行应用程序测试,持续集成平台可以帮助您定期构建软件并为新版本运行各种测试。 当开发和部署新功能以及更新现有功能时,此方法使开发人员和测试人员对应用程序质量获得定期反馈和迅速响应。 当前一些突出的持续集成平台有TeamCity、CircleCI、Jenkins 等。

      源代碼管理

      与手动测试一样,自动化测试也涉及编写和存储源代码版本。 每个开发公司都有一个精选的源代码和版本控制系统来保存并保护源代码。 自动化测试需要完善的源代碼管理系统,该系统在处理生产代码时会非常方便。 典型的源代碼管理示例有 Git和Subversion 。

      創建依賴管理器

      依赖性管理器的主要目的是协助收集、管理现有的已经应用在自动化软件解决方案 的功能中的依赖性和库。某些工具(例如Maven和Gradle)同时充当依赖管理器并帮助构建工具。构建工具旨在帮助您从源代码和支持库开发自动化软件并运行测试。这方面的工具包括Ant,npm 和 NuGet。

      禅道ZTF

      ZTF支持與禅道無縫集成,可將禅道用例和自動化測試腳本一一綁定,執行的結果能提交到禅道中作爲測試結果,執行失敗的腳本也可以自動創建bug。ZTF自動化測試框架實現了與Jenkins持續集成功能打通。用戶發起任務後,通過ZTF自動執行測試腳本,把單元測試的結果回傳給禅道,二者合作打通了持續集成閉環。

      框架的搭建和實施過程

      以下是規劃實現自動化測試解決方案的幾種方式:
       
      ●从客户的角度探讨自动化的实际适用性、从各个角度检查其外观是否良好、并在未充分使用的技术上进行测试。 与之相比,如果自动化开发的努力大大超过预期的优势,那自动化测试就没有什么必要。
       
      ● 密切关注被测系统的技术,以便找到能够完美模拟用户行为的最合适的自动化测试工具,这一点至关重要。
       
      ●建議采用基于階段的實現方法,其中每個階段都具有交付自動化測試腳本的優先級,同時添加框架功能以實現預期的腳本執行。
       
      ●在启动软件自动化测试之前,为了确保正确执行自动化决策,必须首先估算实施后的投资回报率、概念证明、运行手动回归或冒烟测试的时间以及每个版本的运行周期数 。

       結論

      在當今快節奏、殘酷的軟件開發生態系統中,自動化測試框架在保持軟件測試周期的速度、效率和清晰度方面起著不可或缺的作用。隨著人工智能被引入到軟件測試中,考慮采用自動化測試框架的組織必須深入研究最終框架的設計之後才能涉足這一領域。良好的框架設計和使用組件的策略將爲最終的自動化測試框架奠定基礎。
       
      構建成熟、精細、靈活的自動化測試框架體系結構的最好方法是從小處著手,頻繁地進行測試和審核,並逐步向更高的層次構建擴展版本。從早期開始准備大量的自動化測試很方便,可以更快地看到工作框架,避免之後在自動化測試階段出現沖突或受損的情況。
       
      上面闡述的指南旨在幫助軟件測試人員和公司,以讓大家從那些成功的執行自動化測試的項目中汲取經驗。

      参考文献:Mitul Makadia.The ABC of Test Automation Frameworks [OL].(2020-04-20)https://dzone.com/articles/the-abc-of-test-automation-frameworks



      DevOps幹貨
      HoME大话2免费版一级星盘炼化表