IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 测试部分笔记 -> 正文阅读

[开发测试]测试部分笔记

1.什么是软件测试
答:软件测试就是验证软件功能是否满足用户需求
测试左移:需求前调研阶段和需求阶段,测试人员参加。
测试右移:产品上线后,系统监控,日志记录和分析。

2.什么是测试用例?
答:向被测试系统发起的一组集合,这组集合包括测试数据、测试步骤、测试平台、预期结果。

3.开发模型
1)瀑布模型
start—>需求分析—>计划—>设计—>编码—>测试—>end
优点:强调开发的阶段性,强调早期计划及需求调查,强调产品测试,各阶段比较独立。
缺点:无法适应需求的变化;测试到编码后才介入,导致前期的缺陷无法及时发现。无法及时修正。
适用的项目:适用于需求稳定的项目

2)螺旋模型
适用的项目:前期需求不是很明确,并且有风险,项目比较庞大的系统开发;
优点:强调软件质量,每一次迭代进行严格的风险分析,提供讨论项目是否有必要进行下去的机会。
缺点:引入风险管理,会投入大量人力物力。

3)迭代、增量模型
一个系统四个功能 A、B、C、D模块,两周时间完成
迭代模型:第一周完成 A、B、C、D,第二周细化和完善
增量模型:第一周 A、B 第二周C、D
迭代模型抗风险能力更强

4)敏捷模型
轻文档、轻流程,重目标、重质量,交付一个高质量的可以用软件可以适应需求的变化

软件开发的生命周期:需求分析—>计划—>设计—>编码—>测试—>运行维护

4.测试用例的基本要素
向测试系统发起的一组集合,测试平台、测试数据、测试步骤、预期结果等。

5.设计测试用例的方法

需求分析—>软件需求—>开发软件 —>测试功能 —>上线
1.根据需求去设计测试用例

  • 验证需求的正确性
  • 分析需求,细化需求,从需求中提炼功能模块,划分子功能根据每一个子功能去写测试用例。

2.具体的设计测试用例的方法
1)等价类
把输入划分成若干各等价类,从每一个等价类当中选一个有代表性的测试用例进行测试,如果这个测试用例测试通过,那我们就说这个测试用例代表的等价类测试通过。
2)边界值
针对输入输出的边界进行测试用例的设计。
等价类+边界值—> 进行测试用例的设计
3)因果图法
因果图是一种逻辑图
当输入有很多,不同输入的组合对应不同的输出,用因果图来分析不同输入组合和不同输出之间的关系。
用因果图法设计测试用例的步骤:
(1)分析出所有的输入和输出
(2)找出输入输出之前的逻辑关系
(3)根据输入输出的关系画因果图
(4)根据因果图画判定表
(5)根据判定表设计测试用例

4)正交法
研究多因素多水平的一种实验(测试)方法。根据正交性,从输入组合当中选最优的组合进行试验、分析结果。通过这些最优组合得出的试验结果来分析这个试验的结果。
因素:输入的变量
水平:变量的取值
正交表构成:
列:因素数,变量的个数
行:因素的最大的变量个数
水平数:每个变量的最大个数
L(正交表的行) = (水平数-1)x 因素数+1

正交表的性质:
(1)每一列不同数据出现的次数一致
(2)任意两列不同数据的组合出现的次数一样

5)场景法
6)错误猜测法

3.按开发阶段划分
单元测试
测试阶段:编码前(TDD)编码后
Test-Driven-Develop测试驱动开发
测试内容:单元接口测试(按照接口设计文档,参数,输出)局部数据结构测试(局部变量)边界测试

集成测试
按照一定的策略把单元模块组装起来
测试内容:模块之间数据的传输(输入输出,参数),模块之间功能的冲突,全局数据结构,单个模块的缺陷对象整个功能的影响。

系统测试
对被测软件应用系统进行全面的系统的测试
测试内容:功能,界面,性能,安全性,兼容性,可靠性,可移植性等

  • 回归测试:当系统引入新代码(出现新功能,修改了BUG)的时候进行回归测试
  • 冒烟测试:判断系统是否可以进行全面系统测试的标准验收测试

4.按照实施组织划分
a测试,β测试
测试环境:a在开发环境,β在实际使用环境
测试人员:a测试出来开发人员和测试人员以外的任何人,β测试是实际用户在进行β测试前要进行很长一段时间的a测试。

5.按是否查看代码划分
黑盒测试:把软件当成一个黑色的盒子,软件的具体实现是被屏蔽的,只关心软件的输入与输出。
测试方法:等价类、边界值、因果图法、场景法、错误测试法、正交法
白盒测试:对软件的具体实现,程序的逻辑和结构进行测试
测试方法:语句覆盖、路径覆盖、循环覆盖、逻辑覆盖(判定覆盖、条件覆盖、判定和判定组合覆盖、条件和条件组合覆盖、判定和条件组合覆盖)

6.性能测试
在这里插入图片描述

UI自动化测试和接口自动化测试

UI自动化测试:

1.用例维护量大
2.UI自动化测试在项目后期进行
3.适用于界面稳定的项目

接口自动化测试:

