好的,这个《软件测试项目综合实训》看起来是一个非常典型的测试项目,我会一步一步指导你如何使用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>
标签内添加:xml<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。
-
-
项目导入与配置:
- 解压项目: 将
platform-v1.0.0.zip
解压到你的工作目录。 - 数据库准备:
-
启动MySQL服务。
-
使用数据库图形化工具连接MySQL。
-
创建数据库:
sqlCREATE 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
文件。 -
修改以下数据库连接信息为你自己的配置:
propertiesjdbc.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
。
javapackage 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 { @Test public void testFormat() { Date date = new Date(); // Or a specific date String 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 } @Test public 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中统一管理):xml<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上下文支持):
java// 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()); // } // }
注意: 运行依赖Spring上下文的单元测试,你需要正确配置
@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依赖:xml<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
:javaimport 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; @Before public void setUp() { // 设置ChromeDriver路径,如果没在环境变量中 // System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe"); driver = new ChromeDriver(); driver.manage().window().maximize(); } @Test public 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(); // 等待页面跳转和加载,简单等待,实际项目中用WebDriverWait Thread.sleep(3000); // 验证是否跳转到首页,比如检查页面标题或某个特定元素 assertTrue("Login failed, not on dashboard", driver.getTitle().contains("后台管理")); // 假设后台首页标题 } @After public 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" 功能编写断言来自动验证响应。例如:
javascript// 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 requests pm.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手动发请求再学断言。
- 记录过程: 随时截图,记录你修改的配置、遇到的问题和解决步骤。这些都是测试报告和总结的好素材。
- 理解原理: 不仅仅是会用工具,尝试理解为什么这么做,比如等价类划分的依据是什么,性能测试中思考时间为什么重要。
- 不要怕犯错: 测试本身就是发现问题的过程,包括你操作中可能出现的错误。
这个过程会花费不少时间和精力,但完成后你会对软件测试有一个非常全面的实践体验。祝你成功!如果你在特定步骤遇到具体问题,可以再提出来。