自动化测试方案

简介: 自动化测试方案

 自动化测试体系方案

方案1全编写代码流程

UI自动化:

使用python或java,配合selenium库及pytest框架做UI自动化测试。(通过selenium的webdriver驱动,驱使浏览器)

1. WebDriver API(基于Java、Python)

java:下载下来的selenium的Jar包,比如selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本

python:使用pip安装selenium库,可以指定安装版本,一般一最新的为主

2. 浏览器的驱动(browser driver)

每个浏览器都有自己的驱动,均以exe文件形式存在

比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe

3. 浏览器

在WebDriver脚本运行的时候:

对于每一条Selenium脚本,一个http请求会被创建并且发送给浏览器的驱动,浏览器驱动中包含了一个HTTP Server,用来接收这些http请求,HTTP Server接收到请求后根据请求来具体操控对应的浏览器,浏览器执行具体的测试步骤,浏览器将步骤执行结果返回给HTTP Server

HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。

4、实现方式(元素定位及操作函数):

1、定位元素:将页面元素全部存储到配置文件(.ini、.yaml、等文件中),元素获取的方式有以下八种:

    • find_element_by_id()通过ID定位
    • find_element_by_name()通过name定位
    • find_element_by_class_name()通过class_name定位
    • find_element_by_tag_name()通过tag定位
    • find_element_by_link_text()通过link_text定位
    • find_element_by_partial_link_text()通过partial_lisk_text定位
    • find_element_by_xpath()#通过xpath定位
    • find_element_by_css_selector()通过css_selector定位

    2、操作方式:通过selenium的函数和方法调用元素来控制网页端的模拟操作(click(点击)、senk_keys(输入)、get_attribute(获取)等调用操作元素的函数方法)。

    3、UI自动化PO模式:

    核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。

    PO模式可以把一个页面分为三层,对象库层、操作层、业务层。

    对象库层:封装定位元素的方法。操作层:封装对元素的操作。

    业务层:将一个或多个操作组合起来完成一个业务功能。比如登录:需要输入帐号、密码、点击登录三个操作。

    4、PO模式的好处:

      • 减少冗余代码
      • 业务代码和测试代码被分开,降低耦合性维护成本低
      • 减少业务流程不清晰的后期维护成本

      二、接口自动化

      使用python配合requests+pytest框架做http接口自动化测试(通过使用requests库模拟http客户端给服务端发送请求)

        1. requests 库使用:

        Requests中的 get() 方法能向服务器发送了一个请求,请求类型为 HTTP 协议的 GET 方式;post() 方法,也能向服务器发送一个请求,请求类型是 HTTP 协议的 POST 方式,您大可根据访问的网页而定。

          1. requests实现方式:
            1. 利用requests中的session类来实现客户端和服务端的会话保持

            ①get请求:requests.get('url')

            ②post请求:requests.post("url/post")

            ③put请求:requests.put("url/put")

            ④delete请求:requests.delete("url/delete")

            ⑤head请求:requests.head("url/get")

            ⑥options请求:requests.options("url/get")

              1. 校验方法:

              通过.json()函数获取服务端返回的数据结果进行校验,使用返回结果key和value或者http状态码等来断言数据是否正确

                1. 自动化测试项目管理及PO模式:
                  • 可以通过yaml、ini、excel等来管理测试用例及接口参数模型
                  • 接口自动化PO模式:

                  新建一个工程(一定要创建工程),工程名称自己定义,如:ApiAutoTest

                    • 在工程下创建以下几个 pakage 包:
                    • --testcase:这个包放 test 开头的测试用例
                    • --common:这个包放一些公共的方法,如:读取 excel 文件方法,读取 mysql 等
                    • Read_data.py:封装 Excel、yaml、ini 读取方法
                    • Excel_info.py:读取 Excel 、yaml、ini中内容
                    • request_base.py:封装请求公共方法
                    • --config:这个包下面放配置文件  
                    • conf.py:存放路径 url  
                    • --run_all:这个包下放入执行用例的文件
                    • --report:这里存放测试报告
                    • --data:这里放接口测试用例

                    三、测试框架pytest:

                      1. 简单灵活,容易上手,文档丰富;
                      2. 支持参数化,可以细粒度地控制要测试的测试用例;
                      3. 能够支持简单的单元测试和复杂的功能测试,还可以用selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
                      4. 具有很多第三方插件,并且可以自定义扩展,比如pytest-selenium,pytest-html等
                      5. 测试用例的skip和xfail处理
                      6. 可以很好的和CLI工具结合,例如Jenkins
                      7. pytest支持测试结果输出报告以web形式显示(allure报告)

                      四、测试报告allure(特点):

                      可以将测试失败划分为 bug 和损坏的(Broken)测试,还可以配置日志、步骤、固定装置、附件、时间、历史记录,以及与 TMS 的集成和 Bug 跟踪系统,方便将 Task 与负责 Task 开发人员和测试人员绑定,从而使开发和测试人员第一时间掌握所有信息。

                      从管理者的角度看,Allure 提供了一个清晰的“全局”视野。

                      包括本次测试涵盖了哪些功能,Bug 在哪个 case 用例中被发现,以及整体测试用例、单条测试用例的执行时间等信息。

                      Allure 测试报告除了涵盖测试运行的全面信息外,还提供各种维度的分析图,包括如下几个部分。

                      项目总览(OverView)

                      项目总览显示了总体测试运行的一系列统计信息。

                      image.gif

                      按缺陷种类分析(Categories)

                      缺陷种类分析显示了所有不同原因引起的失败,并分类展示。

                      image.gif

                      按测试套件分析(Suites)

                      测试套件分析显示了按照套件和类划分的所有的测试执行情况。

                      image.gif

                      图表模块(Graphs)

                      图表模块,包括按照不同维度分析的各种图表(例如测试状态表分析,测试用例等级分析表,测试执行时间分析表等等)。

                      image.gif

                      按执行时间分析(Timeline)

                      按执行时间分析模块,详细列出了各个测试用例的执行时间,你可以筛选出那些运行时间最长的测试用例进行优化。

                      image.gif

                      针对 BDD 驱动的测试用例进行分析(Behaviors)

                      这里主要是根据 Epic、Feature 和 Story 标签对测试结果进行分组。

                      image.gif

                      按照 Package 进行分析(Packages)

                      Package 模块列出了按照 Package 维度进行分析的详细图表。

                      image.gif

                      方案2工具测试流程

                        • Jmeter接口测试工具介绍:

                        JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

                        二、Jmeter接口测试工具实现(JMeter常用组件):

                        1、CSV数据文件设置:添加csv格式保存的测试用例

                        image.gif

                        2、线程组:可以认为是测试开启的入口,如果main函数。

                        image.gif

                        3、HTTP请求:模拟发起一次http请求

                        image.gif

                        4、如果(If)控制器:主要用以决定请求方式

                        image.gif

                        5、响应断言:判断返回是否符合预期

                        image.gif

                        6、查看结果树:请看HTTP请求和返回信息

                        image.gif

                        7、汇总报告:查看成功率,以及响应时间等信息

                        image.gif

                        三、Jmeter接口测试工具(用例管理及案例):

                        1、测试用例管理:

                        一般使用EXCEL来管理测试用例,包含主题、请求方式、接口路径、参数、http状态码、数据变量等

                        image.gif

                        2、测试案例:

                        通过线程组,控制整个线程组内的操作及数据,如:新增http请求、设置响应断言、增加结果图、导入excel文档

                        image.gif

                        持续集成jenkins

                        以上两种方案均需要使用jenkins持续集成工具:

                        1、执行集成构建:

                        持续,自动地构建&测试软件项目代码管理(git/svn)>编译(maven/ant/gradle)>打包>测试环境部署>自动化测试

                        2、研发体系中的迭代流程:

                          • 源码分支管理: git或者svn, 将不同开发编写的代码集成起来形成不同版本和分支,那么急于版本管理,来进行版本打包发布
                          • 形成版本 编译打包: maven,ant,gradle集成的版本代码编译打包形成可发布的war包或可运行的安装程序,提供给测试实验
                          • 测试环境部署: 把形成软件产品包部署到响应的服务器环境上,测试可以开始进行功能测试,CI可以开始执行自动化测试
                          • (如果不做自动化第三部就已经可以结束了)
                          • 自动化测试:在测试环境完成部署之后,充当冒烟测试职责,对产品核心功能用例进行测试,相当于进行一次准入验证,通过了才移交测试组展开功能测试。

                          3、jenkins的工作原理:

                          Jenkins是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。

                          目录
                          相关文章
                          |
                          2月前
                          |
                          机器学习/深度学习 人工智能 监控
                          提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
                          在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
                          |
                          16天前
                          |
                          机器学习/深度学习 算法 UED
                          在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
                          在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
                          23 6
                          |
                          1月前
                          |
                          Web App开发 定位技术 iOS开发
                          Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
                          Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
                          51 1
                          |
                          2月前
                          |
                          机器学习/深度学习 存储 测试技术
                          从0到1:如何规划一套流量回放自动化测试方案
                          本文介绍了流量回放自动化测试的完整方法,从企业战略到交付的四个关键环节:Discovery(深度挖掘)、Define(定义目标)、Design(详细设计)和Delivery(交付与反馈)。通过这些步骤,帮助企业优化系统性能和稳定性,确保产品的高质量。
                          63 4
                          |
                          2月前
                          |
                          存储 NoSQL 大数据
                          大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
                          大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
                          38 3
                          |
                          4月前
                          |
                          测试技术 Linux 虚拟化
                          iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
                          详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
                          166 3
                          iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
                          |
                          4月前
                          |
                          测试技术 开发工具 iOS开发
                          iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
                          这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
                          351 1
                          iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
                          |
                          4月前
                          |
                          测试技术 数据安全/隐私保护 iOS开发
                          iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
                          iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
                          366 0
                          iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
                          |
                          4月前
                          |
                          测试技术 虚拟化 iOS开发
                          iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
                          这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
                          199 0
                          iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
                          |
                          4月前
                          |
                          测试技术 开发工具 虚拟化
                          iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
                          这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
                          191 0
                          iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程