[AI Claude] 软件测试1
好的,这个《软件测试项目综合实训》看起来是一个非常典型的测试项目,我会一步一步指导你如何使用platform-v1.0.0
这个项目来完成它。这个项目是一个电商平台,包含后台管理(platform-admin
)和API接口(platform-api
),非常适合作为测试对象。
请注意:由于实际操作中的截图、具体代码调试等无法在此文本环境中完成,我会提供方法和模板,你需要实际操作并替换其中的占位符内容。整个过程会比较长,请耐心操作。
项目整体步骤概览:
- 环境准备与项目运行:搭建Java、Maven、IDE、数据库环境,导入并成功运行
platform-v1.0.0
项目。 - 测试需求分析:理解项目功能,明确测试范围。
- 测试计划:制定测试策略、资源、时间安排。
- 单元测试:使用JUnit对Java代码进行测试。
- 功能测试:使用Selenium对Web界面进行测试。
- 接口测试:使用Postman/APIPost对API接口进行测试。
- 性能测试:使用JMeter对系统进行性能测试。
- 测试管理工具使用:(概念性)如何使用禅道/Jira等工具管理测试过程。
- 测试总结:总结测试过程、问题和经验。
- 编写测试报告和PPT。
第一步:环境准备与项目运行
-
安装必要软件:
- JDK 1.8 (Java Development Kit):
- 下载地址:Oracle官网或者AdoptOpenJDK。
- 安装:按照提示安装,并配置
JAVA_HOME
环境变量,将%JAVA_HOME%\bin
添加到Path环境变量。 - 验证:命令行输入
java -version
和javac -version
查看是否成功。
- Maven 3.5+:
- 下载地址:Apache Maven官网。
- 安装:解压到指定目录,配置
MAVEN_HOME
或M2_HOME
环境变量,将%MAVEN_HOME%\bin
添加到Path。 - 验证:命令行输入
mvn -v
查看是否成功。 - (可选) 配置阿里云镜像:修改Maven的
conf/settings.xml
文件,在<mirrors>
标签内添加:<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> </mirror>
- IDE (IntelliJ IDEA Community Edition推荐):
- 下载地址:JetBrains官网。
- 安装:按照提示安装。
- MySQL 5.7+ (或8.0):
- 下载地址:MySQL官网。
- 安装:按照提示安装,记住设置的root密码。
- 图形化工具:可以使用Navicat, MySQL Workbench, DataGrip或IDEA自带的数据库工具。
- Git (代码版本控制,推荐安装):
- 下载地址:Git官网。
- 安装:按照提示安装。
- 测试工具 (后续步骤安装): JUnit (集成在IDEA中)、Selenium IDE (浏览器插件) 或 Selenium WebDriver, Postman/APIPost, JMeter。
- JDK 1.8 (Java Development Kit):
-
项目导入与配置:
- 解压项目: 将
platform-v1.0.0.zip
解压到你的工作目录。 - 数据库准备:
- 启动MySQL服务。
- 使用数据库图形化工具连接MySQL。
- 创建数据库:
(注意:根据项目实际需要的数据库名调整,CREATE DATABASE `platform-dev` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE `mall` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE `ccbpm` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
platform-dev
是主业务库) - 导入SQL数据:找到项目中的
_sql
目录,内有platform.sql
,mall.sql
,ccbpm.sql
,sys_region.sql
等文件。按顺序将这些SQL文件导入到对应的数据库中。例如,platform.sql
导入到platform-dev
库。
- IDE导入项目:
- 打开IntelliJ IDEA,选择 “Open” 或 “Import Project”。
- 定位到解压后的
platform-v1.0.0
目录,选择根目录下的pom.xml
文件。 - IDEA会自动识别为Maven项目并开始下载依赖(需要网络,若配置了阿里云镜像会快很多)。
- 修改数据库配置:
- 定位到
platform-admin/src/main/resources/dev/platform.properties
文件。 - 修改以下数据库连接信息为你自己的配置:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/platform-dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false jdbc.username=root jdbc.password=你的MySQL密码
- 同理,检查并修改
platform-api/src/main/resources/platform-api.xml
(或其他相关配置文件)中关于数据库的配置,确保API模块也能连接到数据库。但通常API模块会引用common模块的配置。
- 定位到
- 运行项目:
platform-admin
(后台管理系统) 通常是一个Web应用。在IDEA中,Maven项目构建完成后,找到platform-admin
模块。- 配置Tomcat (如果项目需要外部Tomcat) 或使用内嵌的 (如Spring Boot)。这个项目看起来是传统的SSM项目,可能需要配置Tomcat。
- 在IDEA中,点击 “Add Configuration…” -> “+” -> “Tomcat Server” -> “Local”。
- 配置Tomcat服务器路径。
- 在 “Deployment” 标签页,点击 “+” -> “Artifact…” -> 选择
platform-admin:war exploded
。 - Application context可以设置为
/platform-admin
或/
。 - 运行配置好的Tomcat。
- 如果项目是Spring Boot (查看
pom.xml
是否有Spring Boot依赖,以及是否有main
方法类注解@SpringBootApplication
),可以直接运行该main方法。- 从
platform-admin/pom.xml
看,它是一个传统的war包项目。
- 从
- 浏览器访问:例如
http://localhost:8080/platform-admin
(端口和context path根据你的配置)。 - 默认登录账号密码通常在
README.md
或数据库初始化脚本中有说明(例如admin/admin)。 platform-api
模块也是类似,如果它也是一个独立可运行的web应用的话。通常API模块会和Admin模块部署在同一个Tomcat中,或者分别部署。platform-api
同样是一个war包项目,可以类似地部署。
- 解压项目: 将
一旦项目能在你本地成功运行,后台能登录,API能通过某种方式访问到(比如SwaggerUI),那么第一步就完成了。
第二步:测试需求分析
测试需求分析是从项目的功能规格说明书、用户手册、与开发人员/产品经理沟通等途径,提炼出需要测试的功能点、性能指标、安全要求等。
- 功能需求分析:
- 后台管理系统 (
platform-admin
):- 用户管理:登录、用户增删改查、角色权限分配。
- 商品管理:商品分类、商品上下架、商品信息编辑、库存管理。
- 订单管理:订单查看、订单状态修改(发货、完成、取消)、退款处理。
- 内容管理:广告管理、文章管理等。
- 系统设置:基础参数配置。
- API接口 (
platform-api
):- 用户认证:用户注册、登录、获取用户信息。
- 首页展示:轮播图、推荐商品、分类。
- 商品浏览:商品列表、商品详情、商品搜索。
- 购物车:添加商品、查看购物车、修改数量、删除商品。
- 订单流程:下单、支付(模拟)、查看订单、取消订单。
- 用户中心:个人信息、收货地址管理、我的收藏、我的足迹。
- 后台管理系统 (
- 非功能需求分析:
- 性能需求:
- 主要接口(如登录、获取商品列表、下单)的响应时间应在X秒内。
- 系统应能支持Y并发用户数。
- 易用性需求:
- 后台管理界面操作应便捷,提示清晰。
- API接口文档应清晰易懂。
- 兼容性需求: (如果考核要求)
- 后台管理系统应兼容主流浏览器(Chrome, Firefox)。
- 安全性需求: (如果考核要求)
- 用户密码应加密存储。
- 防止SQL注入、XSS攻击。
- 接口应有权限控制。
- 性能需求:
第三步:测试计划
测试计划是指导测试过程的文档,包括测试范围、测试策略、资源分配、进度安排、风险评估等。
- 1. 引言
- 编写目的:阐述编写测试计划的目的,作为后续测试工作的依据。
- 项目背景:简述
platform-v1.0.0
电商项目。
- 2. 测试范围
- 需要测试的功能模块:列出在需求分析中确定的后台和API模块。
- 不需要测试的功能模块:(如果有)
- 3. 测试策略
- 单元测试:针对核心工具类、服务类进行。
- 功能测试:覆盖主要业务流程和核心功能点。
- 接口测试:覆盖主要的API接口,重点测试数据交互和逻辑正确性。
- 性能测试:针对关键业务场景(如用户登录、浏览商品、下单)进行并发测试和响应时间测试。
- 4. 测试资源
- 硬件资源:PC一台。
- 软件资源:JDK, Maven, IDEA, MySQL, Tomcat, JUnit, Selenium, Postman/APIPost, JMeter。
- 人力资源:小组成员(如果是个人,就是自己)。
- 5. 测试进度与时间安排
- 制定一个时间表,例如:
- 环境搭建与需求分析:X天
- 测试计划与用例设计:Y天
- 单元测试执行:Z天
- 功能测试执行:A天
- 接口测试执行:B天
- 性能测试执行:C天
- 测试报告编写:D天
- 制定一个时间表,例如:
- 6. 测试提交物
- 测试计划文档
- 测试用例
- 单元测试代码及结果截图
- 功能测试脚本及缺陷报告(截图)
- 接口测试报告(截图)
- 性能测试报告
- 测试总结报告
- 答辩PPT
- 7. 风险评估
- 项目环境搭建遇到问题。
- 对业务不熟悉导致测试用例设计不全面。
- 测试工具使用不熟练。
- 时间不足。
- 应对措施:提前学习、查阅资料、预留缓冲时间。
第四步:单元测试 (JUnit)
针对Java代码进行单元测试。主要测试对象是Service层的方法和Util类。
-
1. 选择测试工具: JUnit。IDEA内置支持。
-
2. 确定测试对象:
- 从
platform-common/src/main/java/com/platform/utils/
中选择一个工具类,例如DateUtils.java
或StringUtils.java
(如果存在且有可测方法)。 - 从
platform-admin/src/main/java/com/platform/service/impl/
中选择一个Service实现类,例如SysUserServiceImpl.java
中的某个公共方法。
- 从
-
3. 编写测试用例:
- 示例:测试
DateUtils.format(Date date, String pattern)
方法- 在
platform-common
模块的src/test/java
目录下创建相应的包路径,例如com/platform/utils/
。 - 创建测试类
DateUtilsTest.java
。
package com.platform.utils;import org.junit.Test; import java.util.Date; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull;public class DateUtilsTest {@Testpublic void testFormat() {Date date = new Date(); // Or a specific dateString pattern = "yyyy-MM-dd HH:mm:ss";String formattedDate = DateUtils.format(date, pattern);assertNotNull(formattedDate);// Add more specific assertions based on expected output// For example, if you know the current year, month, day// System.out.println("Formatted Date: " + formattedDate); // For manual check}@Testpublic void testGetCurrentYear() { // Assuming DateUtils has such a method// int year = DateUtils.getCurrentYear();// assertEquals(2024, year); // Adjust expected year}// Add more test methods for other functionalities of DateUtils }
- 在
- 示例:测试
SysUserServiceImpl
中某个方法 (这可能需要Mock依赖,对于初学者可能复杂,可以先选不依赖其他Bean的方法,或专注于工具类)- 如果测试Service方法,并且该方法依赖DAO,你需要使用 Mockito 等框架来模拟DAO的行为,避免直接操作数据库。
- 对于初学者,可以先尝试测试一些不依赖外部Bean(如DAO)的简单逻辑方法。如果找不到,可以简化或跳过Service层的单元测试,重点放在工具类的单元测试。
- 在
platform-admin/src/test/java
下创建测试类,如com/platform/service/SysUserServiceTest.java
。 - 需要在测试类的
pom.xml
中添加JUnit和Spring Test依赖(如果它们还没在父POM中统一管理):<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> <scope>test</scope> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version> <scope>test</scope> </dependency>
- 一个简单的测试类结构可能如下 (需要Spring上下文支持):
注意: 运行依赖Spring上下文的单元测试,你需要正确配置// package com.platform.service; // import com.platform.entity.SysUserEntity; // import org.junit.Test; // import org.junit.runner.RunWith; // import org.springframework.beans.factory.annotation.Autowired; // import org.springframework.test.context.ContextConfiguration; // import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; // import static org.junit.Assert.*;// @RunWith(SpringJUnit4ClassRunner.class) // @ContextConfiguration(locations = {"classpath:spring-jdbc.xml", "classpath:platform-common.xml", "classpath:platform-shiro.xml"}) // 根据实际配置文件调整 // public class SysUserServiceTest {// @Autowired // private SysUserService sysUserService;// @Test // public void testQueryObject() { // // 假设你知道一个存在的用户ID,比如1L (admin) // SysUserEntity user = sysUserService.queryObject(1L); // assertNotNull("User should not be null", user); // assertEquals("User ID should be 1", Long.valueOf(1L), user.getUserId()); // System.out.println("Fetched user: " + user.getUsername()); // } // }
@ContextConfiguration
指向你的Spring配置文件。这可能比较复杂,对于新手,建议优先测试不依赖Spring上下文的工具类。
- 示例:测试
-
4. 执行测试并记录结果:
- 在IDEA中,右键点击测试类或测试方法,选择 “Run ‘TestName’”。
- 查看JUnit窗口的测试结果(绿色条表示通过,红色条表示失败)。
- 截图保存测试结果。
第五步:功能测试 (Selenium)
针对Web界面 (platform-admin
) 进行功能测试。
-
1. 选择测试工具: Selenium IDE (浏览器插件,适合初学者) 或 Selenium WebDriver (用Java等语言编写脚本)。推荐先尝试Selenium IDE。
- Selenium IDE: 在Chrome或Firefox浏览器中搜索并安装 “Selenium IDE” 插件。
-
2. 设计测试用例 (至少10个,使用等价类、边界值、决策表等方法):
- 模块:用户登录
- 用例1 (正确流程): 输入正确的用户名和密码,点击登录,验证是否跳转到后台首页。 (等价类有效)
- 用例2 (错误密码): 输入正确的用户名和错误的密码,点击登录,验证是否提示错误信息。 (等价类无效)
- 用例3 (空用户名): 用户名为空,输入密码,点击登录,验证提示。 (边界值)
- 用例4 (空密码): 输入用户名,密码为空,点击登录,验证提示。 (边界值)
- 模块:商品管理 - 添加商品 (假设字段:商品名称、价格、库存)
- 用例5 (有效数据): 输入有效的商品名称(字符串)、价格(正数)、库存(正整数),点击保存。 (等价类有效)
- 用例6 (无效价格-负数): 商品名称有效,价格为负数,库存有效,点击保存。 (边界值/等价类无效)
- 用例7 (无效库存-字符): 商品名称有效,价格有效,库存为非数字字符,点击保存。 (等价类无效)
- 用例8 (名称超长): 商品名称超过允许的最大长度,其他有效。 (边界值)
- 模块:用户管理 - 查询用户
- 用例9 (存在的用户): 输入存在的用户名,点击查询,验证列表是否显示该用户。
- 用例10 (不存在的用户): 输入不存在的用户名,点击查询,验证列表是否为空或提示无结果。
- (你需要根据实际界面和功能补充更多用例)
- 用例表示例 (Excel或文档):
用例ID 模块 子模块 测试标题 前置条件 测试步骤 预期结果 实际结果 是否通过 备注 TC001 用户登录 登录功能 正确用户名密码登录成功 后台服务已启动,有admin用户 1. 打开登录页 2. 输入用户名:admin 3. 输入密码:admin 4. 点击登录 成功登录,跳转到后台首页,显示欢迎信息 TC002 用户登录 登录功能 错误密码登录失败 后台服务已启动 1. 打开登录页 2. 输入用户名:admin 3. 输入密码:wrong 4. 点击登录 登录失败,页面提示“用户名或密码错误” … … … … … … …
- 模块:用户登录
-
3. 开发测试脚本 (使用Selenium IDE录制或编写WebDriver脚本):
- Selenium IDE:
- 打开Selenium IDE插件。
- 创建一个新项目/测试套件/测试用例。
- 输入后台登录页面的URL作为Base URL。
- 点击"Record"按钮,然后在浏览器中执行你的测试步骤(如登录)。
- Selenium IDE会自动记录你的操作。
- 停止录制,回放脚本,调试脚本中的定位符(如ID, Name, XPath, CSS Selector)和等待时间。
- 保存测试用例。
- Selenium WebDriver (Java示例 - 登录):
- 在
platform-admin
模块的pom.xml
中添加Selenium依赖:<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version> <scope>test</scope> </dependency>
- 下载对应浏览器的WebDriver (e.g., ChromeDriver for Chrome) 并将其路径配置到系统Path或在代码中指定。
- 创建测试类,例如
AdminLoginTest.java
:import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertTrue;public class AdminLoginTest {private WebDriver driver;@Beforepublic void setUp() {// 设置ChromeDriver路径,如果没在环境变量中// System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe");driver = new ChromeDriver();driver.manage().window().maximize();}@Testpublic void testAdminLoginSuccess() throws InterruptedException {driver.get("http://localhost:8080/platform-admin/login.html"); // 你的后台登录URL// 根据实际页面元素ID或Name或XPath等定位WebElement usernameField = driver.findElement(By.name("username"));WebElement passwordField = driver.findElement(By.name("password"));WebElement loginButton = driver.findElement(By.xpath("//button[@type='submit']")); // 假设登录按钮usernameField.sendKeys("admin");passwordField.sendKeys("admin");loginButton.click();// 等待页面跳转和加载,简单等待,实际项目中用WebDriverWaitThread.sleep(3000);// 验证是否跳转到首页,比如检查页面标题或某个特定元素assertTrue("Login failed, not on dashboard", driver.getTitle().contains("后台管理")); // 假设后台首页标题}@Afterpublic void tearDown() {if (driver != null) {driver.quit();}} }
- 在
- Selenium IDE:
-
4. 执行测试用例并发现缺陷:
- 运行Selenium脚本或手动执行用例。
- 记录实际结果,与预期结果比较。
- 如果发现缺陷,记录缺陷信息:缺陷ID、标题、复现步骤、预期结果、实际结果、严重程度、优先级、截图等。
- 截取测试执行过程的关键界面和有数据的界面。
第六步:接口测试 (Postman/APIPost)
针对platform-api
模块的API接口进行测试。
- 1. 选择测试工具: Postman 或 APIPost。两者都有图形化界面,易于上手。
- 2. 确定测试接口及分析接口规范:
- 运行
platform-api
模块(可能与platform-admin
一起部署或单独部署)。 - 访问Swagger UI(如果项目集成了):通常是
http://localhost:你的端口/platform-api/swagger-ui.html
。 - Swagger UI会列出所有API接口、请求方法(GET/POST/PUT/DELETE)、请求参数、响应结构。这是你的主要参考。
- 核心接口选择:
- 用户注册:
POST /api/register
- 用户登录:
POST /api/auth/login
(获取token) - 获取商品列表:
GET /api/goods/list
- 获取商品详情:
GET /api/goods/detail?id=xxx
- 添加到购物车:
POST /api/cart/add
(需要登录token) - 提交订单:
POST /api/order/submit
(需要登录token)
- 用户注册:
- 运行
- 3. 设计接口测试用例:
- 用例1 (用户登录-成功):
- URL:
BASE_URL/api/auth/login
- Method: POST
- Body (JSON):
{"mobile": "你的注册手机", "password": "你的密码"}
- 预期结果: Status Code 200, 响应体包含token和用户信息,
errno
为0。
- URL:
- 用例2 (用户登录-密码错误):
- URL:
BASE_URL/api/auth/login
- Method: POST
- Body (JSON):
{"mobile": "你的注册手机", "password": "错误密码"}
- 预期结果: Status Code 200 (或特定错误码如401/400,看API设计), 响应体
errno
非0,errmsg
提示密码错误。
- URL:
- 用例3 (获取商品列表-无需登录):
- URL:
BASE_URL/api/goods/list?page=1&size=10&categoryId=x
- Method: GET
- 预期结果: Status Code 200, 响应体包含商品列表数据。
- URL:
- 用例4 (添加到购物车-需要登录):
- 前置:先执行登录接口获取token。
- URL:
BASE_URL/api/cart/add
- Method: POST
- Headers:
X-Nideshop-Token: YOUR_LOGIN_TOKEN
(根据实际项目Header名) - Body (JSON):
{"goodsId": xxx, "productId": yyy, "number": 1}
- 预期结果: Status Code 200,
errno
为0, 购物车数量增加。
- 用例1 (用户登录-成功):
- 4. 执行接口测试:
- 打开Postman/APIPost。
- 创建请求,填入URL、选择Method、设置Headers (如Content-Type: application/json, X-Nideshop-Token)、填写Body。
- 发送请求,查看响应状态码、响应体、响应头。
- 使用Postman的 “Tests” 功能编写断言来自动验证响应。例如:
// For successful login pm.test("Status code is 200", function () {pm.response.to.have.status(200); }); pm.test("Errno is 0 and token exists", function () {var jsonData = pm.response.json();pm.expect(jsonData.errno).to.eql(0);pm.expect(jsonData.data.token).to.not.be.empty;// Store token for subsequent requestspm.environment.set("authToken", jsonData.data.token); });
- 截图记录请求和响应,以及断言结果。
第七步:性能测试 (JMeter)
针对Web服务器、数据库服务器或应用服务器的关键业务进行测试。
- 1. 选择测试工具: JMeter。
- 下载地址:Apache JMeter官网。
- 安装:解压即可,运行
bin/jmeter.bat
(Windows) 或bin/jmeter.sh
(Linux/Mac)。
- 2. 确定关键业务和性能指标:
- 关键业务:用户登录、浏览商品列表、查看商品详情、下单。
- 性能指标:
- 响应时间 (Average, 90th Percentile)。
- 吞吐量 (Requests per second/minute)。
- 错误率。
- 3. 设计负载模式:
- 并发用户数:例如,从10、20、50个并发用户开始。
- 加载方式:逐步加压 (Ramp-up period)。
- 持续时间:例如,每个场景运行5-10分钟。
- 思考时间:在请求之间加入随机的思考时间 (e.g., Uniform Random Timer),模拟用户真实行为。
- 4. 编写JMeter测试脚本:
- 测试计划 (Test Plan):
- 右键 Test Plan -> Add -> Threads (Users) -> Thread Group.
- Number of Threads (users): e.g., 20
- Ramp-up Period (in seconds): e.g., 10 (10秒内启动20个用户)
- Loop Count: e.g., 5 (每个用户循环5次) or Forever (配合Duration)
- HTTP请求 (Sampler):
- 右键 Thread Group -> Add -> Sampler -> HTTP Request.
- 登录请求:
- Server Name or IP:
localhost
- Port Number:
你的API端口
(如8080) - Method:
POST
- Path:
/platform-api/api/auth/login
(或后台登录接口路径) - Body Data (如果是POST JSON): 填入登录的JSON串。
- Add -> Config Element -> HTTP Header Manager (在HTTP Request下或Thread Group下)
- Add: Name:
Content-Type
, Value:application/json
- Add: Name:
- Server Name or IP:
- 获取商品列表请求 (需要Token时):
- 如果接口需要token,先通过登录请求获取token。
- Add -> Post Processors -> JSON Extractor (在登录请求下)
- Names of created variables:
authToken
- JSON Path expressions:
$.data.token
(根据实际响应结构) - Match No.:
1
- Names of created variables:
- 在后续需要token的请求的Header Manager中,添加:
- Name:
X-Nideshop-Token
(或你的token header名) - Value:
${authToken}
- Name:
- 监听器 (Listener):
- 右键 Thread Group -> Add -> Listener -> View Results Tree (查看详细请求响应)
- 右键 Thread Group -> Add -> Listener -> Summary Report (查看汇总统计)
- 右键 Thread Group -> Add -> Listener -> Aggregate Report (更详细的统计)
- 右键 Thread Group -> Add -> Listener -> Response Time Graph (响应时间图)
- 定时器 (Timer):
- 右键 Thread Group (或单个请求) -> Add -> Timer -> Uniform Random Timer
- Random Delay Maximum (ms): e.g., 3000 (0-3秒随机延迟)
- Constant Delay Offset (ms): e.g., 1000 (额外固定延迟1秒)
- 右键 Thread Group (或单个请求) -> Add -> Timer -> Uniform Random Timer
- 右键 Test Plan -> Add -> Threads (Users) -> Thread Group.
- 测试计划 (Test Plan):
- 5. 执行性能测试并分析结果:
- 启动JMeter脚本。
- 观察监听器中的数据。
- 测试完成后,查看Summary Report / Aggregate Report 中的平均响应时间、吞吐量、错误率等。
- 分析瓶颈:如果响应时间过长或错误率高,可能存在性能瓶颈。
- 截图保存JMeter配置和测试结果报告。
第八步:测试管理工具使用 (概念)
虽然考核方案提到“测试管理工具使用”,但对于新手一次性掌握并实际运用一个完整的测试管理平台(如禅道、Jira+Xray/Zephyr、TestRail)可能要求过高。你可以这样做:
- 选择一个工具进行了解: 推荐禅道 (开源,国内常用) 或 Jira (业界流行,配合测试插件)。
- 说明其核心功能:
- 需求管理: 如何记录和跟踪测试需求。
- 用例管理: 如何创建、组织、版本控制测试用例(对应你用Excel/文档设计的用例)。
- 测试执行: 如何创建测试轮次/计划,将用例分配给测试人员,记录每个用例的执行结果(通过/失败/阻塞)。
- 缺陷管理: 如何提交、跟踪、管理缺陷(对应你发现的bug)。
- 报告生成: 如何生成测试进度报告、覆盖率报告、缺陷分析报告。
- 在你的测试报告中,专门开辟一节,图文并茂地(可以找网上的工具截图)说明如果使用XX测试管理工具,你的测试活动(用例、缺陷等)会如何被管理。
- 例如,你可以展示禅道的用例管理界面截图,并说明你的Excel用例可以导入或在此创建。
- 展示缺陷提交流程的截图,并说明你发现的bug会如何记录。
- 这样即使没有实际深度使用,也体现了你对测试管理工具的理解和应用意识。
第九步:测试总结
总结整个测试过程中的经验、遇到的问题、如何解决的、以及对项目质量的整体评估。
- 测试覆盖率简述: 基于测试的功能点,估算测试覆盖情况。
- 遇到的主要问题及解决方案:
- 环境配置问题(如JDK版本冲突、Maven依赖下载失败):如何通过搜索、修改配置解决。
- Selenium脚本定位元素困难:如何使用不同的定位策略、等待机制解决。
- API接口调用不通(如Token问题、参数错误):如何通过查看文档、调试解决。
- JMeter脚本参数化、关联问题:如何学习和配置。
- 项目本身的缺陷:列举一些代表性的缺陷。
- 经验教训:
- 测试计划的重要性。
- 用例设计的技巧。
- 自动化测试的优势与挑战。
- 沟通的重要性。
- 对项目质量的评估: (根据测试结果)目前项目存在哪些主要问题,哪些模块相对稳定,建议等。
第十步:编写测试报告和PPT
1. 测试报告 (课程设计报告.docx
)
以下是测试报告的结构和主要内容模板,你需要根据你的实际测试情况填充。
《软件测试项目综合实训》测试报告项目名称:platform-v1.0.0 电商平台测试
小组成员:(你的名字)
日期:(提交日期)目录
1. 引言1.1 编写目的1.2 项目背景1.3 参考资料 (如考核方案、项目代码)
2. 测试概述2.1 测试范围2.2 测试环境 (硬件、软件、被测项目版本)2.3 测试策略概述
3. 测试需求分析3.1 platform-admin 后台管理系统功能点3.2 platform-api 接口功能点3.3 (可选) 非功能需求点
4. 测试计划回顾4.1 计划执行情况4.2 资源使用情况
5. 单元测试5.1 测试对象及方法5.1.1 工具类 XXXUtils 测试5.1.2 服务类 YYYService 测试5.2 测试用例 (可附代码片段或链接到附件)5.3 测试结果与分析 (附JUnit截图)
6. 功能测试6.1 测试对象及方法 (Selenium IDE/WebDriver)6.2 测试用例设计 (附详细测试用例表,至少10条,体现等价类、边界值等)示例模块:- 用户登录- 商品管理- ...6.3 测试执行过程与结果(附关键步骤截图,包括正常流程和发现缺陷的流程)6.4 缺陷列表与分析| 缺陷ID | 标题 | 复现步骤 | 预期 | 实际 | 严重程度 | 截图 ||---|---|---|---|---|---|---|| BUG001 | ... | ... | ... | ... | 高/中/低 | (截图) || ... | ... | ... | ... | ... | ... | ... |
7. 接口测试7.1 测试对象及方法 (Postman/APIPost)7.2 核心接口说明(列出测试的API,说明其功能、URL、方法、主要参数、预期响应)7.3 测试用例与执行结果(每个接口至少1-2个用例,包括成功和失败场景,附Postman/APIPost截图,含请求、响应、断言)示例接口:- /api/auth/login- /api/goods/list- ...
8. 性能测试8.1 测试对象及方法 (JMeter)8.2 关键业务场景- 用户登录- 商品浏览- ...8.3 负载设计 (并发数、加压方式、持续时间)8.4 测试结果与分析(附JMeter关键配置截图、Summary Report/Aggregate Report截图、响应时间图等)(分析响应时间、吞吐量、错误率是否达标,是否存在瓶颈)
9. 测试管理工具使用 (概念性说明)9.1 选用工具简介 (如禅道)9.2 如何在本项目的测试中应用- 用例管理 (截图示例)- 缺陷跟踪 (截图示例)
10. 测试总结10.1 测试执行总结 (覆盖范围、完成情况)10.2 缺陷总结与分析10.3 项目质量评估10.4 经验教训与建议
附录 (可选)A. 完整测试用例列表B. 单元测试代码C. Selenium脚本片段
2. PPT文件 (答辩PPT.pptx
)
PPT结构可以参考测试报告的结构,但更侧重于可视化和要点展示。
- 幻灯片1:封面
- 标题:《软件测试项目综合实训》答辩
- 项目名称:platform-v1.0.0 电商平台测试
- 汇报人:(你的名字)
- 日期
- 幻灯片2:项目概述
- 项目简介 (
platform-v1.0.0
是什么) - 测试目标
- 测试范围 (简要)
- 项目简介 (
- 幻灯片3:测试环境与工具
- 硬件环境
- 软件环境
- 测试工具列表 (JUnit, Selenium, Postman, JMeter等)
- 幻灯片4:单元测试
- 测试对象举例 (e.g., XXXUtils)
- 测试方法 (JUnit)
- 关键测试用例代码片段 (截图)
- 测试结果截图与简要分析
- 幻灯片5-6:功能测试
- 测试模块举例 (e.g., 用户登录、商品管理)
- 用例设计方法演示 (等价类/边界值如何应用在一个例子上)
- 关键测试步骤截图 (Selenium IDE或执行过程截图)
- 发现的代表性缺陷展示 (截图,简要描述)
- 幻灯片7-8:接口测试
- 测试接口举例 (e.g., /api/auth/login, /api/goods/list)
- Postman/APIPost演示截图 (请求、响应、断言)
- 测试结果总结 (哪些接口通过,哪些有问题)
- 幻灯片9-10:性能测试
- 测试场景 (e.g., 20并发用户登录并浏览商品)
- JMeter脚本关键配置截图
- 性能测试结果图表 (响应时间、吞吐量、错误率)
- 结果分析与瓶颈初步判断
- 幻灯片11:测试管理 (概念)
- 简述测试管理工具的作用 (如禅道)
- 展示如何将用例、缺陷在工具中管理的示例截图
- 幻灯片12:测试总结与体会
- 测试完成情况
- 项目整体质量评估 (简要)
- 遇到的主要问题和解决方法
- 个人心得与体会
- 幻灯片13:致谢
重要提示给新手:
- 循序渐进: 不要试图一次性完成所有内容。先确保环境搭好,项目能跑起来。然后一个测试类型一个测试类型地攻克。
- 多查资料: 遇到问题时,搜索引擎是你最好的朋友。搜索错误信息、工具用法等。
- 从小处着手: 例如,单元测试先选最简单的工具类方法;功能测试先手动跑通再尝试自动化;接口测试先用Postman手动发请求再学断言。
- 记录过程: 随时截图,记录你修改的配置、遇到的问题和解决步骤。这些都是测试报告和总结的好素材。
- 理解原理: 不仅仅是会用工具,尝试理解为什么这么做,比如等价类划分的依据是什么,性能测试中思考时间为什么重要。
- 不要怕犯错: 测试本身就是发现问题的过程,包括你操作中可能出现的错误。
这个过程会花费不少时间和精力,但完成后你会对软件测试有一个非常全面的实践体验。祝你成功!如果你在特定步骤遇到具体问题,可以再提出来。