软件测试——蓝桥杯笔记(自用)

news2024/11/24 10:42:35

@Before和@BeforeClass,在测试前,初始化Driver,@BeforeClass适用于静态方法

@After和@AfterClass,在测试后,关闭Driver,@AfterClass适用于静态方法

自动化测试记得使用@BeforeClass,@AfterClass

单元测试记得使用@BeforeClass

用例优先级

高:功能性验证的测试用例

中:错误和边界值的测试用例

低:非功能性(性能和可用性)的测试用例

缺陷报告

功能性错误是1级,页面是2级

功能测试

1.等价类:有效等价和无效等价,有效等价是符合要求的,无效等价是不符合要求的

Step1:划分有效等价和无效等价,列出等价类表

Step2:一一列出输入条件中可能得组合输入情况

Step3:编写测试用例

2.边界值:上点、离点、内点

Step1:根据等价类划分有效及无效等价类,确定上点、离点及内点,每个点统一编号。

Step2:使其尽可能覆盖所有尚未覆盖的有效等价类,直到所有有效等价类完全覆盖。

Step3:使其仅覆盖一个无效等价类,直到所有无效等价类完全覆盖。

3.判定表:条件的组合判断,条件桩、条件项、动作桩、动作项

Step1:列出所有的条件桩和条件项

Step2:列出所有的动作桩和动作项

Step3:设计初始判定表

Step4:简化判定表

4.因果图:利用图解法分析输入的各种组合情况。

Step1:列出原因和结果

Step2:画出因果图

Step3:将因果图转换成判定表

5.正交表:因素指个数,水平指可能的取值,L16(4^3)指三因素、四水平,先取最多的水平,若为4则共4*4=16行,然后按11112222333444写。其余看情况,不要有重复!!

6.场景法:模拟用户操作软件时的场景,主要用于测试系统的业务

基本流也叫有效流或正确流,主要是模拟正确的业务操作过程的情景

备选流:无效流或错误流,主要是模拟错误的业务操作过程的情景。

7.大纲法:


8.错误推测法:按经验对可能发生错误的地方测试,如:重复输入等

自动化测试

浏览器操作:前面都有driver

get(): 打开浏览器

getTitle(): 获取浏览器标题

getCurrentUrl(): 获取当前页面的 URL 地址

close(): 关闭浏览器

quit(): 退出浏览器

navigate().to(): 进入指定页面

navigate().back(): 后退到上一个页面

navigate().forward(): 前进到下一个页面

refresh(): 刷新页面

switchTo().window(): 切换窗口

window().maximize():最大化

window().fullscreen():全凭

window().getSize():获取大小

window().setSize(Dimension targetSize):设置大小

window().getPosition():获取位置

window().setPosition(Point targetPosition):设置位置

元素定位:findElement()

By.Id

By.name

By.xpath:选择绝对路径不要相对路径

By.tagName

By.cssSelector

元素操作:前面都有element

getText(): 获取元素的文本信息,也就是在开始和结束标签之间的内容,该内容可以用于断言我们定位到的元素是不是我们想要的元素

getTagName(): 获取元素的标签名,该方法也可以用于判断是否定位到了正确的元素

getAttribute(): 根据元素的属性名获取元素的属性值

isEnabled(): 判断元素是否可以操作,如 click() 点击 等,返回值为 True 或 False

isDisplayed(): 判断元素是否在页面上展示

isSelected(): 选项或者元素是否被选中,在单选或者多选框中常用到

click(): 适用于任何元素,对其进行点击操作

send_keys(): 适用于文本区域或者可编辑的元素,可以输入指定内容

clear(): 适用于文本区域或者可编辑的元素,可以清空文本内容

submit(): 适用于 Form 表单元素,用于提交数据,Selenium 4 中不再推荐使用此方法,而是推荐直接点检表单的提交按钮

select: 选择单选或者多选框中的元素

鼠标操作:

Actions actions = new Actions(driver)

actions.clickAndHold().moveToElement().release().build().perform();

actions.keyDown()

actions.keyUp()

