diff --git a/src/test/java/de/rwth/swc/sqa/CustomerTest.java b/src/test/java/de/rwth/swc/sqa/CustomerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8bbaf725f1ce8cac5e569a90317912273abd26df
--- /dev/null
+++ b/src/test/java/de/rwth/swc/sqa/CustomerTest.java
@@ -0,0 +1,147 @@
+package de.rwth.swc.sqa;
+
+
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
+
+import de.rwth.swc.sqa.model.DiscountCard;
+import io.restassured.RestAssured;
+
+@SpringBootTest(webEnvironment = RANDOM_PORT)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class CustomerTest {
+
+    @LocalServerPort
+    int serverPort;
+
+    @BeforeEach
+    public void setup() {
+        RestAssured.port = serverPort;
+    }
+
+
+    @Test
+    @Order(1)
+    public void addCustomerTest() {
+    	 //400
+        Map<String, Object> parms1 = new HashMap<String, Object>();
+        parms1.put("birthdate", "");
+        parms1.put("disabled", true);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms1).when().post("/customers").then().statusCode(400);
+        
+    	//200
+        Map<String, Object> parms = new HashMap<String, Object>();
+    	parms.put("birthdate", "2000-01-01");
+    	parms.put("disabled", false);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post("/customers").then().statusCode(201);
+        
+        Map<String, Object> parms3 = new HashMap<String, Object>();
+    	parms3.put("birthdate", "2001-01-01");
+    	parms3.put("disabled", false);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post("/customers").then().statusCode(201);
+       
+
+    }
+
+    @Test
+    @Order(2)
+    public void addDiscountCardToCustomerTest() {
+    	Long customerId =0L;
+    	String path = "/customers/"+customerId+"/discountcards";
+    	Map<String, Object> parms = new HashMap<String, Object>();
+        //404
+    	 customerId = 1L;
+    	path = "/customers/"+customerId+"/discountcards";
+    	parms.clear();
+    	parms.put("customerId", customerId);
+    	parms.put("id", 1L);
+    	parms.put("type", 1);
+    	parms.put("validFrom", "2022-01-01");
+    	parms.put("validFor", DiscountCard.ValidForEnum._30D);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(404);
+    	
+    	//400
+        customerId = DataService.customerList.get(0).getId();
+        path = "/customers/"+customerId+"/discountcards";
+        parms.clear();
+    	parms.put("customerId", customerId);
+    	parms.put("type", 1);
+    	parms.put("validFrom", "2022-01-01");
+    	parms.put("validFor", DiscountCard.ValidForEnum._30D);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(400);
+        
+        
+      //201
+    	customerId = DataService.customerList.get(0).getId();
+    	path = "/customers/"+customerId+"/discountcards";
+    	parms.clear();
+    	parms.put("customerId", customerId);
+    	parms.put("id", 1L);
+    	parms.put("type", 1);
+    	parms.put("validFrom", "2022-01-01");
+    	parms.put("validFor", DiscountCard.ValidForEnum._30D);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(201);
+        
+        //409 repeat conflict
+        customerId = DataService.customerList.get(0).getId();
+        path = "/customers/"+customerId+"/discountcards";
+    	parms.clear();
+    	parms.put("customerId", customerId);
+    	parms.put("id", 1L);
+    	parms.put("type", 1);
+    	parms.put("validFrom", "2022-01-01");
+    	parms.put("validFor", DiscountCard.ValidForEnum._30D);
+
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(409);
+
+
+    }
+
+    @Test
+    @Order(3)
+    public void getCustomerDiscountCardTest() {
+    	Long customerId =0L;
+    	String path = "/customers/"+customerId+"/discountcards";
+        //400
+    	path = "/customers/"+customerId+"/discountcards";
+        RestAssured.given().when().get(path).then().statusCode(400);
+    	
+    	//404
+        customerId = 11111L;
+        path = "/customers/"+customerId+"/discountcards";
+        RestAssured.given().when().get(path).then().statusCode(404);
+
+        
+        
+      //201
+    	customerId = DataService.customerList.get(0).getId();
+    	path = "/customers/"+customerId+"/discountcards";
+        RestAssured.given().when().get(path).then().statusCode(200);
+
+
+
+    }
+}
+
+
+
+
+
+
diff --git a/src/test/java/de/rwth/swc/sqa/TicketTest.java b/src/test/java/de/rwth/swc/sqa/TicketTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d898012c02517a5e3c1d93238008c85d630ec19
--- /dev/null
+++ b/src/test/java/de/rwth/swc/sqa/TicketTest.java
@@ -0,0 +1,131 @@
+package de.rwth.swc.sqa;
+
+
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
+
+import io.restassured.RestAssured;
+
+@SpringBootTest(webEnvironment = RANDOM_PORT)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class TicketTest {
+
+    @LocalServerPort
+    int serverPort;
+
+    @BeforeEach
+    public void setup() {
+        RestAssured.port = serverPort;
+    }
+
+
+    @Test
+    @Order(1)
+    public void buyTicketTest() {
+    	 //400//no birthdate
+        Map<String, Object> parms1 = new HashMap<String, Object>();
+        parms1.put("validFor", "1h");//
+        parms1.put("zone", "A");
+        parms1.put("student", true);
+        parms1.put("discountCard", true);
+        parms1.put("disabled", true);
+        parms1.put("validFrom", "2022-05-20 10:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms1).when().post("/tickets").then().statusCode(400);
+        
+    	//200
+        parms1.clear();
+        parms1.put("birthdate", "1992-01-01");
+        parms1.put("validFor", "1d");
+        parms1.put("zone", "A");
+        parms1.put("student", true);
+        parms1.put("discountCard", true);
+        parms1.put("disabled", true);
+        parms1.put("validFrom", "2022-05-20 10:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms1).when().post("/tickets").then().statusCode(200);
+        
+        parms1.clear();
+        parms1.put("birthdate", "1992-01-01");
+        parms1.put("validFor", "30d");
+        parms1.put("zone", "A");
+        parms1.put("student", true);
+        parms1.put("discountCard", true);
+        parms1.put("disabled", true);
+        parms1.put("validFrom", "2022-05-20 10:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms1).when().post("/tickets").then().statusCode(200);
+        
+       
+
+    }
+
+    @Test
+    @Order(2)
+    public void validateTicketTest() {
+    	String path = "/tickets/validate";
+    	Long ticketId =0L;
+    	Map<String, Object> parms = new HashMap<String, Object>();
+        //400 //格式不对,缺少必要信息
+    	parms.clear();
+    	parms.put("ticketId", ticketId);
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(400);
+    	
+      //403 //ticketid不对
+    	parms.clear();
+    	parms.put("ticketId", ticketId);
+    	parms.put("birthdate", "1992-01-01");
+    	parms.put("zone", "A");
+    	parms.put("student", true);
+    	parms.put("disabled", true);
+    	parms.put("date", "2022-05-22 10:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(403);
+        
+    	//403//时间过期
+        ticketId = DataService.ticketList.get(0).getId();
+        parms.clear();
+    	parms.put("ticketId", ticketId);
+    	parms.put("birthdate", "1992-01-01");
+    	parms.put("zone", "A");
+    	parms.put("student", true);
+    	parms.put("disabled", true);
+    	parms.put("date", "2022-05-22 10:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(403);
+        
+        
+      //200//信息一致,且有效期内
+        ticketId = DataService.ticketList.get(0).getId();
+        parms.clear();
+    	parms.put("ticketId", ticketId);
+    	parms.put("birthdate", "1992-01-01");
+    	parms.put("zone", "A");
+    	parms.put("student", true);
+    	parms.put("disabled", true);
+    	parms.put("date", "2022-05-20 12:00:00");
+        RestAssured.given().header("content-Type", "application/json").and()
+        .body(parms).when().post(path).then().statusCode(200);
+        
+
+
+    }
+
+}
+
+
+
+
+
+