软件测试技术(三)——使用因果图法进行的UI测试

 

目标程序

较上次增加两个相同的输入框

使用方法介绍

  • 因果图法

在Introduction to Software Testing by Paul一书中,将软件测试的覆盖标准划分为四类,logical expressions,syntactic descriptions,graphs,input domain characterizations,就我所学的内容来看,等价类划分属于input domain characterizations,控制流与数据流测试属于graphs,而因果图法属于logical expressions。它从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。

  • 步骤
  1. 列出因和果
  1. 画出因果图
  1. 根据因果图画出判定表
  1. 如变量太多,可先将判定表进行简化,之后设计测试用例

原因与结果

原因编号

内容

C1

第一个输入框未输入

C2

第二个输入框未输入

C3

第三个输入框未输入

B1

第一个输入框输入错误

B2

第二个输入框输入错误

B3

第三个输入框输入错误

结果编号

输出动作

需求

Ef1

第一个输入框后显示错误信息

C1 或 B1

Ef2

第二个输入框后显示错误信息

C2 或 B2

Ef3

第三个输入框后显示错误信息

C3 或 B3

Ef4

显示“success”

三个输入框均正确输入

因果图

判定表


编号






原因

C1

0

0

1

1

0

C2

0

0

0

1

0

C3

0

0

0

1

0

B1

0

0

0

0

1

B2

0

0

0

0

1

B3

0

1

0

0

1

中间结果

M1

0

0

1

1

1

M2

0

0

0

1

1

M3

0

1

0

1

1

M4

0

1

1

1

1

结果

Ef1

0

0

1

1

1

Ef2

0

0

0

1

1

Ef3

0

1

0

1

1

Ef4

1

0

0

0

0

程序代码

程序代码

package addTNA; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.regex.Matcher; import java.util.regex.Pattern; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Orientation; import javafx.geometry.Pos; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ScrollBar; import javafx.scene.control.TextField; import javafx.scene.layout.Background; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.StackPane; import javafx.scene.layout.TilePane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; public class CopyOfName extends Application { public static void main(String[] args) { launch(args); } public void start(Stage primaryStage) { Group root = new Group(); Label label1 = new Label("Name:"); Label label2 = new Label("Name:"); Label label3 = new Label("Name:"); TextField Name1 = new TextField(); TextField Name2 = new TextField(); TextField Name3 = new TextField(); Label label12 = new Label("请输入1-6个英文字母或数字"); Label label22 = new Label("请输入1-6个英文字母或数字"); Label label32 = new Label("请输入1-6个英文字母或数字"); label12.setOpacity(0); label22.setOpacity(0); label32.setOpacity(0); label12.setTextFill(Color.RED); label22.setTextFill(Color.RED); label32.setTextFill(Color.RED); Name1.setMaxWidth(100); Name2.setMaxWidth(100); Name3.setMaxWidth(100); HBox hb1 = new HBox(); hb1.getChildren().add(label1); hb1.getChildren().add(Name1); hb1.getChildren().add(label12); hb1.setSpacing(10); HBox hb2 = new HBox(); hb2.getChildren().add(label2); hb2.getChildren().add(Name2); hb2.getChildren().add(label22); hb2.setSpacing(10); HBox hb3 = new HBox(); hb3.getChildren().add(label3); hb3.getChildren().add(Name3); hb3.getChildren().add(label32); hb3.setSpacing(10); VBox vb = new VBox(); Button confirm = new Button("confirm"); vb.getChildren().addAll(hb1,hb2,hb3); vb.getChildren().add(confirm); vb.setSpacing(20); vb.setLayoutX(20); vb.setLayoutY(40); root.getStylesheets().add("ad.css"); File file = new File("xiaoshuo/ad.css"); System.out.println(file.exists()); confirm.setOnAction(new EventHandler(){ public void handle(ActionEvent arg0) { // TODO Auto-generated method stub BorderPane al = new BorderPane(); Text t = new Text("success"); StringBuffer s1 = new StringBuffer(Name1.getText()); StringBuffer s2 = new StringBuffer(Name2.getText()); StringBuffer s3 = new StringBuffer(Name3.getText()); System.out.println(s1); Pattern pattern = Pattern.compile("[0-9a-zA-Z]+"); boolean b1 = pattern.matcher(s1).matches(); boolean b2 = pattern.matcher(s2).matches(); boolean b3 = pattern.matcher(s3).matches(); if(!b1 || s1.length()>=7){ label12.setOpacity(1); }else{ label12.setOpacity(0); } if(!b2 || s2.length()>=7){ label22.setOpacity(1); }else{ label22.setOpacity(0); } if(!b3 || s3.length()>=7){ label32.setOpacity(1); }else{ label32.setOpacity(0); } Button back = new Button("confirm"); al.setTop(t); al.setAlignment(t, Pos.CENTER); al.setAlignment(back, Pos.CENTER); al.setCenter(back); al.setLayoutX(70); al.setLayoutY(70); root.getChildren().add(al); //al.getStyleClass().add("ba"); vb.setOpacity(0.3); back.setOnAction(new EventHandler(){ @Override public void handle(ActionEvent arg0) { // TODO Auto-generated method stub root.getChildren().remove(al); vb.setOpacity(1.0); }}); } }); root.getChildren().add(vb); Scene scene = new Scene(root, 400, 300); primaryStage.setScene(scene); primaryStage.show(); } }
 

转载于:https://www.cnblogs.com/ocDx01jin/p/4375788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值