自动化测试方案

简介: 自动化测试方案

 自动化测试体系方案

方案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在一次集成中需要执行的任务。

                          目录
                          相关文章
                          |
                          4月前
                          |
                          测试技术 UED
                          测试方案有点难?ChatGPT助你轻松编写测试方案!
                          使用ChatGPT辅助编写测试方案,以高级搜索功能为例,涉及关键词搜索、过滤条件、界面兼容性、错误处理等测试点。首先明确测试需求,如按作者、时间范围和分类搜索,产品形态为App和Web应用。然后,通过提示词逐步细化方案,包括App的移动设备适配、耗电量和内存占用测试。通过不断优化提示词,确保测试方案全面覆盖功能性能、用户体验及专项测试内容。
                          66 1
                          |
                          29天前
                          |
                          测试技术 Linux 虚拟化
                          iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
                          详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
                          46 3
                          iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
                          |
                          29天前
                          |
                          测试技术 开发工具 iOS开发
                          iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
                          这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
                          63 1
                          iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
                          |
                          29天前
                          |
                          测试技术 数据安全/隐私保护 iOS开发
                          iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
                          iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
                          61 0
                          iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
                          |
                          29天前
                          |
                          测试技术 虚拟化 iOS开发
                          iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
                          这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
                          84 0
                          iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
                          |
                          29天前
                          |
                          测试技术 开发工具 虚拟化
                          iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
                          这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
                          28 0
                          iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
                          |
                          4月前
                          |
                          安全 测试技术 网络架构
                          【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
                          【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
                          582 0
                          |
                          4月前
                          |
                          机器学习/深度学习 数据采集 运维
                          高效处理异常值的算法:One-class SVM模型的自动化方案
                          高效处理异常值的算法:One-class SVM模型的自动化方案
                          162 1
                          |
                          4月前
                          |
                          运维 监控 测试技术
                          ansible 自动化运维监控方案
                          本文介绍如何利用ansible实时或自动采集受控主机的信息
                          |
                          4月前
                          |
                          人工智能 算法 测试技术
                          【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】
                          【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】

                          热门文章

                          最新文章