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

目标程序

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

使用方法介绍

  • 因果图法

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

}

 
时间: 2024-10-29 03:35:41

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

【软件测试】Visual Studio中的编码的UI测试

前言 实验课的时候看了Visual Studio Ultimate 2012:通过编码的UI测试轻松测试用户界面这个视频之后,尝试了一下,感觉非常新颖,分享一下心得.视频地址是http://s.ch9.ms/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHS/Visual-Studio-Ultimate-2012-Easily-testing-user-interfaces-with-Coded-UI-tests-CHS UI测

软件测试第5周——VisualStudio 2013 编码的UI测试

本周实验课上了解了如何使用VisualStudio进行 编码的UI测试,下面说一下步骤: 1. 打开VisualStudio 2013 2. 创建 编码的UI测试项目 3. 打开应用商店 app 4. 点击红色录制,开始录制动作. 录制完成之后,再次点击相同位置按钮,结束录制.点击生成代码,来生成代码. 生成代码之后,vs内显示如下: 进入VS, 点击左侧全部运行,会显示生成的测试函数 图中已经显示测试通过,及测试时间.到此,UI测试粒子完成.

软件测试技术第一周课堂随笔记录

写在前,这是软件测试技术的课堂随笔,记录了一些在课上所阐述的内容. 一.由于是第一周课,免不了讲起软件测试的定义:什么是软件测试. 软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求.预先定义的不一致性.-----------------百度百科. 个人的理解暂时就是:1.找bug.2.找出需求与实际的差别. 二.软件测试常见测试方法: 从测试是否针对软件结

《软件测试技术》课程第八周随笔

软件测试第八周随笔,本周软件测试的课程已全部结束,随笔重点回顾下因果图.  (一)概念: 因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合.约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件涉及的各种组合情况.因果图法一般和判定表结合使用,通过映射同时发生相互影响的多个输入来确定判定条件.因果图法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况.采用因果图法能帮助我们按照一定的步骤选择一组高效的测试用例

因果图法测试小例

上一节软件测试课上,学习了因果图法,就课上的例子,我也尝试了自己的解法. 原题: 产品说明书:有一个处理单价为1元5角钱的盒装饮料的自动售货机软件.若投入1元5角硬币,按下“可乐”.“雪碧”.或“红茶”按钮,相应的饮料就送出来.若投入的是2元硬币,在送出饮料的同时退还5角硬币. 解析: 根据题目,可以将原因分为5种,而结果分为4种. 因:1.投入1元5角硬币 2.投入2元硬币 3.按下‘可乐’按钮 4.按下‘雪碧’按钮 5.按下‘红茶’按钮 果:1.退出5角硬币 2.送出‘可乐’ 3.送出‘雪碧

软件测试技术的未来【转】

"测试已死"的观点在业内仍然存在着争议,很多公司缩减了测试人员,开发测试比屡创新高.本文旨在通过介绍软件测试的新趋势和新技术来展示软件测试行业面临的机遇与挑战,为软件测试工程师的职业规划提供参考. 安全测试 从孟加拉国银行8100万美元被黑客成功盗取到美国民主党邮件泄露事件可以看出,网络安全事件已经被推到了风口浪尖.随着物联网逐步普及,智能家居.汽车电子等设备的网络化水平大幅提升.但物联网的安全却不容乐观,很多中小企业往往忽视安全防护.开源软件的源代码公开,黑客可以通过阅读源代码更容易

软件测试技术概述

1.等价类划分法 依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个有代表性的测试数据开展测试. 2.边界值分析法 边界值分析法是对输入或输出的边界值进行测试的一种测试方法.通常边界值分析法是作为对等价类划分法的补充. 3.因果图法 因果图法是从需求中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转化成判定表. 4.决策表法 决策表法能把复杂逻辑关系和多条件组合情况表达得较明确 5.错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的

黑盒测试方法—因果图法

在一个功能模块中往往含有许多的功能模块,如果单独去测试每一个模块则会显得事倍功半,并且逻辑也会比较混乱,容易遗漏一些数据.因果图法是一个比较有用的方法,其考虑到了输入数据之间以及输入与输出之间的各种关系. 一.下面首先介绍因果图中的基本符号 1.恒等 含义:若原因出现则结果也出现,原因不出现,结果也不出现.即:如a=1.则b=1;  a=0,则b=0. 2.非(~) 含义:若原因出现,则结果不出现.即若a=1,则b=0:a=0:则b=1. 3.或(V) 含义:若几个原因中有一个出现,则结果出现,

PHP Socket 吉林快三跨度玩法平台开发编程进阶指南

?Linux吉林快三跨度玩法平台开发[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370 或者 Mac 环境:?安装有 Sockets 扩展:?了解 TCP/IP 协议. socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 --enable-sockets 配置项来启用. 如果自带的PHP没有编译scokets扩展,可以下载相同版本的源码,进入ext/sockets使用phpize编译安装. socket系列函数 soc