最佳软件测试基础入门教程1简介

Posted pythontesting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最佳软件测试基础入门教程1简介相关的知识,希望对你有一定的参考价值。

简介

软件无处不在! 如今,几乎没有任何设备、机器或系统不是部分或完全由软件控制的。汽车中的重要功能--如发动机或齿轮控制--长期以来都是基于软件的。因此,软件和软件质量不仅制约着我们生活的大部分功能,而且也是我们日常安全中越来越重要的因素。

同样地,今天无数公司的顺利运行在很大程度上依赖于控制主要流程或个别活动的软件系统的可靠性。因此,软件决定了未来的竞争力。例如,一家保险公司推出新产品的速度,甚至只是一个新的费率,都取决于相应的IT系统的调整或扩展速度。

因此,在技术和商业软件领域,质量已经成为产品和公司成功的一个关键因素。
大多数公司已经认识到他们对软件的依赖性,无论是依靠现有系统的功能还是引进新的、更好的系统。因此,公司不断投资于自己的开发技能和改善系统质量。实现这些目标的方法之一是引入系统的软件评估和测试程序。一些公司已经有了全面而严格的测试程序,但许多项目仍然由于缺乏有关软件测试程序的能力和实用性的基本知识而受到影响。

本书旨在提供建立结构化、系统化的软件评估和测试技术所需的基本知识,以帮助你提高整个软件质量。

本书并不假定以前有软件质量保证的知识。它是为参考而设计的,但也可用于自学。文中包括单一的、连续的案例研究,为所涉及的每个主题提供解释和实际解决方案。

本书面向所有类型公司的所有软件测试人员,他们希望为自己的工作打下坚实的基础。它也适用于已经接手(或即将接手)现有测试场景的程序员和开发人员,同时它也针对负责预算和整体程序改进的项目经理。此外,它还为IT相关领域的职业转换者和参与应用审批、实施和开发的人提供支持。

特别是在IT领域,终身学习是必不可少的,而软件测试课程是由广泛的公司和个人提供的。大学也越来越多地提供测试课程,本书针对的是教师和学生。

ISTQB®认证测试员项目如今被视为软件测试和质量保证培训的全球标准。ISTQB®(国际软件测试资格委员会)[网址:ISTQB]协调各个国家的资格认证活动,并确保教学大纲和考试卷的全球一致性和可比性。国家测试委员会负责发布和维护当地的内容,以及组织和监督考试。他们还负责批准课程并为培训机构提供认证。因此,考试委员会保证课程具有一贯的高标准,学员最终能获得国际认可的证书。测试委员会的成员包括培训机构、工业和咨询公司的测试专家以及大学讲师。他们还包括来自贸易协会的代表。

认证测试员培训计划是由三个级别的资格单元组成的。更多详情请见ISTQB® [网址:ISTQB] 网站。基础级教学大纲中描述了软件测试的基础知识。然后,你可以继续参加高级水平考试,对评估和测试技能有更深入的了解。专家级证书针对有经验的软件测试专业人员,由一套涵盖各种高级主题的模块组成(另见6.1.2节)。此外,还有敏捷软件开发(基础和高级)以及测试领域的特殊主题(例如,安全测试员、基于模型的测试员、汽车软件测试员)的教学大纲。

章节概述

本书所涉及的主题和基础证书课程的基本内容如下:

第2章讨论了软件测试的基础知识。除了何时进行测试、要达到的目标以及所需的测试彻底性等概念外,还涉及测试过程的基本概念。我们还谈到了在自己的工作中寻找错误时可能出现的心理困难。

第3章介绍了常见的开发生命周期模型(顺序式、迭代式、增量式、敏捷式),并解释了测试在每个模型中所扮演的角色。解释了各种测试类型和测试级别,我们研究了功能测试和非功能测试之间的区别。我们还看了回归测试。

第4章介绍了静态测试(即在测试对象不被执行的情况下的测试)。许多组织成功地使用了审查和静态测试,我们详细介绍了你可以采取的各种方法。

第5章讨论了更严格意义上的测试,并讨论了 "黑盒 "和 "白盒 "动态测试技术。对两者的各种测试技术和方法进行了详细的解释。在这一章的最后,我们将探讨何时使用基于经验或直觉的测试技术来增强普通的测试技术是有意义的。

第6章讨论了管理测试过程时需要考虑的组织技能和任务。我们还看了缺陷和配置管理的要求,最后看了一下测试的经济性。

