En raison du calendrier serré des tâches de développement et de l'interface incomplète et des données de base, même si un scénario de test d'interface complet est conçu, il est impossible d'effectuer des tests de couverture complets et efficaces et en raison de la direction d'un scénario de test d'interface unique ; la conception est constituée des paramètres d'entrée et des paramètres de sortie. À partir des paramètres d'entrée se trouvent la vérification des paramètres requis, le type de paramètre et la valeur limite du paramètre, puis la combinaison des paramètres d'entrée, par exemple, une interface a 5 paramètres, 3 requis, 2 facultatifs, et le type de données est string , int, etc., ainsi que des restrictions de longueur de caractères, donc le nombre de ces cas de test à interface unique sera conçu, euh... trop pour être compté si le nombre de paramètres d'entrée et de paramètres. les types augmentent, alors Ce nombre est indescriptible, il est donc nécessaire de prendre en compte la maîtrise par le testeur des méthodes de conception de cas de test d'interface.
1. Paramètres de type numérique
Division de classe d'équivalence : dans la plage de valeurs, en dehors de la plage de valeurs
Comment comprendre cela ? Quelles valeurs ou plages choisir, choisissez simplement entre l'intérieur et l'extérieur de la plage spécifiée ici
Analyse des valeurs limites : le maximum et le minimum sont justes, le maximum +1, le minimum -1, il s'agit de trouver la limite à partir du plage de valeurs, où le maximum et le minimum sont les limites du type de données
Conception de valeur spéciale : 0 ou nombres non positifs, des décimales peuvent être conçues
Traversal : pas de raccourcis, épuisez la plage de valeurs, celle-ci sera généralement filtrée par classes d'équivalence et valeurs limites, et n'a pas besoin d'être épuisé ;
2. Type de chaîne
Longueur de chaîne
Classe d'équivalence : à l'intérieur et à l'extérieur de la plage de valeurs
Valeur limite : limite de type de plage spécifiée ; parmi les caractères spéciaux du type chaîne, fait ici référence à 0 ou chaîne vide, null
Contenu de la chaîne
Types spécifiques : chinois et anglais, majuscules et minuscules, chinois simplifié et traditionnel
Caractères spéciaux : emoji, symboles de ponctuation, autres caractères spéciaux de la méthode de saisie
<!-- 首先创建springboot框架的maven项目pom添加如下依赖,ide可以安装插件:spring assistant,一键创建springboot框架的maven项目 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version><!-- 2.3.0.RELEASE版本可选 --> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- springboot框架的主要依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.0</version> </dependency>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <optional>true</optional> </dependency>
<!-- 顺带提一下的另一个做代码覆盖率检测的插件 --> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.7</version> </dependency> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.3</version> <configuration> <!--指定生成 .exec 文件的存放位置 --> <destFile>target/coverage-reports/jacoco-unit.exec</destFile> <!--Jacoco 是根据 .exec 文件生成最终的报告,所以需指定 .exec 的存放路径 --> <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile> </configuration> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> <!-- tips:jacoco在maven中执行的命令是:mvn clean jacoco:prepare-agent install jacoco:report -Dmaven.test.failure.ignore=true -->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.10</version> </dependency> <!-- 右键选择Coverage as 执行框架即可,运行完在指定目录或当前控制台查看覆盖率 -->
# junit4.x是如下使用: import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest @RunWith(SpringRunner.class) public class BaseTest { } # 而换成testng就是如下使用: import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; @SpringBootTest public class BaseTest extends AbstractTestNGSpringContextTests { } # 同样是使用@SpringBootTest注解,但是它启动sprintboot服务不一样,testng必须继承AbstractTestNGSpringContextTests使用; # 扩展:还可以是继承AbstractTransactionalTestNGSpringContextTests类,二选一; # @SpringBootTest(classes={是你的SpringBoot启动app类}),例如:@SpringBootTest(classes=UserApplication.class)
Ne lisez pas mon article pour la suite, cela dépend de vos propres performances. Le cas de test unitaire est le suivant :
package com.text; import xxx.xxx.xxx public TestSampler extends BaseTest{ @BeforeClass void bf(){ // 测试写测试的前置条件,那些只需要执行一次的数据 } @Test void test_add(){ // 这里写需要测试的代码 } // 。。。 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!