转:使用正则表达式进行高效的测试

在之前文章(如何使用思维导图更高效的设计测试用例?)提到了使用正则表达式帮助我们测试,这里就简单介绍下,只是说出我的经验而已,也请看到文章的朋友多指正~

在软件系统中,很多地方都会用到正则表达式,对于这种功能的测试,其实更多的就是测试其正则表达式的有效性,以下就我的经验列出了几个场景以及介绍下如何快速的对正则表达式进行测试。

讲解正则表达式的文章可以参考:http://deerchao.net/tutorials/regex/regex.htm

在线正则表达式测试:http://www.ostools.net/regex

1. 校验邮箱地址密码等数据格式

校验数据格式的合法性是正则表达式的一项最常用的功能,正则表达式是一种形式化的字符串描述方法,只需要很少的代码就可以描述需要用到的字符串格式.

校验邮箱地址格式:

例如:6~18个字符,可使用字母、数字、下划线,需以字母开头

需要覆盖的用例:

1)输入长度19位邮箱地址

2)输入长度为6位的邮箱地址

3)输入长度为5位的邮箱地址

4)输入20位的邮箱地址

5)输入@前很短的满足长度要求的邮箱地址

6)输入短域名的满足长度要求的邮箱地址

7)输入@后域名较长的满足长度要求的邮箱地址

8)输入带‘_’的正常邮箱地址

9)输入含其他特殊字符的邮箱地址

10)输入数字开头的邮箱地址

11)输入下划线开头的邮箱地址

是否还是担心覆盖不全面呢?是否还有下划线在开头或末尾的情况?是否还有首位字母其余全数字的邮箱地址呢?还有大小写的情况呢?等等!

如果你理解了正则表达式,会让你放心很多了:

^[a-zA-Z]\w*@\w*(\.\w*){1,3}$

上面的正则表达式除了字符长度不好处理外,其余的情况都包括了,讲解一下:

^[a-zA-Z]:^匹配开始的字符串,即以字母开头不区分大小写

\w*:匹配0个或多个字母或数字或下划线

@:邮箱地址必不可少的符号

(\.\w*){1,3}:包含1~3个格式类似为.com的内容,包含了字母数字或下划线,例如yahoo.com.cn, z.cn的域名直接秒杀

$:匹配结束的字符串,这里即是以类似.com格式结束的内容

密码,身份证号码及URL中参数值等等的校验都是基于正则表达式的应用,以后再碰到类似的应用可以不用再琢磨case覆盖度是否够不够了,直接测试正则表达式会更高效喔。

2. 提取解析特定内容

对于文本或html文件按照特定的格式进行解析以提取重要信息,都是基于强大的正则表达式进行的开发,在招聘领域一个非常好的应用就是简历解析,可以把各个渠道的简历在一个系统中进行标准化管理易于检索, 这就需要把不同格式的简历解析成对应的内容存储到数据库中,就很好的利用了正则表达式强大的功能。

这里,至少需要考虑到的功能测试用例:

1)使用任意撰写的文本格式的简历进行解析

2)使用各个招聘平台的简历进行解析,如智联招聘,前程无忧,赶集等等,需要比较庞大的简历数据来测试其效果

3)使用html格式的简历解析

4)解析英文的简历

5)使用含有大量各种字符的内容解析

6)使用仅包含空格的内容解析

7)使用超长文本比如上百M不是简历的内容解析

8)随机抽取各种文件进行解析

9)然后还需对简历各个重要部分进行单独测试:如各种学历的解析,学校的解析,职位的解析,公司的解析等等。貌似这是一项永远都做不完的工作

举个简单的例子,学历的提取:

应该是要能提取小学,初中,高中,大专,本科,硕士,博士,MBA,EMBA以及对应英文的学历,然后做数据映射成标准化的内容。如果制造各种简历来测试该需求,还不如先来测试其正则表达式,这里只是说明一个测试思路,不再列出对应的正则表达式了~

3. 字符串替换

工作中有些时候还会有这样的需求,把某某格式的A内容替换成B内容,这也是一个对正则表达式的应用,我们一样可以从开发人员那里获得正则表达式,对正则表达式进行review并可以构造各种数据来测试它。

4. 灵活使用正则表达式

我以前在测试工作中还有这样的情况,把页面中对应的数据都找出来然后从数据库中删除,你可以一条一条的通过手工填写到sql语句中,也可以通过简单的正则表达式对页面源文件解析后获取所有的数据,再通过强大的文本工具UltraEdit等把换行符替换成逗号,写到sql中,我相信后者会更快。当然,类似的应用可能还有很多很多。

5. 使用RegexBuddy工具

在线的正则表达式测试已基本满足需求,但是功能不够强大,而regexbuddy具备很多功能,可以测试正则表达式正确性,可以方便地把正则表达式生成各种语言下的代码,具有强大的library库,自带最常用的正则表达式如email,IP,域名,html标签等,还可以进行正则表达式的性能测试等,堪称正则表达式神器,不过是付费软件,大家也可以从网上下载绿色免费版使用。对于正则性能测试是个很好用的功能,因为正则表达式写的不好,直接影响了匹配的性能,体现到文章第2点中就会导致处理时间的延长,这也会是致命的。

