12306 项目编写测试用例+接口测试+自动化测试

为了综合将测试部分的知识点学以致用,本文结合 12306官网拿个Offer 12306项目 ,集中在 功能测试(XMind提测+用例编写)、接口测试(Java+TestNG、Python+Pytest、Apifox工具)、自动化测试 等方面(性能测试涉及较多资源知识储备,笔者不具便不展开)。
😊若有错误或者读者有更便捷的思路、操作等等,敬请批评指出。


前置知识

  • 用例的撰写方法

软件测试教程,这个视频的笔记和讲解过程适合新手

  • HTML基本结构,如div、内部的name、class、id属性之类。

如果是科班的,稍微复习一下就够用了

  • TestNG、Pytest、Selenium等技术(相关内容内会附上参考文章)
  • Apifox 测试工具
  • 接口测试用了 拿个Offer 12306项目 项目,读者也可以 Git 开源代码和看公开的部分文档进行调试(基本够用,当然项目的内部的技术文章介绍挺不错的👍)

在这里插入图片描述

一、功能测试

1. 用户模块

1.1 注册功能

📃 用户名规则: 由6-30位字母、数字或“_”两钟类型以上组合而成,且开头必须为字母,未注册

在12306官方网中,用户名相当于人的身份证号一样,对用户来说是唯一且不可更改的。

  • 如果注销后,曾用的用户名会变为可用
  • 在项目中,将注销的用户名添加到,实现注销用户名后续可用的功能,因此针对这一特殊实现添加了测试用例。

1. 等价类划分法

从需求中去划分要测试的类别,6-30位字母、数字或“_”包含了【长度】【类型】的类别,两钟类别以上组合,开头必须为字母,未注册过 为【特殊规则】,则在类别中去划分,得出有效数据和无效数据的规则以及具体测试数据。步骤如下:

1️⃣ 明确需求

由6-30位字母、数字或“_”两钟类别以上组合而成,且开头必须为字母

2️⃣划分有效等价和无效等价

有效等价 无效等价
6-30位 < 6、> 30位
字母、数字或“_” 其他字符,如¥%&
两类型以上组合 纯字母、纯数字、纯“_”等一种类型
开头为字母 开头不为字母
未注册 已注册

3️⃣ 提取数据编写测试用例

用例的撰写一般需要结合等价类和边界值两种方法,此处不先给出用例。

2. 边界值法

根据“开内闭外”原则,目标数据的范围为[6,30],则:

  • 上点:630
  • 内点:15(自由取)
  • 离点:5、7(舍去)、29(舍去)、31

使用 XMind 提取测试点:

在这里插入图片描述

  • 图中的具体测试数据和黑框的概要一般不用画,此处是为了方便笔者自己理解

使用 Excel 设计用例:

在这里插入图片描述

  • Excel部分用例的截图

复制部分 Excel 用例如下:

用例编号 用例标题 项目/模块 优先级 前置条件 测试步骤 用例数据 预期结果
UserName-001 合法用户名(6位(字母、数字“_”,字母开头组成)+未注册) User-Register P0 进入注册界面 1.在用户名输入框输入用户名
2.点击其他任意框
a_1234 合法,无错误提示
UserName-002 合法用户名(30位(字母、数字“_”,字母开头组成)+未注册) User-Register P0 进入注册界面 1.在用户名输入框输入用户名
2.点击其他任意框
b_1234567890_12
34567890_123456
合法,无错误提示
UserName-003 合法用户名(15位(字母、数字“_”,字母开头组成)+未注册) User-Register P0 进入注册界面 1.在用户名输入框输入用户名
2.点击其他任意框
c_1234567890_12 合法,无错误提示
……

1.2 登录功能

  • 登录先检验输入的 用户名/手机号/邮箱 是否符合规定的格式规范符合规范的账号+符合位数的密码才会进行下一步的匹配判断是否登录成功。
  • 账号不存在、账号存在密码错误 两者登录的提示相同,即不会另外提示账号不存在。

使用 XMind 提取测试点:

在这里插入图片描述

注意:逆向用例编写时,如下图中的红框内容在熟悉流程后都可以省去,仅是为了避免粗心写错用例测试数据。

  • 在创建逆向用例时,可以代入高中物理的 控制变量法,如本登录逆向用例中的“密码错误”,除了“密码”这一变量,其他变量一定是正向的,比如测试的账号一定是符合规范格式、已经注册的。

在这里插入图片描述

2. 购票模块

在这里插入图片描述
完整的XMind 提取测试点的图片1 在文末。

二、接口测试【登录】

📖 接口文档为 12306项目接口文档

1. 代码实现

1)Java +TestNG 实现

以【登录用例】为例,代码基本搭建参考 TestNG 单元测试框架的入门与实践 文章,注意添加依赖代码即可。

  • pom.xml 完整依赖代码
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.10</version>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>5.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20210307</version>
        </dependency>
    </dependencies>

Java 代码

登录接口要求:
	1、接口:/api/user-service/v1/login
	2、Header:特定token值
	3、Body (JSON格式):
		{
			 "usernameOrMailOrPhone": "admin"
			 "password": "admin123456",

		}
  • @BeforeSuite注解:执行所有测试执行前运行一次添加测试的基础URI
  • @DataProvider注解:提供多组测试数据,可以模拟不同的测试场景
  • @Test注解:实际执行测试的方法,指定使用 @DataProvider 提供的测试数据
  • 构建请求体:根据传入的参数构建JSON格式的请求体
  • 发送请求:使用REST Assured构建POST请求,设置请求头(包括认证头部)和请求体,然后发送请求到登录端点。
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.json.JSONObject;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import static io.restassured.RestAssured.given;
import static io.restassured.http.ContentType.JSON;

public class TestNG_12306 {
   
    
    private static final String BASE_URL = "http://localhost:8080";
    private static final String LOGIN_ENDPOI
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值