Python 就业方向之测试基础
python 发展方向
1.人工智能
2.科学计算+数据处理+爬虫
3.python自动化:自动化运维,自动化测试
4.web开发
什么是自动化
python自动化就是使用python语言来编写脚本或者平台(自动化测试平台->devops),实现公司中重复业务的自动化流程 大体方向分为
python自动化测试
python自动化运维
为什么自动化选择了python
python的强大的第三方库 为很多自动化流程提供的快捷方式
python 强大的兼容性获得了开发者的青睐
python简洁的语法喝简便的编码使得快速开发和迭代成为可能
python的科学计算和文本处理能力,解脱公司的繁琐重复的劳动力
2.软件测试概述
1.软件测试与需求
定义:
1.软件测试定义:
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程
(1)规定的条件
(2)目的:发现程序错误。衡量软件质量
2.通俗定义
软件测试是一种实际输出与预期输出之间的审核或者比较过程
设计过程当中:预期结果 -- 实际输出
需求
测试是保证实际输出与预期输出之间的审核或比较过程,及时发现软件bug与缺陷 ,避免项目上线由于bug给公司带来损失
开发与测试
在开发的过程中,开发人员会对自己开发的功能进行简单的测试,但不会让开发完成对软件的整个测试,可能有几方面的原因
思维定式
测试力度不够
关注度不足
2.软件分类
根据应用场景分类:
工具类软件,游戏型软件,媒体型软件,电商型软件等
根据软件架构分类
单机版软件,分布式软件
单机版软件
office,红警等
分布式软件
客户端需安装专门软件,如QQ 微信等
C/S架构软件
客户端需安装专门软件 如qq 微信等
B/S架构软件
客户端为浏览器,如百度,hao123等
CS架构
c -->client
s -->server
3.软件开发模型与生命周期
软件开发模型
1.瀑布模型
2.快速原型模型
3.螺旋模型
注意:软件测试与软件的开发模式有着紧密的联系,作为一名测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值
瀑布模型
瀑布模型的特点
1.是线性模型的一种,每一个阶段只执行一次
2.文档驱动
可行性研发报告 需求规格说明书 概要设计文档 详细设计文档 程序 测试报告
可研与计划 > 需求分析 >概要设计 >详细设计>编码 >软件测试 >运行维护
瀑布模型的优缺点
优点:
开发的各个阶段比较清晰,当前阶段完成后,只需关注后续阶段
不响应需求的文化
风险往往延至后期才显露,失去及早纠正的机会
快速原型模型
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作
特点:
快速的构建软件的原型
支持用户参与
优点:
优点:克服瀑布模型的缺点,减少由于软件需求不明确等来的项目开发风险
缺点:不适合大型系统的开发(适合开发小型的、灵活性高的系统)
螺旋模型
螺旋模型
特点:引进了风险分析活动
优缺点:
优点:螺旋模型很大程度上是一种风险驱动的方法体系
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识
测试模型
v 模型
w(双V模型)
v模型
v模型介绍:
v模型是最具有代表意义的测试模型,最早是有Paul Rook在20世纪80年代后期提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果
v 模型本身是软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系
v模型标明了测试过程中本身存在的不同阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系
v模型的优缺点:
优点:测试v模型既包含了底层测试又包含了高层测试;
缺点:当需求变更时将会导致返工量非常大,模型灵活性比较低
需求分析 验收测试
概要设计 系统测试
详细设计 集成测试
编码 单元测试
w模型
w模型介绍:
测试伴随着整个软件开发周期 并且测试的对象不仅仅是程序 需求和设计同样要测试
w模型的优缺点
优点:1.强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序 还包括需求和设计
2.更早地介入测试 能尽早得发现缺陷进行修复
缺点:对于测试技术要求高,实践起来困难
质量模型
软件质量 就是软件与明确地和隐含地定义的需求相一致的程度
ISO 9126软件质量模型是评价软件质量的国际标准,这个模型是软件质量标准的核心,对于大部分的软件, 都可以考虑从这这6个特性和27个子特性去测试、评价一个软件。
软件测试分类
按测试阶段划分为 :单元测试 、集成测试、系统测试、验收测试
按是否覆盖源代码分为:黑盒测试、白盒测试、灰盒测试
按是否运行分为:静态测试、动态测试
按是否自动化分为:人工测试、自动测试
按其他分为:冒烟测试、回归测试、随机测试、探索测试
按测试阶段划分
单元测试:
又称模块测试,针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作,单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试
单元定义:c中指一个函数,java中指一个类
继承测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行 有序的。递增的测试
系统测试
系统测试,指的是将整个软件系统看为一个整体进行测试,测试的依据是软件需求说明书
验收测试
验收测试,用来校验软件是否符合用户需求的测试
验收测试又细分为以下分类:
α测试:
Alpha 是内测版本
通常只在软件开发者内部交流
一般而言, 该版本软件的bug较多,普通用户最好不要安装
β测试:
Beta是公测版本,是对所有用户开放的测试版本
这一版本通常由软件公司免费发布, 用户可从相关的站点下载
通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改
γ测试:
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本
黑盒测试
又称数据驱动测试,完全不考虑程序内部结构和内部特征,注重于测试软件的功能需求,只关心软件的输入数据和输出数据
白盒测试
白盒测试指的是把盒子打开,去研究里面的源代码和程序结构
灰盒测试
灰盒测试,是介于白盒与黑盒测试之间的一种测试。不仅关注输出。输入的正确性。同时也关注程序内部的情况
静态测试
指不实际运行被测软件,而只是静态地检查程序代码。界面或文档中可能存在的错误过程
动态测试
指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
人工测试
也叫手工测试,测试人员手动去进行的测试
自动化测试
利用代码或工具帮助人工进行测试
冒烟测试:冒烟测试就是对系统进行最基本功能的测试,保证基本的功能和流程能走通
回归测试:当修复一个BUG后,把之前的测试用例在新的代码下进行再次测试
随机测试:随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分
探索性测试:探索性测试意味着同时设计测试和执行测试,测试人员通过测试来不断学习被测系统