执行顺序:@FixMethodOrder(MethodSorters.NAME_ASCENDING)

getText()获取文本值,隐藏的获取不了

getAttribute(“textContent”)返回的是元素及其所有子元素的文本内容,而不会受 CSS 样式的影响。

driver.switchTo().frame(index),切换iframe

driver.switchTo().defaultContent(),若失败记得回到默认地方

输入框记得先清空clear,再输入数据sendKeys

driver.getWindowHandle();//获取当前操作窗口的句柄

driver.getWindowHandles();//获取测试时打开的所有窗口句柄

但是返回的是set,可以循环然后加到list调用

浏览器前进、后退操作:driver.navigate().back();driver.navigate().forward();

弹窗操作:Alert alert = driver.switchTo().alert()

alert.accept() alert.dismiss() alert.getText()

单元测试

基本路径法:画出控制流图,然后导出可能的路径,路径数=E-N+2或P+1,如果是且就按顺序进行查看,如果是或就分成2个分支

语句覆盖:每个语句至少执行一次

条件覆盖:每个条件取真、取假至少一次

判定覆盖:每个判断取真、取假至少一次

条件判断覆盖:包括条件覆盖和判定覆盖

组合覆盖:每个可能取真、取假组合都执行一次

简单循环:0次、1次、2次、n-1次、n次和n+1次

嵌套循环:分为外层循环和内层循环,分别都1次2次m次,先对内层测试,再对外层

串接循环:对第一个和第二个循环都1次2次m次,先对第二个测试,再对第一个

断言:

assertEquals 断言两个值是否相等

assertTrue 断言一个条件是否为真

assertFalse 断言一个条件是否为假

assertNull 断言一个对象是否为 null

assertNotNull 断言一个对象是否不为 null

assertSame 断言两个对象是否引用了相同的对象

assertNotSame 断言两个对象是否未引用同一个对象

assertArrayEquals 断言预期数组和结果数组是否相等

常用注解:

@Test 标注于方法之上,表示该方法是一个测试方法

@Test(timeout=xxx) 约束测试方法运行的最长时间,超时则测试失败

@Test(expected=*.class) 用于对方法内部抛出的异常进行验证

@Before 在每个测试用例之前执行某些语句,例如,初始化数据等

@After 在每个测试用例之后执行某些语句,例如,重置变量、删除临时文件、变量等

@BeforeClass 在当前测试类的所有测试用例之前执行某些语句,例如,建立连接

@AfterClass 在当前测试类的所有测试用例之后执行某些语句,例如,执行所有测试用例后释放资源

@Ignore 执行时忽略(跳过)测试方法

@Runwith 放在测试类名之前,用来确定该类的运行方式,也可以不标注,如不标注则会使用默认运行器

@SuiteClasses 用于在套件测试中标识运行的测试类,如:@SuiteClasses({ ClassATest.class, ClassBTest.class })

@Parameters 用于参数化测试

@Test:每个测试都需要加

执行顺序:@FixMethodOrder(MethodSorters.NAME_ASCENDING)

延时测试:@Test(timeouts=1000)

异常测试:@Test(expected= ***.class)或者fail()方法

参数化测试:类上@RunWith(Parameterized.class),在方法上@Parameters

@Parameters

public static Collection<?> data(){

return Arrays.asList(new Object[][] {

{0,0},{1,1},{-1,1}

});

}

@RunWith(Parameterized.class)

public class FactorialTest {

    private int expected ;    //测试用例的预期结果

    private int inputData ;   //测试用例的输入数据

    private Factorial  factorial = null;

    

    //在该测试类的每一个测试方法执行前实例化被测试类

    @Before

    public void setUp() {

        factorial = new Factorial();

    }

    

    //测试用例数据集

    @Parameters

    public static Collection<Object[]> testData() {

        Object[][] obj = { { 0, 0 },

                          { 1, 1 },

                          { 2, 2 },

                          { 120, 5 },

                          { 362880, 9 },

                          { 3628800, 10 },

                          { 0, 11 }};

        return Arrays.asList (obj);    

    }

    

    //构造方法