1.用例维护量相对少
2.在接口开发完之后就可以做(提前介入)
3.适合于接口稳定的项目

接口自动化测试投入产出比(效率)高于UI界面层的自动化测试

自动化适用的对象:周期比较长,项目比较稳定,需求不频繁变动的项目,产品型的项目

selenium工具

webdriver工作原理:相当于出租车
测试脚步—>乘客
webdriver—>司机
浏览器—>出租车

元素定位
1.id定位:find_element_by_id()
从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过id定位搜索框,并输入selenium
driver.find_element_by_id('kw').send_keys('selenium')
# 等待5sleep(5)
# 退出
driver.quit() 

2.name定位:find_element_by_name()
从上面定位到的搜索框属性中,有个name="wd"的属性,我们可以通过这个name定位到这个搜索框

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过name定位搜索框,并输入selenium
driver.find_element_by_name('wd').send_keys('selenium')
# 等待5sleep(5)
# 退出
driver.quit()

3.class定位:find_element_by_class_name()
从上面定位到的搜索框属性中,有个class="s_ipt"的属性,我们可以通过这个class定位到这个搜索框

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过class定位搜索框,并输入selenium
driver.find_element_by_class_name('s_ipt').send_keys('selenium')
# 等待5sleep(5)
# 退出
driver.quit()

4.tag定位:find_element_by_tag_name()
如果懂HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等…。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。下面代码仅做参考,运行时必定报错

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过tag定位搜索框,并输入selenium, 此处必报错
driver.find_element_by_tag_name('input').send_keys('selenium')
# 等待5sleep(5)
# 退出
driver.quit()

5.link定位:find_element_by_link_text()
此种方法是专门用来定位文本链接的,比如百度首页右上角有“新闻”,“hao123”,“地图”等链接

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过link定位"新闻"这个链接并点击
driver.find_element_by_link_text('新闻').click()
# 等待5sleep(5)
# 退出
driver.quit()

6.partial_link定位:find_element_by_partial_link_text()
有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

我们用这种方法来定位百度首页的“新闻”超链接

# coding = utf-8
from time import sleep
from selenium import webdriver

# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过partial_link定位"新闻"这个链接并点击
driver.find_element_by_partial_link_text('闻').click()
# 等待5sleep(5)
# 退出
driver.quit()

7.xpath定位:find_element_by_xpath()

前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的id或name或class或超链接文本的属性,那么我们就可以通过这个唯一的属性值来定位他们。

但是在实际工作中并非有这么美好,有时候我们要定位的元素并没有id,name,class属性,或者多个元素的这些属性值都相同,又或者刷新页面,这些属性值都会变化。那么这个时候我们就只能通过xpath或者CSS来定位了。

8.CSS定位:find_element_by_css_selector()
这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解,这里只做下简单的介绍。

CSS定位百度搜索框

性能测试
1.并发测试
是指在一定的软件、硬件及网络环境下,通过运行一种或多种业务在不同虚拟用户数量情况下测试服务器的性能指标是否在用户的要求范围内,用于确定系统能承载的最大用户数、最大有效用户数以及不同用户数下的系统响应时间及服务器的资源利用率。

2.容量测试
是指一定的软件、硬件及网络环境下,例如向数据库中构造不同数量级别的数据记录,通过运行一种或多种业务在一定的虚拟用户数量情况下,获取不同数据级别的服务器性能指标,以确定数据库的最佳容量。

3.压力测试
在高于性能测试拐点的情形上,测试软件的表现形式。

4.可靠性测试

5.配置测试

unittest框架

unittest框架是基于UI界面层的单元功能测试框架(黑盒测试)
1)测试固件
setUp() 进行初始化
tearDown() 进行测试完后的清理工作

2)TestCase 测试用例
测试方法:test_

3)批量执行
把多个测试用例(可以是一个脚本中,也可以是多个脚本中)放到一个测试套件中去执行。

4)执行测试用例
TestRunner

5)生成测试报告
HTMLRunner

python测试代码如下

import selenium import webdriver
import unittest
import time

class baidu(unittest.TestCase):
#     测试固件
    def setUp(self):
       self.driver = webdriver.Chrome()
       self.url = "http://www.baidu.com/"
       self.drivr.maximize_window()
       time.sleep(3)
    def tearDown(self):
      self.driver.quit()
#     测试用例
    def test_hao(self):
    driver = self.driver
    url = self.url
    driver.get(url)
    driver.find_element_by_link_text("hao123").click()
    time.sleep(6)

    def baidu(self):
    driver = self.driver
    url = self.url
    driver.get(url)
    driver.find_element_by_id("kw").send_keys("突如其来的假期")
    driver.find_element_by_id("su").submit()
    time.sleep(6)
#  执行入口
   if__name__=="__main__":
      unittest.main(verbosity=0)

addTest()的应用

def createsuite():
    suite = unittest.TestSuite()
    suite.addTest(testbaidu1.Baidu("test_hao"))
    suite.addTest(testbaidu1.Baidu("test_baidu"))
    return suite
if__name__=="__main__":
    suite = createsuite()
    runner = unittest.TextTestRunner(verbosity = 0)
    runner.run(suite)
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:27:13  更:2021-09-12 13:27:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:14:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码