在不使用专用工具的情况下测试软件是非常耗时和昂贵的。第7章介绍了各种类型的测试工具,并讨论了如何为你正在进行的工作选择和实施正确的工具。

案例研究: VirtualShowRoom VSR-II

本书中描述的大多数过程都是通过基于以下场景的案例研究来说明的:
一家汽车制造商已经运行一个名为VirtualShowRoom(VSR)的电子销售系统超过十年了。该系统在该公司全球所有的经销商处运行:

  • 客户可以在电脑上配置他们自己的汽车(型号、颜色、额外的东西等等),可以单独或在销售人员的协助下进行。该系统显示可用的选项,并立即计算出相应的价格。这一功能是由DreamCar模块完成的。
  • 一旦客户选择了配置,他就可以使用EasyFinance模块选择最佳的融资方式,使用JustInTime模块订购车辆,并使用NoRisk模块选择适当的保险。FactBook模块管理着所有的客户和合同数据。

制造商的销售和市场部门已经决定更新系统,并确定了以下目标:

  • VSR是传统的客户-服务器系统。新的VSR-II系统要基于网络,需要在任何类型的设备(台式机、平板电脑或智能手机)上通过浏览器窗口访问。
  • DreamCar、EasyFinance、FactBook、JustInTime和NoRisk模块将被移植到新的技术基础上,在这个过程中,将得到不同程度的扩展。
  • 新的ConnectedCar模块将被整合到系统中。该模块收集和管理所有售出车辆的状态数据,并向司机以及经销商和/或服务伙伴传达与预定维护和修理有关的数据。它还为司机提供各种额外的可预订服务,如服务台和紧急服务。车辆软件可以 "空中 "更新和激活。
    现有的五个模块中的将由一个专门的团队进行移植和开发。另外一个团队将开发新的 "互联汽车 "模- 块。该项目共聘用了60名来自公司内部部门以及一些外部软件公司的开发人员和其他专家。
  • 这些团队将使用敏捷开发的Scrum原则工作。这种敏捷的方法要求每个模块在每个迭代期间都要进行测试。该系统将被逐步交付。
  • 为了避免新旧系统之间复杂的重复数据比较,VSR-II只有在能够复制原VSR系统提供的功能时才会上线。

在项目和敏捷方法的范围内,大多数项目参与者将在不同程度上面临或被委托进行测试任务。本书提供了执行这些任务所需的测试技术和流程的基本知识。

参考资料

系统演示

pytest接口自动化零基础入门到精通(01)入门基础篇

简介

pytest 是成熟的功能齐全的 Python 测试工具,可帮助你编写更好的程序。

pytest 是一个使构建简单和可伸缩的测试变得容易的框架。测试具有表达性和可读性,不需要样板代码。几分钟后就可以开始对应用程序或库进行小的单元测试或复杂的功能测试。

特点

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考。
  2. 能够支持简单的单元测试和复杂的功能测试。
  3. 支持参数化。
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的 case 标记成失败。
  5. 支持重复执行 (reruns) 失败的 case。
  6. 支持运行由 nose、unittest 编写的测试 case。
  7. 可生成 html 报告。
  8. 可以很好的和CI工具结合,例如 jenkins。
  9. 可支持执行部分用例。
    10.具有很多第三方插件,并且可以自定义扩展。

pytest和unittest的区别

很多小伙伴做自动化,之前都是用到unittest框架,大家也知道pytest是基于unittest二次开发的,因此面试的时候经常会被问道,你说你做过自动化,那么你说说pytest和uniitest的区别是什么?

下面我来整理一下自己在使用unittest和pytest之后,最直观的区别有哪些。

  • 表达用例

    unittest: 定义一个类,继承unittest.TestCase
    pytest: 类/函数

  • 断言的表达

    unittest: self.assertxxxx()
    pytest: assert 表达式(结果为True-断言成功!)逻辑/成员/比较/函数返回值

  • 收集用例

    unittest: TestLoader类 + TestSuite类 + discover收集用例
    pytest: 自动收集用例

  • fixture: 前置后置

    unittest:setup&teardown setupClass&teardwonClass ---- 固定名称

    pytest: function(用例)—> class(测试类)————> Modul(测试模块.py)—> Session(会话)

  • 插件
    unittest :无
    pytest:800 + 插件 ,具体可以查看: http://plugincompat.herokuapp.com.
    html插件
    allure报告

  • 筛选用例
    pytest:
    1、给用例打标记
    1)先注册
    2)在用例/类上面加@pytest.mark.标记名称
    2、只运行打了标记的用例

    3、命令行运行:pytest.main([’-m’,‘标签名称’])

  • 执行顺序
    1、文件名称顺序 - ASCII顺序(哪个文件先识别,哪个文件下的用例先执行。)
    2、文件内部:代码的先后顺序,从上到下