    public FactorialTest ( int expected ,int inputData ) {

        this.expected = expected;

        this.inputData = inputData;

    }

    

    //测试方法

    @Test

    public void testGetFactorial () {

        Assert.assertEquals(this.expected, factorial.getFactorial(this.inputData));

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1796223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux应用 sqlite3编程

1、概念 SQLite3是一个轻量级的、自包含的、基于文件的数据库管理系统&#xff0c;常用于移动设备、嵌入式设备和小型应用程序中&#xff0c;应用场景如下&#xff1a; 移动应用程序&#xff1a;由于SQLite3是零配置、无服务器的数据库引擎&#xff0c;非常适合用于移动应用程…

【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)

导航&#xff1a; 本文一些内容需要聚簇索引、非聚簇索引、B树、覆盖索引、索引下推等前置概念&#xff0c;虽然本文有简单回顾&#xff0c;但详细可以参考下文的【MySQL高级篇】 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成…

[Cesium]加载GeoJSON并自定义设置符号(以点要素为例)

数据准备&#xff1a; Geoserver发布WFS&#xff08;Web Feature Service&#xff09;服务 [GeoServer系列]Shapefile数据发布-CSDN博客 数据加载&#xff1a; 数据准备第二种方式加载数据&#xff0c;利用for循环加载多个图层。首先将获取数据(每获取一次获得pomise,将其加入…

SQL优化系列-快速学会分析SQL执行效率(下)

1 show profile 分析慢查询 有时需要确定 SQL 到底慢在哪个环节&#xff0c;此时 explain 可能不好确定。在 MySQL 数据库中&#xff0c;通过 profile&#xff0c;能够更清楚地了解 SQL 执行过程的资源使用情况&#xff0c;能让我们知道到底慢在哪个环节。 知识扩展&#xff1…

Wireshark 如何查找包含特定数据的数据帧

1、查找包含特定 string 的数据帧 使用如下指令&#xff1a; 双引号中所要查找的字符串 frame contains "xxx" 查找字符串 “heartbeat” 示例&#xff1a; 2、查找包含特定16进制的数据帧 使用如下指令&#xff1a; TCP&#xff1a;在TCP流中查找 tcp contai…

汽车分销商文件流转优化:实现稳定高效的文件分发处理

在汽车圈里&#xff0c;分销商可是个不可或缺的角色。他们既要跟汽车厂家紧紧绑在一起&#xff0c;还得跟下游的销售渠道或者直接跟消费者打成一片&#xff0c;文件来回传递那是家常便饭。 这文件发放的速度快不快&#xff0c;安不安全&#xff0c;直接影响到分销商做事的效率…

容器(Docker)安装

centos安装Docker sudo yum remove docker* sudo yum install -y yum-utils#配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本 - 可以根据实际安装版本 sudo yum install -y docke…

Centos 报错 One of the configured repositories failed

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 使用yum update更新命令就出现下面问题&#xff0c;系统是刚安装的&#xff0c;然后修改了一下IP变成手动。&#xff08;排查问题前&#xff0c;先回顾自己做了哪些操作&#xff0c;方便进一步排错&a…

策略模式的理解和运用

在之前的小游戏项目中&#xff0c;处理websocket长连接请求的时候&#xff0c;需要根据传递数据包的不同类型&#xff0c;进行不同的处理。为了实现这个场景&#xff0c;比较简单的方法就是使用if-else或者switch-case语句&#xff0c;根据条件进行判断。但是这导致了项目代码复…

梦幻西游外网架设教程-端游篇

《梦幻西游》是一款由中国网易公司自行开发并营运的网络国产游戏。游戏以著名的章回小说《西游记》故事为背景&#xff0c;透过Q版的人物&#xff0c;试图营造出浪漫的网络游戏风格。 《梦幻西游》拥有注册用户超过3.1亿&#xff0c;一共开设收费服务器达472组&#xff0c;最高…

Sigmoid图像

import matplotlib.pyplot as plt import numpy as npdef sigmoid(x):# 直接返回sigmoid函数return 1. / (1. np.exp((0.7 -(x))/0.075))def plot_sigmoid():# param:起点&#xff0c;终点&#xff0c;间距x np.arange(0, 1, 1 / 16000)y sigmoid(x)plt.plot(x, y)plt.show…

【WP】猿人学_19_乌拉乌拉乌拉

https://match.yuanrenxue.cn/match/19 发包测试 经过发包测试&#xff0c;并没有携带加密参数&#xff0c;但是使用python无法复现&#xff0c;requests&#xff0c;httpx以及异步都不行&#xff0c;网上搜索了一下&#xff0c;这是使用了JA3指纹。可能是我做的时间比较晚&…

【iOS】UI学习——导航控制器、分栏控制器

UI学习&#xff08;三&#xff09; 导航控制器导航控制器基础导航控制器切换导航栏和工具栏 分栏控制器分栏控制器基础分栏控制器高级 导航控制器 导航控制器负责控制导航栏&#xff08;navigationBar&#xff09;&#xff0c;导航栏上的按钮叫UINavigationItem&#xff08;导航…

【论文阅读】SELF-RAG,让模型决策和反思检索

关于LLM何时使用RAG的问题&#xff0c;原本是阅读了关于ADAPT-LLM模型的那篇论文&#xff0c;被问到与SELF-RAG有何区别。所以&#xff0c;大概看了一下SELF-RAG这篇论文&#xff0c;确实很像&#xff0c;这些基于LLM针对下游任务的模型架构和方法&#xff0c;本来就很像。不过…

accelerate笔记:实验跟踪

Accelerate支持七种集成的跟踪器&#xff1a; TensorBoardWandBCometMLAimMLFlowClearMLDVCLive要使用这些跟踪器&#xff0c;可以通过在 Accelerator 类的 log_with 参数中传入所选类型来实现 from accelerate import Accelerator from accelerate.utils import LoggerTypeac…

Yolo-v5模型训练速度,与GeForce的AI算力描述

1.GeForce RTX3070 Ti官网参数&#xff1a; GeForce RTXTM 3070 Ti 和 RTX 3070 显卡采用第 2 代 NVIDIA RTX 架构 - NVIDIA Ampere 架构。该系列产品搭载专用的第 2 代 RT Core &#xff0c;第 3 代 Tensor Core、全新的 SM 多单元流处理器以及高速显存&#xff0c;助您在高性…

北斗RTK+UWB定位的优势

在当今科技飞速发展的时代&#xff0c;定位技术的应用已渗透到我们生活的方方面面。从导航、物流到无人驾驶、智能制造&#xff0c;精准定位技术无处不在。而北斗RTK&#xff08;Real-Time Kinematic&#xff0c;实时动态&#xff09;和UWB&#xff08;Ultra-Wideband&#xff…

闭眼推荐的,新手教师工具

亲爱的老师们&#xff0c;尤其是那些刚踏入教育界的新手教师们&#xff0c;还在为如何高效管理课堂、如何制作精美的教学材料而头疼吗&#xff1f;让我来分享几款教育界口碑爆棚的工具。 易查分小程序 易查分是一款超级方便的成绩查询工具&#xff0c;一分钟就能上传成绩并生成…

[经验] 腰果树的外观特征和特点是什么 #媒体#微信

腰果树的外观特征和特点是什么 腰果树是一种生长在热带和亚热带地区的落叶乔木&#xff0c;其叶子为互生&#xff0c;倒披针形或披针形&#xff0c;整个树枝条生长勃勃&#xff0c;长势喜人。 腰果树的树皮是灰色或深褐色的&#xff0c;有着纵向裂缝&#xff0c;树皮粗糙而有光…

【Mybatis】源码分析-高级应用

1、Mybatis配置文件深入理解 1.2、动态SQL语句 Mybatis 的映射⽂件中&#xff0c;前⾯我们的 SQL 都是⽐较简单的&#xff0c;有些时候业务逻辑复杂时&#xff0c;我们的 SQL是动态变化的&#xff0c;此时在前⾯的学习中我们的 SQL 就不能满⾜要求了。 1.2.1、条件判断 我们根…