本次考试复习需要准备win8以上系统的电脑,此电脑仅供学员在家练习使用,考试的时候,考场的设备都是现成的 。
本次技能考试一共3个题目,第一题为案例分析题(文字要求背诵,考试的时候按照顺序填入),另外2题均为实操题,复习视频参考B站链接。
复习策略:红色部分为重点内容,实操重点看试题一,试题二、试题三。
试题2-1:
https://www.bilibili.com/video/BV1jrtvzJEXN/?spm_id_from=333.1387.homepage.video_card.click
试题2-2:
https://www.bilibili.com/video/BV1qrtvzJEsY/?spm_id_from=333.1387.homepage.video_card.click
试题3:
https://www.bilibili.com/video/BV1ZrtvzJEzG/?spm_id_from=333.1387.homepage.video_card.click
试题5:
https://www.bilibili.com/video/BV1Ru33zKEQL/?spm_id_from=333.1387.homepage.video_card.click
试题6:
https://www.bilibili.com/video/BV1LT33zqEKh/?spm_id_from=333.1387.homepage.video_card.click
试题1、补充完整详细设计说明内容
用户管理模块
1:用户登录。
2:用户名和密码。
帖子管理模块
3:查看帖子。
4:为用户提供收藏帖子的页面。
5:当前登录用户的唯一ID和被收藏帖子的唯一ID。
试题2、根据题目描述,编写Java代码完成测试。
测试用例说明
| 测试场景 | 输入 ( count , price ) | 预期输出 | 逻辑验证 |
|---|---|---|---|
| 单件无折扣 | (1,100) | 100 | 数量小于等于1,无折扣 |
| 打95折(2件) | (2,100) | 190 | 2件1000.95=190 |
| 打95折(5件) | (5,100) | 475 | 5件1000.95=475 |
| 打85折(6件) | (6,100) | 510 | 6件1000.85=510 |
| 打85折(10件) | (10,100) | 850 | 10件1000.85=850 |
| 打8折(10件以上) | (12,100) | 960 | 12件1000.8=960 |
| 不触发批量优惠(285<300) | (3,100) | 285 | 3件1000.95=285(不减30) |
| 触发批量优惠(960>300) | (12,100) | 870 | 960-3*30=870 |
| 边界值(0件) | (0,100) | 0 | 数量为0,总价为0 |
| 边界值(5件) | (5,100) | 475 | 验证打95折的边界 |
| 边界值(10件) | (10,100) | 850 | 验证打85折的边界 |
| 极端值(price=0) | (100,0) | 0 | 单价为0,总价为0 |
| 极端值(count极大) | (100,100) | 7220 | 1001000.8=8000——》8000-780=7220 |
关键测试点
-
折扣阶梯:确保1件、2-5件、6-10件、>10件的折扣正确。
-
批量优惠:检查 Math.floor(totalPrice / 300) * 30 是否精确计算。
-
边界值:验证 count = 0、5、10 等临界值。
-
鲁棒性:测试 price = 0 或极大 count 时的行为。
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ComputeFunctionTest {
// 测试单件商品(无折扣)
@Test
public void testSingleItemNoDiscount() {
assertEquals(100.0, compute(1, 100.0), 0.001);
}
// 测试 2-5 件商品(5%折扣)
@Test
public void testFivePercentDiscount() {
// 2 * 100 * 0.95 = 190
assertEquals(190.0, compute(2, 100.0), 0.001);
// 5 * 100 * 0.95 = 475
assertEquals(475.0, compute(5, 100.0), 0.001);
}
// 测试 6-10 件商品(15%折扣)
@Test
public void testFifteenPercentDiscount() {
// 6 * 100 * 0.85 = 510
assertEquals(510.0, compute(6, 100.0), 0.001);
// 10 * 100 * 0.85 = 850
assertEquals(850.0, compute(10, 100.0), 0.001);
}
// 测试 10 件以上商品(20%折扣)
@Test
public void testTwentyPercentDiscount() {
// 12 * 100 * 0.8 = 960
assertEquals(960.0, compute(12, 100.0), 0.001);
}
// 测试批量优惠(满300减30)
@Test
public void testBulkDiscount() {
// 不触发批量优惠(285 < 300)
// 3 * 100 * 0.95 = 285
assertEquals(285.0, compute(3, 100.0), 0.001);
// 触发批量优惠(960 / 300 = 3.2 → 减 3 * 30 = 90)
// 960 - 90 = 870
assertEquals(870.0, compute(12, 100.0), 0.001);
}
// 测试边界条件(count = 0, 5, 10)
@Test
public void testEdgeCases() {
// count = 0
assertEquals(0.0, compute(0, 100.0), 0.001);
// count = 5(5%折扣)
assertEquals(475.0, compute(5, 100.0), 0.001);
// count = 10(15%折扣)
assertEquals(850.0, compute(10, 100.0), 0.001);
}
// 测试极端情况(price = 0, count极大)
@Test
public void testExtremeValues() {
// price = 0
assertEquals(0.0, compute(100, 0.0), 0.001);
// 100件,单价100,20%折扣 → 8000,满300减780(26 * 30)
// 8000 - 780 = 7220
assertEquals(7220.0, compute(100, 100.0), 0.001);
}
// 原函数(待测试)
public double compute(int count, double price) {
double totalPrice = 0.0;
if (count <= 1) {
totalPrice = count * price;
} else if (count <= 5) {
totalPrice = count * price * 0.95;
} else if (count <= 10) {
totalPrice = count * price * 0.85;
} else {
totalPrice = count * price * 0.8;
}
double floorPrice=Math.floor(totalPrice / 300);
totalPrice -= floorPrice * 30;
return totalPrice;
}
试题3、编写Java代码完成组件编程。
具体代码:
Log4j.properties文件内容:
#设置根日志级别为DEBUG,输出器为console
log4j.rootLogger=DEBUG, console
控制台输出配置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#日志格式配置:
#%p- 日志级别(DEBUG/INFO/WARN/ERROR)
#%d{yyyy-MM-dd HH:mm:ssSSS}- 日期时间,精确到毫秒
#%c- 日志记录器的名称
#%m- 日志消息
#%n- 换行符
log4j.appender.console.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ssSSS} %c %m%n
LogTest.java文件内容:
package test;
import java.io.File;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogTest {
// 获取Logger实例
private static final Logger logger = Logger.getLogger(LogTest.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
// 加载log4j配置文件
String log4jConfigFile = "src" + File.separator + "log4j.properties";
PropertyConfigurator.configure(log4jConfigFile);
// 测试日志输出
// DEBUG: 调试信息
// INFO: 一般信息
// WARN: 警告信息
// ERROR: 错误信息
logger.debug("debug message");
logger.info("info message");
logger.warn("warn message");
logger.error("error message");
}
}