实例分析等价类划分(一)

      这周的《软件测试技术》,我们系统地学习到了等价类划分、边界值分析、因果图法和决策表法。等价类划分法和边界值分析方法都是着重考虑输入条件,下面我先通过一个实际问题更为透彻地介绍下等价类划分,至于其定义和原理详见我的上一篇博客http://www.cnblogs.com/xlwm/p/4343612.html

1.问题描述                                                        

EditBox:
允许1到6个英文字符或数字,按OK结束

(通过输入字符串,返回信息)

2.等价类划分                                                    

 有效等价类编号无效等价类编号
长度1-610,6以上3
字符a-z,A-Z,0-92英文/数字以外字符,控制字符,标点符号4

3.测试用例                                                       

针对等价类的划分,我们可以选取以下作为测试用例:

编号输入覆盖等价类预期输出
Test11 1,2It's OK.
Test2a 1,2It's OK.
Test3Z 1,2It's OK.
Test4123456 1,2It's OK.
Test51a9T0z 1,2It's OK.
Test6123 1,2It's OK.
Test7  3
Please input reasonable string.
Test81234568 3
Please input reasonable string.
Test92; 4
Please input reasonable string.
Test10\n¥& 4
Please input reasonable string.
Test11;@keoffad 3,4
Please input reasonable string.
Test12^afafaf3v 3,4
Please input reasonable string.

 4.代码实现及结果样例:                                   

      我们都知道正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

所以我们判断一个字符串是否是合法的方法是:

  1. 创建一个匹配该字符串的正则表达式;

  2. 用该正则表达式去匹配用户的输入来判断是否合法。

因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。

      这几天我一直在研究python,发现用python是种清晰划一 、功能强大、用途广泛的语言。而python提供re模块,则包含所有正则表达式的功能,其中match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。常见的判断方法就是:

1 test = '用户输入的字符串'
2 if re.match(r'正则表达式', test):
3     print 'ok'
4 else:
5     print 'failed'

      而在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字

      要做更精确地匹配,可以用[]表示范围,比如:

  • [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

  • [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100''0_Z''Py3000'等等;

  • [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;

  • [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

    另外A|B可以匹配A或B,所以[P|p]ython可以匹配'Python'或者'python'^表示行的开头,^\d表示必须以数字开头。$表示行的结束,\d$表示必须以数字结束。

      综上所述,通过这些准备知识,我们可以得知问题所对应的正则表达式便是'^\w{1,6}$',看起来是不是立马高大上,十分简单呢?

最终代码实现如下:

 1 __author__ = 'xinlan'
 2 # -*- coding: utf-8 -*
 3 
 4 from Tkinter import *
 5 import tkMessageBox
 6 import re
 7 
 8 def judge(str):
 9     if re.match(r'^\w{1,6}$', str):
10         return True
11     else:
12         return False
13 
14 class Application(Frame):
15     def __init__(self, master=None):
16         Frame.__init__(self, master)
17         self.pack()
18         self.createWidgets()
19 
20     def createWidgets(self):
21         self.nameInput = Entry(self)
22         self.nameInput.pack()
23         self.alertButton = Button(self, text='OK', command=self.ok)
24         self.alertButton.pack()
25 
26     def ok(self):
27         name = self.nameInput.get()
28         #print(judge(name))
29         if(judge(name)):
30             tkMessageBox.showinfo('Message', 'It\'s OK')
31         else:
32              tkMessageBox.showinfo('Message','Please input reasonable string')
33 
34 app = Application()
35 # 设置窗口标题:
36 app.master.title('Test')
37 # 主消息循环:
38 app.mainloop()

这是部分测试用例的结果图:

(点击OK出现结果,点击OK返回主界面)

(1)

                        

(2)

                                           

(3)   

                                                        

                                     

 

转载于:https://www.cnblogs.com/xlwm/p/4347304.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值