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

@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));++++

++++}++++

++++}++++

相关推荐
CV金科3 小时前
蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
stm32·单片机·嵌入式硬件·算法·蓝桥杯
唐·柯里昂7983 小时前
[3D打印]拓竹切片软件Bambu Studio使用
经验分享·笔记·3d
sml_54213 小时前
【笔记】连续、可导、可微的概念解析
笔记·线性代数
新手unity自用笔记3 小时前
项目-坦克大战学习-子弹的移动与销毁
笔记·学习·c#
Word码4 小时前
数据结构:栈和队列
c语言·开发语言·数据结构·经验分享·笔记·算法
我命由我123454 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
希望有朝一日能如愿以偿5 小时前
力扣题解(飞机座位分配概率)
算法·leetcode·职场和发展
丶Darling.5 小时前
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点&&修剪二叉搜索树
开发语言·数据结构·c++·笔记·学习·算法
结衣结衣.6 小时前
python中的函数介绍
java·c语言·开发语言·前端·笔记·python·学习
LN-ZMOI6 小时前
c++学习笔记1
c++·笔记·学习