想要了解更多可以查看官网地址: http://pytest.org/
GitHub地址:https://github.com/pytest-dev/pytest.

安装

  • 在命令行中运行以下命令进行安装:
pip install -U pytest
  • 或者(使用国内的豆瓣源,数据会定期同步国外官网,速度快。) *推荐
pip install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • 查看安装的版本:
pytest --version

快速入门

上面我们将pytest环境安装好,现在来动手创建一个测试用例。

  • 创建一个TestDemo.py的文件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

def func(x):
    return x + 1


def test_answer():
    assert func(3) == 5


class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, "check")
        
  • 打开命令行,进入当前目录下,输入pytest(或者输入py.test也可以)命令执行。
    从上方的执行结果,我们可以总结出一下结论:

    1、如果只执行 pytest,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行。

    2、如果只想执行某个文件 pytest test_Demo.py

    3、加上 -q,就是显示简单的结果 pytest -q test_Demo.py

pytest设计用例规则

按照下面的规则去写,否则不符合规则的测试用例是不会执行的。

  1. 文件名以 test_*.py 文件和 *_test.py 文件。
  2. 以 test_ 开头的函数。
  3. 以 Test 开头的类,不能包含 init 方法。
  4. 以 test_ 开头的类里面的方法。
  5. 所有的包 Package 必须要有 init.py 文件。

pytest执行用例规则

目录下执行所有的用例

pytest
或者
py.test

执行单独一个pytest模块

pytest 文件名.py

运行某个模块里面的某个类

pytest 文件名.py::类名

运行某个模块里面某个类里面的方法

pytest 文件名.py::类名::方法名

-v打印运行日志信息(详细)

pytest -v 文件名.py

-q打印运行日志信息(简略)

pytest -q 文件名.py

-s控制台输出结果


pytest -v -s 文件名.py

-m标记表达式

# 将运行用 @pytest.mark.login 装饰器修饰的所有测试
pytest -m login

-x用例运行失败则立即停止执行

pytest -x 文件名.py

-k运行包含关键字的用例

# 执行测试用例名称包含 one 的所有用例
pytest -v -k "one" 文件名.py

-k运行排除关键字的用例

# 执行测试用例名称不包含 one 的所有用例
pytest -v -k "not one" 文件名.py

-k运行匹配多个关键字的用例

# 执行测试用例名称包含 one 或 two 的所有用例
pytest -v -k "one or two" 文件名.py

–maxfail=num错误个数达到指定数量停止测试

# 用例运行时允许的最大失败次数,超过则立即停止。
pytest 文件名.py --maxfail=1

PyCharm设置运行pytest、pytest.main()

打开PyCharm,依次打开Preferences—>Tools—>Python Integrated Tools,将Testing里的Default test runner选择项选为pytest,保存即可。


右键运行,可以看到以pytest去运行。

pytest.main()

main 函数有2个可选参数:

args:命令行参数列表。

plugins:初始化期间要自动注册的插件对象列表。

pytest.main() 不带任何参数时与在命令行直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main()

带参数运行

在命令行运行pytest -s , 在pytest.main()里面等同于

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["-s"])

在命令行运行pytest -s -x, 在pytest.main()里面等同于

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["-s", "-x"])

运行指定用例

命令行跳转到项目根目录,执行test/case文件夹下的全部用例

pytest test/case
在pytest.main()里面等同于

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["test/case"])

命令行跳转到项目根目录,执行test/case/test_case1.py文件里的全部用例
pytest test/case/test_case1.py

在pytest.main()里面等同于

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["test/case/test_case1.py"])

命令行跳转到项目根目录,执行test/case/test_case1.py文件里的test_login用例

pytest test/case/test_case1.py::test_login

在pytest.main()里面等同于

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["test/case/test_case1.py::test_login"])

加载指定插件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2021/11/18 23:04
# @Author : 余少琪

import pytest

pytest.main(["test/case"], plugins=[插件名])

以上是关于最佳软件测试基础入门教程1简介的主要内容,如果未能解决你的问题,请参考以下文章

最佳软件测试基础入门教程3软件开发生命周期的测试

Docker基础入门 —— 简介

基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?

Ajax+Node.js前后端交互最佳入门实践(01)

Ajax+Node.js前后端交互最佳入门实践(01)

Python基础教程(021)--Pycharm简介