时间: 2024-11-02 14:28:42

转:使用正则表达式进行高效的测试的相关文章

最佳App开发模式-开发高效,测试、推送一站搞定【广州站】

活动概况时间:2015年03月28日13:00-17:00 地点:广州贝塔咖啡(新港中路TIT创意园内创意西路07号楼) 主办:APICloud.个推.Testin 网址:www.apicloud.com 费用:免费 活动背景 对于创业团队和开发者来说,如何快速布局移动端.占领移动市场,时间和成本都是必须考虑的因素.如何用“模版”的方式快速创建 App框架以及内容页面,像堆乐高积木一样快速完成App开发,实现成本最小化.效率最大化?怎样拥有超强能力和精力对应用程序进行完善的测试?应用上线后又如何

如何在敏捷世界中实现高效的测试自动化

敏捷中的自动化是非常关键的. 想想在每个Sprint中添加和交付的许多特性.必须有一种方法来确保新添加的特性不会影响现有功能. 由于短跑持续时间较短,因此几乎不可能在每次产品在Sprint末端增加时执行整个套装.拥有一套自动测试服肯定会在这里扮演更重要的角色. 然而,引入自动化并使其成熟肯定需要一段时间.从长远来看,在规划和设计自动化活动方面进行初步投资肯定会有回报. 在敏捷中自动化什么?每当我们计划在我们的项目中引入自动化时,我们中的大多数人都会立即投票选择"烟雾测试服"或"

构建高效测试团队11层武学心法

     测试是一门武学,流程是武技.工具是武器,思维是秘诀.有简单的如花拳秀腿,也有深奥的九阴真经.九阳真经. 测试好比玩魔兽世界,知己知彼,方能百战不殆. 测试好比玩CS,玩得好可以一枪爆头(轻松找出系统缺陷),玩得不好,上线后被客户骂得晕头转向. 所以我们要在打好拳脚的基础上用各种测试技能武装自己,然后再根据自己对测试质量的了解去不断挖掘自己的潜力(作为测试管理者就要不断发现并挖掘团队成员的潜力,使之快速成长),全方位提升各项测试技能,例如,怎么了解当下系统业务知识.怎么了解当前系统需求.

构建高效测试团队11条法则

       测试是一门武学,流程是武技.工具是武器,思维是秘诀.有简单的如花拳秀腿,也有深奥的九阴真经.九阳真经. 测试好比玩魔兽世界,知己知彼,方能百战不殆. 测试好比玩CS,玩得好可以一枪爆头(轻松找出系统缺陷),玩得不好,上线后被客户骂得晕头转向. 所以我们要在打好拳脚的基础上用各种测试技能武装自己,然后再根据自己对测试质量的了解去不断挖掘自己的潜力(作为测试管理者就要不断发现并挖掘团队成员的潜力,使之快速成长),全方位提升各项测试技能,例如,怎么了解当下系统业务知识.怎么了解当前系统需

正则表达式简介及应用

 每次一遇到过滤字符串之类的事情,就傻了....正则很高效,故此做个记录. 除非您以前使用过正则表达式,否则您可能不熟悉此术语.但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念. 示例 例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件.通配符匹配文件名中的单个字符,而 * 通配符匹配零个或多个字符.像 data?.dat 这样的模式将查找下列文件: data1.dat data2.dat datax.dat dataN.dat 使用 * 字符代替 ? 字符扩大了找到的文件的

《精通正则表达式》

许多种工具都支持正则表达式(文本编辑器.文字处理软件.系统工具.数据库引擎等), 不过,要想充分挖掘正则表达式的能力,还是应当将它作为编程语言的一部分.例如Java, JScript,Visual Basic,VBScript,JavaScript,ECMAScript,C,C++,C#,elisp,Perl,Python, Tcl,Ruby,PHP,sed和awk. 正则表达式regular expression是强大,便捷,高效的文本处理工具.正则表达式本身, 加上如同一门袖珍编程语言的通用

正则表达式和decimal format的实际项目运用

最近review测试框架底层代码,一是看看有哪些可以重构的,以便减少冗余增加重用,二是优化一下代码结构增强代码的健壮性. 其中有一个地方印象比较深刻,特记录分享如下: 背景:在电商场景中,价格是特别重要而且敏感的信息,对价格的读取和验证是测试的重点之一. 但是有时候价格信息被包裹在一堆信息之中,如何准确而快速的获取价格则是作为一个自动化测试开发人员必须要考虑的问题. 下面我们举例说明,并提供相应的代码. 场景:商品价格包含在一个字符串中,其中包括字母和字符,比如:此商品的价格为'3.2'元. 目

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

正则表达式30分钟入门教程

目录 跳过目录 本文目标 如何使用本教程 正则表达式到底是什么东西? 入门 测试正则表达式 元字符 字符转义 重复 字符类 分枝条件 反义 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 网上的资源及本文参考文献 更新纪录 本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它. 如何使用本教程 最重要的是--请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内