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

@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.rhkb.cn/news/341967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2004NOIP普及组真题 2. 花生采摘

线上OJ&#xff1a; 【04NOIP普及组】花生采摘 核心思想&#xff1a; 1、本题为贪心即可。 2、因为本题严格限制了顺序&#xff0c;所以先把每个节点的花生数量按降序排序。然后逐一判断下一个花生是否需要去采摘即可 3、每一次采摘完&#xff0c;记录耗时 t 以及采集的花…

手机相册的排列方式探讨

不论你是不是程序员&#xff0c;你一定留意过一个问题&#xff1a;相册 App 基本都将图片裁剪成了居中的 1:1 正方形。那么手机相册 App&#xff0c;为什么要将图片切割成 1:1 正方形&#xff0c;然后以网格排列&#xff1f;是行业标准吗&#xff1f; 自适应图片宽度的图库&a…

Stable Diffusion——四种模型 LoRA(包括LyCORIS)、Embeddings、Dreambooth、Hypernetwork

目前 Stable diffusion 中用到主要有四种模型&#xff0c;分别是 Textual Inversion &#xff08;TI&#xff09;以 Embeddings 为训练结果的模型、Hypernetwork 超网络模型、LoRA&#xff08;包括 LoRA 的变体 LyCORIS&#xff09;模型、Dreambooth 模型。 视频博主 koiboi 用…

Linux中Apache网站基于Http服务的访问限制(基于地址/用户)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月3日11点44分 &#x1f004;️文章质量&#xff1a;95分 为了更好地控制对网站资源的访问&#xff0c;可…

用 Axios 封装一个双 token 无感刷新

为什么要用双Token无感刷新&#xff0c;它解决了什么问题&#xff1f; 为了保证安全性&#xff0c;后端设置的Token不可能长期有效&#xff0c;过了一段时间Token就会失效。而发送网络请求的过程又是需要携带Token的&#xff0c;一旦Token失效&#xff0c;用户就要重新登陆&…

python书上的动物是啥

Python的创始人为Guido van Rossum。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;做为ABC语言的一种继承。之所以选中Python作为程序的名字&#xff0c;是因为他是一个叫Monty Python…

C# 判断字符串不等于空的示例

在C#中&#xff0c;要判断一个字符串是否不等于空&#xff08;即它既不是null也不是空字符串""&#xff09;&#xff0c;方法有如下几种&#xff0c;如下。 方法1 使用逻辑运算符和string.IsNullOrEmpty方法 string myString "123"; // 假设要检查的字…

重邮803计网概述

目录 一.计算机网络向用户提供的最重要的功能 二.互联网概述 1.网络的网络 2.计算机网络的概念 3. 互联网发展的三个阶段 4.制订互联网的正式标准要经过以下的四个阶段 5.互联网的组成&#xff08;功能&#xff09; 6.互联网功能 7.互联网的组成&#xff08;物理&#…

java自学阶段二:JavaWeb开发50(Spring和Springboot学习)

Spring、Springboot基础知识学习 目录 学习目标Spring基础概念IOC控制反转DI依赖注入事务管理AOP面向切面编程Spring案例说明&#xff08;Postman使用、Restful开发规范、lombok、Restful、nginx了解&#xff09; 一&#xff1a;学习目标&#xff1a; 1&#xff09;了解Sprin…

将小爱音箱接入 ChatGPT 和豆包ai改造成专属语音助手

这个GitHub项目&#xff0c;mi-gpt&#xff0c;旨在将小爱音箱和米家设备与ChatGPT和豆包集成&#xff0c;有效地将这些设备转变为个性化语音助手。以下是对其功能和设置的详细分析&#xff1a; 主要特点 角色扮演&#xff1a;该项目允许小爱适应不同的角色&#xff0c;如伴侣…

HCIA-WLAN实验-二层旁挂组网

目录 前言&#xff1a;拓扑说明创建新拓扑配置网络互通SW1上配置VLAN10 20 30SW1上放行对应的VLANSW2上创建vlan 10 20并在对应接口放行VLAN在AC上创建vlan10并放行对应接口在SW1上创建vlanif20和vlanif30&#xff0c;并配置对应的IP在AC上创建vlanif10并配置IP在路由器AR上配置…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景&#xff1a; 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】&#xff1a; 形如SyntaxError: EOL while scanning string literal&#xff0c;以红色波浪线形式在Pycharm下出现 过程&#xff1a; 问题概述&#xff1a; 简单…

[数据集][目标检测]道路圆石墩检测数据集VOC+YOLO格式461张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;462 标注数量(xml文件个数)&#xff1a;462 标注数量(txt文件个数)&#xff1a;462 标注类别…

基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道

作者&#xff1a;尹航 在前文《基于阿里云服务网格流量泳道的全链路流量管理&#xff08;一&#xff09;&#xff1a;严格模式流量泳道》、《基于阿里云服务网格流量泳道的全链路流量管理&#xff08;二&#xff09;&#xff1a;宽松模式流量泳道》中&#xff0c;我们介绍了流…

wpf工程中加入Hardcodet.NotifyIcon.Wpf生成托盘

1、在项目中用nuget引入Hardcodet.NotifyIcon.Wpf。如下图所示。 2、在App.xaml中创建托盘界面&#xff0c;代码是写在 App.xaml 里面 注意在application中一定要加入这一行代码&#xff1a; xmlns:tb"http://www.hardcodet.net/taskbar" 然后在<Application.R…

【免费Web系列】JavaWeb实战项目案例七(项目结束)

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 登录认证 在前面的课程中&#xff0c;我们已经实现了部门管理、员工管理的基本功能&#xff0c;但是大家会发现&#xff0c;我们并没有登录&#xff0c;就直接访问到了Tlias智能学习辅助系统的后台。 这…

韩国Neowine推出第三代强加密芯片ALPU-CV

推出第三代加密芯片&#xff1b;是ALPU系列中的高端IC&#xff1b;是一款高性能车规级加密芯片&#xff1b;其加密性更强、低耗电、体积小&#xff1b;使得防复制、防抄袭板子的加密性能大大提升&#xff0c;该芯片通过《AEC-Q100》认证&#xff0c;目前已经在国产前装车辆配件…

亚马逊测评自养号需要什么资源?

亚马逊测评自养号项目需要用到哪些资源呢&#xff1f; 1. 养号系统及软件 2. 代理IP资源 3. 收货地址及注册资料 4. 国外信用卡及礼品卡 5. 邮箱及手机号想做好这个项目以上的资源缺一不可 首先我们来说说养号的环境&#xff0c;养号的环境在以前的文章里也提到过&#x…

基于python的网上挂号预约系统-计算机毕业设计源码89352

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;医院当然也不例外。网上挂号预约系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用Py…

软件三班20240605

文章目录 1.创建工程和模块2.添加 web支持3.创建前端代码4.添加servlet 依赖5. 代码6.案例2 1.创建工程和模块 2.添加 web支持 方法1 方法2 3.创建前端代码 4.添加servlet 依赖 5. 代码 <!DOCTYPE html> <html lang"en"> <head><meta c…