目标程序

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

使用方法介绍

  • 因果图法

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

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

原因与结果

原因编号

内容

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();
}

}

 

软件测试技术(三)——使用因果图法进行的UI测试的更多相关文章

  1. 黑盒测试用例设计方法&理论结合实际 -> 因果图法

    一. 概念 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况 二. 因果图法的应用 等价类划分法和边界值分析方法都是着重考虑输入条件,但没 ...

  2. 实战Excel Add-in的三种玩法

    作者:陈希章 发表于 2017年11月26日 前言 这个系列文章应该有一阵子没有更新了,原因是一如既往的多,但是根本所在是我对于某些章节其实还没有完全想好怎么写,尤其是对于Office Add-in这 ...

  3. 软件测试技术lab2——Selenium上机实验

    Selenium上机实验说明 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://121.193.130.195:8080/使用学号登录系统 ...

  4. Assignment2:因果图法的介绍与示例分析

    一. 黑盒测试:是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试.几种常用的黑盒测试方法和黑盒测试工具有,等价类划分法.边界值分析法.因果图法.决策表 ...

  5. 製程能力介紹(SPC introduction) ─ 製程能力的三種表示法

    製程能力的三種表示法 Ck: 準度指標 (accuracy)   Ck=(M-X)/(T/2) Cp: 精度指標 (precision)   Cp=T/(6σp) 規格為單邊時:Cp=(Tu-X)/3 ...

  6. WorldCount代码检查与优化——软件测试第三次作业

    合作者:201631062222,201631062232 代码地址:https://gitee.com/biubiubiuLYQ/ceshi_secend 本次作业链接地址:https://edu. ...

  7. 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系

    你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...

  8. 【运维技术】kafka三实例集群环境搭建及测试使用

    kafka三实例集群环境搭建及测试使用 单机搭建分为两部分:1. 软件安装启动 2. 软件配置 软件安装启动: # 切换到目录 cd /app # 获取kafka最新安装包,这边使用的是镜像地址,可以 ...

  9. 《软件测试自动化之道》读书笔记 之 基于Windows的UI测试

    <软件测试自动化之道>读书笔记 之 基于Windows的UI测试 2014-09-25 测试自动化程序的任务待测程序测试程序  启动待测程序  获得待测程序主窗体的句柄  获得有名字控件的 ...

随机推荐

  1. cojs 奈特 题解报告

    才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 ...

  2. lintcode 中等题:Palindrome Linked List 回文链表

    题目 回文链表 设计一种方式检查一个链表是否为回文链表. 样例 1->2->1 就是一个回文链表. 挑战 O(n)的时间和O(1)的额外空间. 解题 法一: 再定义一个链表,存放链表反转的 ...

  3. lintcode:Valid Sudoku 判断数独是否合法

    题目: 判断数独是否合法 请判定一个数独是否有效.该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 样例 下列就是一个合法数独的样例. 注意 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...

  4. 【Linux高频命令专题(9)】ls

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  5. Hibernate逍遥游记-第10章 映射继承关系-001继承关系树中的每个具体类对应一个表

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  6. Qt源码分析之QObject

    原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...

  7. C#实现的ReplaceFirst和ReplaceLast

    原文:C#实现的ReplaceFirst和ReplaceLast ReplaceFirst: public static string ReplaceFirst(string input, strin ...

  8. C++:虚函数的引入

    5.4虚函数5.4.1 虚函数的引入 //例5.19 虚函数的引例 #include<iostream> using namespace std; class MyBase{ //声明基类 ...

  9. linux 进入包含空格文件名的文件夹

    可以使用加英文的引号cd  /usr/chen/java/"MyeClips\ 如果"\"在行末,是说明本行还未结束,下面一行和本行是一起的意思. 一般短格式的选项(一个 ...

  10. 剖析MapReduce 作业运行机制

    包含四个独立的实体: ·  Client Node 客户端:编写 MapReduce代码,配置作业,提交MapReduce作业. ·  JobTracker :初始化作业,分配作业,与 TaskTra ...