junit3与junit4的区别

junit3与junit4的区别
junit3与junit4的区别

JUnit 4的新特征

一、引言

在本文开始,我将假定,你已经了解由Kent Beck和Erich Gamma发明的这个Java单元测试框架并因此而略过必要的简介。所以,我将集中分析从JUnit 3.8到最新版本JUnit 4的迁移过程以及其在IDE和Ant中的集成。

JUnit 4是一种与其之前的版本完全不同的API,它根据Java 5.0中的新特征(注解,静态导入等)构建而成。如你所见,JUnit 4更简单、更丰富和更易于使用,而且它引入了更为灵活的初始化和清理工作,还有限时的和参数化测试用例。

代码实例最能说明问题。因此,在本文中,我将使用一个例子来展示不同的测试用例:一个计算器。该示例计算器很简单,效率并不高,甚至还有一些错误;它仅仅操作整数,并且把结果存储在一个静态变量中。Substract方法并不返回一个有效的结果,而且也没有实现乘法运算,而且看上去在 squareRoot方法中还存在一个错误:无限循环。这些错误将帮助说明使用JUnit 4进行测试的有效性。你可以打开和关闭这个计算器,而且你可以清除这些结果。下面是其实现代码:

二、迁移一个测试类

现在,我将把一个已经使用JUnit 3.8编写成的简单的测试类迁移到JUnit 4。这个类有一些缺陷:它没有测试所有的业务方法,而且看上去在testDivide方法中还存在一个错误(8/2不等于5)。因为还没有实现乘法运算功能,所以对其测试将被忽略。

下面,我们把两个版本的框架之间的差别以粗体显示出现于表格1中。

表格1.分别以JUnit 3.8和JUnit 4实现的CaculatorTest。

JUnit 3.8

JUnit 4

#p#

三、包

首先,你可以看到,JUnit 4使用org.junit.*包而JUnit 3.8使用的是

junit.Framework.*。当然,为了向后兼容性起见,JUnit 4jar文件发行中加入了这两种包。

四、继承

在中,测试类不必再扩展junit.framework.TestCase;事实上,它们不必须扩展任何内容。但是,JUnit 4中使用的是注解。为了以一个测试用例方式执行,一个JUnit 4类中至少需要一个@Test注解。例如,如果你仅使用@Before和

@After注解而没有至少提供一个@Test方法来编写一个类,那么,当你试图执行它时将得到一个错误:

https://www.360docs.net/doc/d21778380.html,ng.Exception: No runnable methods.

五、断言(Assert)方法

因为在JUnit 4中一个测试类并不继承自TestCase(在JUnit 3.8中,这个类中定义了assertEquals()方法),所以你必须使用前缀语法(举例来说,

Assert.assertEquals())或者(由于JDK5.0)静态地导入Assert类。这样以来,你就可以完全象以前一样使用assertEquals方法(举例来说,assertEquals())。

另外,在JUnit 4中,还引入了两个新的断言方法,它们专门用于数组对象的比较。如果两个数组包含的元素都相等,那么这两个数组就是相等的。

由于JDK 5.0的自动装箱机制的出现,原先的12个assertEquals方法全部去掉了。例如,原先JUnit 3.8中的assertEquals(long,long)方法在JUnit 4

中要使用assertEquals(Object,Object)。对于assertEquals(byte,byte)、assertEquals(int,int)等也是这样。这种改进将有助于避免反模式。

在JUnit 4中,新集成了一个assert关键字(见我们的例子中的divide()方法)。你可以象使用assertEquals方法一样来使用它,因为它们都抛出相同的异常(https://www.360docs.net/doc/d21778380.html,ng.AssertionError)。JUnit 3.8的assertEquals将抛出一个

junit.framework.AssertionFailedError。注意,当使用assert时,你必须指定Java的"-ea"参数;否则,断言将被忽略。

六、预设环境(Fixture)

Fixture是在测试期间初始化和释放任何普通对象的方法。在JUnit 3.8中,你要使用setUp()来实现运行每一个测试前的初始化工作,然后使用tearDown()

来进行每个测试后的清理。这两个方法在 TestCase类中都得到重载,因此都被唯一定义。注意,我在这个Setup方法使用的是Java5.0内置的@Override注解-这个注解指示该方法声明要重载在超类中的方法声明。在JUnit 4中,则代之使用的是@Before和@After注解;而且,可以以任何命名(在我们的例子中是clearCalculator())来调用这些方法。在本文后面,我将更多地解释这些注解。

七、测试

JUnit 3.8通过分析它的签名来识别一个测试方法:方法名必须以“test”为前缀,它必须返回void,而且它必须没有任何参数(举例来说,publicvoidtestDivide())。一个不遵循这个命名约定的测试方法将被框架简单地忽略,而且不抛出任何异常(指示发生了一个错误)。

JUnit 4不使用与JUnit 3.8相同的约定。一个测试方法不必以'test'为前缀,但是要使用@Test注解。但是,正如在前一个框架中一样,一个测试方法也必须返回void并且是无参数的。在JUnit 4中,可以在运行时刻控制这个要求,并且不符合要求的话会抛出一个异常:

https://www.360docs.net/doc/d21778380.html,ng.Exception: Method xxx should have no parameters

https://www.360docs.net/doc/d21778380.html,ng.Exception: Method xxx should be void

@Test注解支持可选参数。它声明一个测试方法应该抛出一个异常。如果它不抛出或者如果它抛出一个与事先声明的不同的异常,那么该测试失败。在我们的例子中,一个整数被零除应该引发一个ArithmeticException异常。

八、忽略一个测试

记住,不能执行多个方法。然而,如果你不想让测试失败的话,你可以仅仅忽略它。那么,在JUnit 3.8中,我们是如何实现临时禁止一个测试的呢?方法是:通过注释掉它或者改变命名约定,这样测试运行机就无法找到它。在我的例子中,我使用了方法名 notReadyYetTestMultiply()。它没有以“test”开头,所以它不会被识别出来。现在的问题是,在成百上千的测试中间,你可能记不住重命名这个方法。

#p#

在JUnit 4中,为了忽略一个测试,你可以注释掉一个方法或者删除@Test注解(你不能再改变命名约定,否则将抛出一个异常)。然而,该问题将保留:该运行机将不报告这样一个测试。现在,你可以把@Ignore注解添加到@Test的前面或者后面。测试运行机将报告被忽略的测试的个数,以及运行的测试的数目和运行失败的测试数目。注意,@Ignore使用一个可选参数(一个String),如果你想记录为什么一个测试被忽略的话。

九、运行测试

在JUnit 3.8中,你可以选择使用若干运行机:文本型,AWT或者Swing。JUnit 4仅仅使用文本测试运行机。注意,JUnit 4不会显示任何绿色条来通知你测试成功了。如果你想看到任何类型的绿色的话,那么你可能需要使用JUnit扩展或一种集成了JUnit的IDE(例如 IDEA或者Eclipse)。

首先,我想使用老式但好用的junit.textui.TestRunner来运行该JUnit 3.8

测试类(考虑到使用assert关键字,我使用了-ea参数)。

TestDivide产生一个错误,因为断言确定了8/2不等于5。TestSubstract产生一个失败,因为10-2应该等于8,但是在这个实现中存在一个错误:它返回9。

现在,我使用新的org.junit.runner.JUnitCore运行机来运行这两个类。注意,它能执行JUnit 4和JUnit 3.8测试,甚至是这二者的结合。

第一个非常明显的区别是,JUnit版本号被显示于控制台中(4.1)。第二个区别是,JUnit 3.8区分失败和错误;JUnit 4则仅使用失败进行简化。一个新奇的地方是,字母“I”,它显示一个测试被忽略。

十、高级测试

现在,我将展示JUnit 4的一些高级特征。列表1(见下载源码)是一个新的测试类-AdvancedTest,它派生自AbstractParent。

(一) 高级预设环境

两个类都使用新的注解@BeforeClass和@AfterClass,还有@Before和@After。表格2展示了在这些注解之间的主要区别。

表格2.@BeforeClass/@AfterClass比较于@Before/@After。

如果你仅有一次需要分配和释放昂贵的资源,那么@BeforeClass和@AfterClass 可能很有用。在我们的例子中,AbstractParent使用这些在startTestSystem()和stopTestSystem()方法上的注解启动和停止整个测试系统。并且它使用

@Before和@After初始化和清除系统。子类AdvancedTest也混合使用这些注解。

在你的测试代码中使用System.out.println不是一种良好的实践习惯;但是,在这个用例中,它有助于理解这些注解被调用的顺序。当我运行AdvancedTest 时,我得到如下结果:

如你所见,@BeforeClass和@AfterClass仅被调用一次,而@Before和@Afterare 在每次测试中都要调用。

(二) 限时测试

在前面的例子中,我为squareRoot()方法编写了一个测试用例。记住,在这个方法中存在一个错误-能够导致它无限循环。如果没有结果的话,我想让这个测试在1秒钟后退出。这一功能正是timeout参数所要实现的。@Test注解的第二个可选参数(第一个参数是必需的)可以使一个测试失败,如果该测试花费比一个预先确定的时限(毫秒)还长的时间的话。当我运行该测试时,我得到如下的运行结果:

(三) 参数化测试

在列表1中,我测试了squareRoot(它是square方法而不是squareRoot方法)-通过创建若干测试方法 (square2,square4,square5),这些方法都完成相同的事情(通过被一些变量参数化实现)。其实,现在这里的复制/粘贴技术可以通过使用一个参数化测试用例加以优化(列表2)。

在列表2(见本文相应下载源码)中的测试用例使用了两个新的注解。当一个类被使用@RunWith注释时,JUnit将调用被参考的类来运行该测试而不是使用缺省的运行机。为了使用一个参数化测试用例,你需要使用运行机

org.junit.runners.Parameterized。为了确定使用哪个参数,该测试用例需要一个公共静态方法(在此是data(),但是名字似乎无关),该方法返回一个Collection,并且被使用@参数加以注解。你还需要一个使用这些参数的公共构造函数。当运行这个类,该输出是:

在此,共执行了7个测试,好象编写了7个单独的square方法。注意,在我们的测试中出现了一个失败,因为7的平方是49,而不是48。

(四) 测试集

为了在JUnit 3.8的一个测试集中运行若干测试类,你必须在你的类中添加一个suite()方法。而在JUnit 4中,你可以使用注解来代之。为了运行CalculatorTest和SquareTest,你需要使用@RunWith和@Suite注解编写一个空类。

在此,@RunWith注解告诉JUnit它使用org.junit.runner.Suite。这个运行机允许你手工地构建一个包含测试(可能来自许多类)的测试集。这些类的名称都被定义在@Suite.SuiteClass中。当你运行这个类时,它将运行CalculatorTest和 SquareTest。其输出是:

(五) 测试运行机

在JUnit 4中,广泛地使用测试运行机。如果没有指定@RunWith,那么你的类仍然会使用一个默认运行机 (org.junit.internal.runners.TestClassRunner)执行。注意,最初的Calculator类中并没有显式地声明一个测试运行机;因此,它使用的是默认运行机。一个包含一个带有@Test的方法的类都隐含地拥有一个@RunWith。事实上,你可以把下列代码添加到Calculator类上,而且其输出结果会完全一样。

在@Parameterized和@Suite的情况下,我需要一个特定的运行机来执行我的测试用例。这就是为什么我显式地注解了它们。

登录测试用例

功能测试: 1、输入正确的账号和密码,点击提交按钮,验证是否能正确登录(正常输入) 2、输入错误的账号或者密码,验证登录失败,并且提示相应的错误信息。(错误校验) 3、登录成功后能否跳转到正确的页面(低) 4、登录和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示) 5、账号和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤) 6、记住账号的功能 7、登录失败后,不能记录密码功能 8、账号和密码前后有空格处理 9、密码是否加密显示(星号圆点等) 10、牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使 用者),刷新或换一个按钮是否好用 11、登录页面中的注册、忘记密码,登出用另一账号登录等链接是否正确 12、输入密码的时候,大写键盘开启的时候要有提示信息。 13、什么都不输入,点击提交按钮,看提示信息(非空检查) 界面测试(UI Test) 1、布局是否合理,2个Testbox和一个按钮 2、Testbox和按钮的长度,高度是否复合要求 3、界面的设计风格是否与UI的设计风格统一 4、界面中的文字简洁易懂,没有错别字 性能测试(Performance Test) 1、打开登录页面,需要几秒 2、输入正确的账号和密码后,登录成功跳转到新页面,不超过5秒 安全性测试(Security Test) 1、登录成功后生成的Cookie是否有HttpOnly(降低脚本盗取风险) 2、账号和密码是否通过加密的方式,发送给Web服务器 3、账号和密码的验证,应该是用服务端验证,而不是单单是在客户端用javaScript验证 4、账号和密码的输入框,应该屏蔽SQL注入攻击 5、账号和密码的输入框,应该禁止输入脚本(防止XSS攻击) 6、错误登录的次数限制(防止暴力破解) 7、考虑是否支持多用户在同一台机器上登录; 8、考虑一用户在多台机器上登录 可用性测试(Usability Test) 1、是否可以全用键盘操作,是否有快捷键 2、输入账号,密码后按回车,是否可以登录 3、输入框是否可以以Tab键切换 兼容性测试(Compatibility Test) 1、主流的浏览器下能否显示功能正常(IE6~11,FireFox,Chrome,Safari等)

注册及登录功能的测试用例设计

注册、登陆测试用例 一、注册测试用例 测试编号:001 测试目标:验证系统是否对必填项为空时做出正确的响应 测试环境:windows XP操作系统和浏览器IE6.0 测试步骤: (1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户注册”界面什么都没有输入,直接单击【注册】按钮; 期望结果:注册失败,页面重新回到注册页面,并提示“请输入必填项”。 测试编号:002 测试目标:验证系统是否对用户名含义非法字符时做出正确的响应 测试环境:windows XP操作系统和浏览器IE6.0 测试步骤: (1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户名”文本框输入“A0001”; (3):在“密码”文本框输入:000; (4):在“确认密码”文本框输入:000; (5):单击【注册】按钮; 期望结果:注册失败,页面重新回到注册页面,并提示“用户名含义非法字符”。 测试编号:003 测试目标:验证系统是否对密码不一致时做出正确的响应 测试环境:windows XP操作系统和浏览器IE6.0 测试步骤: (1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户名”文本框输入“A0001”; (3):在“密码”文本框输入:000; (4):在“确认密码”文本框输入:000; (5):单击【注册】按钮; 期望结果:注册失败,页面重新回到注册页面,并提示“两次输入密码不一致”。 测试编号:004 测试目标:验证系统是否对密码含有非法字符时做出正确的响应 测试环境:windows XP操作系统和浏览器IE6.0 测试步骤: (1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;

网页登录界面测试点

如何测试一个网页登录界面 对测试人员(尤其是web测试人员)来说,测试一个网页的登录界面常常是必不可少的测试任务。网页的登录界面测试要素少不了textbox和提交按钮,如何才能更全面的设计test case呢? 首先,你要了解用户的需求,比如这个登录界面应该是弹出窗口式的,还是直接在网页里面的?对用户名的长度、用户名的有效性(比如是不是只能是手机号、邮箱等)密码的强度(就是是不是必须多少位,大小写,特殊字符混搭)等都有哪些要求?还有比如用户对界面的美观是不是有特殊的要求?(即是否要进行UI测试)。剩下的就是设计用例了,等价类,边界值等等。 千万要记住一点,任何测试,不管测什么都是从了解需求开始的。 一个网页的登录界面的测试大致可以从以下几个方面考虑: 功能测试(Function test) 0. 什么都不输入,点击提交按钮,看提示信息。 1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。 2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。 3.登录成功后能否能否跳转到正确的页面 4.用户名和密码,如果太短或者太长,应该怎么处理 5.用户名和密码中有特殊字符(比如空格),和其他非英文的情况 6.记住用户名的功能 7.登录失败后,不能记录密码的功能 8.用户名和密码前后有空格的处理 9.密码是否加密显示(星号圆点等) 10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用 11.登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正确 12.输入密码的时候,大写键盘开启的时候要有提示信息。 界面测试(UI Test) 1.布局是否合理,2个testbox 和一个按钮是否对齐 2.testbox和按钮的长度,高度是否复合要求 3. 界面的设计风格是否与UI的设计风格统一 4. 界面中的文字简洁易懂,没有错别字。 性能测试(performance test) 1.打开登录页面,需要几秒

软件界面测试方法

一、引言 预防胜于纠错。一个界面不规范的软件,很难让用户相信其内部代码的条理性、精致、健壮和高效。伴随着我们软件项目的持续增多以及新团队成员的不断加入,软件的界面缺陷在系统测试阶段也表现得日益突出,因此有必要有针对性地通过对这些问题汇总和归纳,不断地明确软件界面的测试要求,使今后项目的界面质量问题从根本上得到重视和改观。 二、界面标准 2.1有效性检查方面: ?数据输入验证正确;输入数据宽度超出设定,是否给出提示; ?数值型、日期型、字符型及‘-’、‘|’等特殊符号的检查; ?数值字段(如重量、件数、体积)在非特殊情况下不允许可输入“0”及“负数”; ?日期的控制,如:结束日期不能早于开始时间、班次内的作业时间不能超出班次时间等; ?具有输入的合法性验证机制,对于超常规和破坏性的录入,如输入的非有效性、超长、超边界、输入与字段类型不符等,应有提示并拒绝接受; ?身份证号/邮编/Email地址应作用正则表达式进行验证;【B/S】 ?下拉列表过滤,对于有过滤要求的下拉列表,应按要求进行过滤。 2.2健壮性检查方面: ?鼠标在窗口任意部分的点击是否正常;数据输出正确; ?光标到不可输入、修改列时,是否可输入、修改数据; ?鼠标对界面上的任何对象进行拖拽、点击、选取以及进行随意、无规律操作后,不出现未控制的意外错误; ?对于超常规、破坏性和无序操作的录入可以安全控制,不出现意外的、非正常终止

的错误(如:插入重复记录、删除代码表等); ?不出现因网络连接中断后系统崩溃情况(提供自动连接或手动连接功能)2.3一般性美观布局检查方面: ?窗口标题是否正确; ?窗口的位置和大小是否合理(居中); ?窗口中的控件布局是否合理,排列是否整齐; ?当超出一屏时,是否有垂直、水平滚动条(滚动条应位于数据块的右侧和底部); ?一个屏幕有多个块时,每块的左上角是否有红色块标题;【或按照开发规范】 ?字段标签的对齐方式是否正确(两端对齐);【或按照开发规范】 ?是否有初始值和默认值,初始值和默认值是否合理;【或按照开发规范】 ?上页与下页的显示是否与实际一致; ?代码与代码名称是否相符(内容正确); ?按钮的名称是否正确、全面,如上页、下行等; ?按钮的快捷键定义是否统一; ?按钮功能是否有效;按钮的提示与功能是否贴切、规范、概括性强; ?屏幕上数据显示的对齐方式是否满足以下原则:字符列左对齐,数值列右对齐,日期型的应设置格式掩码。 ?查询结果多于一页时,是否显示页号,上页按钮在当前页为第一页时,下页按钮在当前页为最后一页时是否变灰; ?查询结果是否可以修改; ?单记录块中非空字段名是否为红色; ?一个字段数据录入完毕跳到下个字段后,该字段数据显示的对齐方式是否自动满足以下原则:字符列左对齐,数值列右对齐; ?备注等说明信息较长的字段,双击是否可以弹出编辑框; ?在执行完其他功能后是否返回默认焦点; ?所有的下拉选择数据窗口、下拉列表是否确实可用(是否既可输入编号,又可输入名称);

WEB界面测试用例

Web界面测试小结[1] 我是从事web测试的,特别是电子商务网站,现在大部分客户对界面的要求非常高,所以对于测试人员来讲,也必须特别注意界面的一些东西。从前几个项目来看,个人认为界面测试的测试点以及应该注意的问题: 1:界面的线条是否一致,每个界面中线条是否对齐,是否一致。(静态页面没有确认的情况下) 2:整个系统的界面是否保持一致 3:界面中是否存在错别字 4:界面所有的按钮样式是否一致 5:每个界面是否同原静态页面设计一致(静态页面确认的情况下) 6:操作是否友好 7:界面所有的按钮、下拉框是否有响应 8:界面所有的链接是否正常 9:界面所有的输入框是否都进行校验(例如:搜索框、字段输入框) 10:界面所有的列表页标题字是否会折行,标题字是否统一居中等,当然也可以居左,这需要同客户沟通(折行的话影响美观) 11:界面所有的展示图片是否样式一致 12:浏览器的兼容性问题,检查页面在不同浏览器下是否会发生异常 13:每个页面的提示字体的颜色、格式是否统一准确 14:界面中所有字段后面是否都存在冒号,有冒号,查看是否冒号为统一的中文冒号还是英文冒号。 15:界面中的提示说明叙述是否太啰嗦,有时候需要能简化尽量简化,并且字体显示格式一致,颜色统一。 16:在web网站,一般经常是后台控制前台的显示,因此在对后台进行数据添加时,查看前台是否有变化,并且查看界面的数据是否溢出框外。 当然,我们在进行界面测试时,必须明确UI测试的目的,它是确保用户界面通过测试对象的功能来为用户提供相应的访问或浏览功能。

确保用户界面符合公司和行业的标准。 通过用户界面测试来核实用户与软件的交互,UI测试的目标在于确保用户界面向用户提供了适当的访问和浏览对象功能的操作,除此之外,UI测试还却表UI功能内部的对象符号预期的要求,并遵循公司和行业的标准。 接下来,具体的分析一下界面测试的依据从哪些方面着手。 测试目标: 1:窗口与窗口之间、字段与字段之间的浏览,以及各种访问方法(tab键、鼠标移动和快捷键)的使用 2:窗口的对象和特征(例如:菜单、大小、位置、状态和中心)都符号标准 测试方法:为每个窗口创建或修改测试,以核实各个应用程序窗口和对象都可正确的进行浏览,并处于正常的对象状态。 我们在实际工作当中,针对web应用程序,也就是经常所说的B/S系统,可以从如下方面来进行用户界面测试: 1:导航测试 导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等; 不同的链接页面之间,通过考虑下列问题,可以决定一个web应用系统是否易于导航;导航是否直观?web系统的主要部分是否可通过主页存取?web系统是否需要站点地图、搜索引擎或其他的导航帮助 当然,这些同美工以及客户需求有关。我们是根据已经确认的页面进行测试即可。 2:图形测试 图形包括图片、动画、边框、颜色、字体、背景、按钮等。 (1)要确保图形有明确的用途,图片或动画不要胡乱的堆在一起,以免浪费传输时间,web应用系统的图片尺寸要尽量地小,并且要能清楚的说明某件事情。一般都链接到某个具体的页面 (2)验证所有页面字体的风格是否一致 (3)背景颜色与字体颜色和背景色相搭配 (4)图片的大小和质量,一般采用jpg或gif压缩,最好能使用图片的大小减小到30k

如何测试一个网页登陆界面

具体需求:有一个登陆页面,(假如上面有2个textbox, 一个提交按钮。请针对这个页面设计30个以上的test case.) 考察目的:面试者是否熟悉各种测试方法,是否有丰富的Web测试经验,是否了解Web开发,以及设计Test case的能力 这个题目还是相当有难度的,一般的人很难把这个题目回答好。 首先,你要了解用户的需求,比如这个登录界面应该是弹出窗口式的,还是直接在网页里面。对用户名的长度,和密码的强度(就是是不是必须多少位,大小写,特殊字符混搭)等。还有比如用户对界面的美观是不是有特殊的要求?(即是否要进行UI测试)。剩下的就是设计用例了,等价类,边界值等等。 请你记住一点,任何测试,不管测什么都是从了解需求开始的。 功能测试(Function test) 0. 什么都不输入,点击提交按钮,看提示信息。 1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。 2.输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。 3.登录成功后能否能否跳转到正确的页面 4.用户名和密码,如果太短或者太长,应该怎么处理 5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况 6.记住用户名的功能 7.登陆失败后,不能记录密码的功能 8.用户名和密码前后有空格的处理 9.密码是否加密显示(星号圆点等) 10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用 11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确 12.输入密码的时候,大写键盘开启的时候要有提示信息。 界面测试(UI Test) 1.布局是否合理,2个testbox 和一个按钮是否对齐 2.testbox和按钮的长度,高度是否复合要求 3. 界面的设计风格是否与UI的设计风格统一 4. 界面中的文字简洁易懂,没有错别字。 性能测试(performance test) 1.打开登录页面,需要几秒 2.输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒 安全性测试(Security test) 1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取) 2.用户名和密码是否通过加密的方式,发送给Web服务器 3.用户名和密码的验证,应该是用服务器端验证,而不能单单是在客户端用javascript验证 4.用户名和密码的输入框,应该屏蔽SQL注入攻击 5.用户名和密码的的输入框,应该禁止输入脚本(防止XSS攻击) 6.错误登陆的次数限制(防止暴力破解) 7. 考虑是否支持多用户在同一机器上登录; 8. 考虑一用户在多台机器上登录 可用性测试(Usability Test)

用户登录_界面数据验证_测试用例_修改

项目/软 件 电力支持帮助系统版本 作者功能模块名用户登录 用例编 号 编制人 修改历 史 编制时间2010-11-02 功能特 性 界面数据验证 测试目 的 验证是否输入合法的信息,允许合法登陆,阻止非法登陆 预置条 件 系统存在用户名为user_01,密码为123456的记录 操作ID 操作描述测试数据期望结果实际结果 01 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="user_01", uPass="123456" 界面验证通过 02 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="null",uPa ss="123456" 提示用户“用户名不 能为空!” 03 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="user_01" uPass="null 提示用户“密码不能 为空!” 04 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="null",uPa ss="null" 提示用户“用户名和 密码不能为空!” 05 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="aaaa",uPa ss="123456" 提示用户“用户名格 式错误!用户名必须 为6-18位” 06 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="aaaaaaaa aaaaaaaaaaaaaaaaa a",uPass="123456" 提示用户“用户名格 式错误!用户名必须 为6-18位” 07 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="_user01", uPass="123456" 提示用户“用户名格 式错误!用户名首位 必须为字母” 08 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="qxb4594 28642@https://www.360docs.net/doc/d21778380.html,", uPass="123456" 提示用户“用户名格 式错误!用户名必须 由字母、数字、下划 线组成” 09 进入用户登录页面,输 入uName和uPass,点 击“登录”按钮uName="user_01", uPass=" ! " # $ % & ' 提示用户“密码格式 错误!密码必须为 ASCII字符组成”

登录功能通用测试用例

登录功能通用测试用例 具体需求: 有一个登录页面,有一个账号和一个密码输入框, 一个提交按钮。请针对这个页面设计Test Case。 此题的考察目的: 1、了解需求(测什么都是从了解需求开始); 2、是否有设计Test Case的能力 3、是否熟悉各种测试方法; 4、是否有丰富的Web测试经验; 5、是否了解Web开发; 了解需求: 测试需求分析过程,可以从质量要求出发,来展开测试需求分析,如从功能、性能、安全性、兼容性等各个质量要求出发,不断细化其内容,挖掘其对应的测试需求,覆盖质量要求。也可以从开发需求(如产品功能特性点、敏捷开发的用户故事)出发,针对每一条开发需求形成已分解的测试项,结合质量要求,这些测试项再扩展为测试任务,这些测试任务包括了具体的功能性测试任务和非功能性测试任务。在整理测试需求时,需要分类、细化、合并并按照优先级进行排序,形成测试需求列表。 1、登录界面应该是弹出窗口式的,还是直接在网页里面;

2、账号长度和密码的强度(比如需要多少位、大小写敏感、特殊字符混搭等); 3、界面美观是否有特殊要求?(即是否要进行UI测试); 4、···· 用例设计: 测试需求分析完成后,开始用例设计,主要可以从以下几个方面考虑:功能测试(Function Test) 1、输入正确的账号和密码,点击提交按钮,验证是否能正确登录。(正常输入) 2、输入错误的账号或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验) 3、登录成功后能否跳转到正确的页面(低) 4、账号和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示) 5、账号和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤) 6、记住账号的功能 7、登录失败后,不能记录密码的功能 8、账号和密码前后有空格的处理 9、密码是否加密显示(星号圆点等)

网页测试-登录测试

网页测试-登录测试 第一次做网页测试,记录一下登录测试时,都需要哪些东西。 一、一些按钮的作用 1.登录按钮使用是否正确。 2.取消按钮使用是否正确。 3.如果有重置按钮,看使用是否正确。 4.记住密码使用是否正确。 5.TAB键的使用是否正确。 6.上下左右键是否正确 7.Enter键的使用是否正确。 8.界面如果支持ESC键,看其是否正常工作 二、布局美感: 界面的布局是否符合人们的审美标准,以及输入入框,按钮这些是否都合理。 三、输入框的功能 1.输入合法的用户名和密码,可以成功登录。 2.输入合法的用户名和不合法的密码,不可以进入,并给出提示信息。 3.输入合法的用户名和小写的密码(密码中区分大小写),不可以进入,并给出提示信息。 4.输入合法的用户名和密码前后有空格,不可以进入,并给出提示信息。 5.输入不合法的用户名和合法的密码,不可以进入,并给出提示信息。 6.输入用户名中有前后空格和合法的密码,不可以进入,并给出提示信息。 7.输入小写的用户名(用户名不区分大小写)和合法的密码,不可以进入,并给出提示信息。 8.输入不合法的用户名和不合法的密码,不可以进入,并给出提示信息。 9.输入用户名和密码,点击【置空】,清空输入数据。 10.输入正确的用户名和密码,勾选记录密码,下次登录时不用输入密码,直接登录。 11.修改密码后,再登录时,用记住的那个密码登录时,不可以进入,并给出提示信息。 12.输入正确的用户名和密码,按回车键后,看是否可以登录。 13.各个输入框和按钮间是否支持TAB键。

注:不合法的用户名和密码包括:前后有空格、大小写、数据库中不存在的用户名和 密码、用户名和密码不匹配、长度限制、特殊符号、系统的保留字、标签符号、类型限制等 四、界面的链接: 对于界面有链接的界面,要测试界面上所有的链接都正确或者给出合理的提示。 五、兼容性测试: 1.操作系统 2.浏览器 3.分辨率 六、安全性测试 1.不登录,浏览器中直接输入登录后的地址,看是否可以直接进入。 2.密码安全性。 七、性能测试 页面反映时间不超过5S。 八、其他 1. 输入框是否支持复制、粘贴和移动。 2.密码框显示是不是加密显示。 3.错误登录的次数是否有限制。

登录界面测试

登陆界面测试用例软件测试 在网上找了篇文章,分享下,希望对大家有帮助。 快捷键的使用是否正常: 1. TAB 键的使用是否正确 2.上下左右键是否正确 3.界面如果支持 ESC键看是否正常的工作 3.ENTER 键的使用是否正确切换时是否正常。 布局美感 界面的布局是否符合人的审美的标准 具体因人而依 输入框的功能: 输入合法的用户名和密码可以成功进入 输入合法的用户名和不合法密码不可以进入,并给出合理的提示 输入不合法的用户名和正确密码不可以进入,并给出合理的提示 输入不合法的用户名和不正确的密码不可以进入,并给出合理的提示 不合法的用户名有:不正确的用户名,,使用了字符大于用户名的限制 正常用户名不允许的特殊字符空的用户名,系统(操作系统和应用系统)的保留字符不合法的密码有:空密码(除有特殊规定的),错误的密码,字符大于密码的限制

正常密码不允许的特殊字符,系统(操作系统和应用系统)的保留字符 界面的链接: 对于界面有链接的界面,要测试界面上的所有的链接都正常或者给出合理的提示 补充 输入框是否支持复制和黏贴和移动 密码框显示的不要是具体的字符,要是一些密码的字符 验证用户名前有空格是否可以进入,一般情况可以。 验证用户名是否区分大小写。(有的软件是区分大小写的) 验证必填项为空,是否允许进入。 验证登录的次数是否有限制。从安全角度考虑,有些安全级别高的软件会考虑这方面的限制。 功能测试工作的一点总结软件测试 一直在做功能测试工作,负责过三四个不大不小的项目的功能测试工作,却很少静下心来总结工作中的得失。 很多不了解测试的人,认为功能测试不过就是拿鼠标点来点去,没有什么技术含量,随便招个应届毕业生就能干的工作。我也曾经认为功能测试没什么前途,现在看来觉得自己太浮躁了。功能测试的门槛可能比较低,做测试工作的人大多都是从功能测试开始,但要做好功能测试却不容易,需要学习的知识还很多,比如操作系统、数据库、网络。下面主要结合

经典面试题-如何测试一个WEB登陆框

一.功能测试(Function test) 0.什么都不输入,点击提交按钮,看提示信息。 1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。 2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。 3. 登录成功后能否能否跳转到正确的页面 4.用户名和密码,如果太短或者太长,应该怎么处理 5.用户名和密码中有特殊字符(比如空格),和其他非英文的情况 6.记住用户名的功能 7.登录失败后,不能记录密码的功能 8.用户名和密码前后有空格的处理 9.密码是否加密显示(星号圆点等) 10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用 11.登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正 确 12.输入密码的时候,大写键盘开启的时候要有提示信息。 二.界面测试(UI Test) 1.布局是否合理,2个testbox 和一个按钮是否对齐 2.testbox和按钮的长度,高度是否复合要求 3.界面的设计风格是否与UI的设计风格统一 4.界面中的文字简洁易懂,没有错别字。 三.性能测试(performance test) 1.打开登录页面,需要几秒 2.输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒 四.安全性测试(Security test) 1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取) 2.用户名和密码是否通过加密的方式,发送给Web服务器 3.用户名和密码的验证,应该是用服务器端验证,而不能单单是在客户端用javascript验证 4.用户名和密码的输入框,应该屏蔽SQL 注入攻击 5.用户名和密码的的输入框,应该禁止输入脚本(防止XSS攻击) 6.错误登录的次数限制(防止暴力破解) 7.考虑是否支持多用户在同一机器上登录; 8.考虑一用户在多台机器上登录 五.可用性测试(Usability Test) 1. 是否可以全用键盘操作,是否有快捷键 2. 正确输入用户名,密码后按回车键,是否可以登录 3. 输入框能否可以用Tab键切换

电子商务网站--界面测试的测试点

电子商务网站--界面测试的测试点 界面是软件,网站与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度还远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具有艺术美的天赋而遭拒绝。 目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。 1:易用性: 按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用 户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。 易用性细则: 1):完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。 2):完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。 3):按功能将界面划分区域块,用Frame框括起来,并要有功能说明或标题。 4):界面要支持键盘自动浏览按钮功能,即按Tab键、回車鍵的自动切换功能。 5):界面上首先要输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。 6):同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。 7):分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab 8):默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。 9):可寫控制項檢測到非法輸入後應給出說明並能自動獲得焦點。 10):Tab键的顺序与控件排列顺序要一致,目前流行总体从上到下,同时行间从左到右的方式。 11):核取方塊和選項框按選擇幾率的高底而先後排列。 12):核取方塊和選項框要有默認選項,並支援Tab選擇。 13):選項數相同時多用選項框而不用下拉清單框。 14):界面空间较小时使用下拉框而不用选项框。 15):选项数較少时使用选项框,相反使用下拉列表框。 16):专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词语。

登录测试用例

登录测试用例 用例设计: 一。界面测试测试用例用例目的:该用例用来测试在登录界面用户能否正常登录; 若出现错误的信息系统将给出正确的示信息; 前置条件:存在正确的用户名和密码; 登录页面正常装载; 用例设计: 一。界面测试 界面正常装载后,检视页面是否符合规范 1.页面title是否正确; 2.页面的默认焦点是否控制在用户名输入框中; 3.TAB键能否控制; 4.未登录状态下,页面的其他按钮(非登陆/取消按钮)不可选或选择无效 5. 取消按键不可用; 二。登录测试 输入正确的用户名和正确的密码 用户名:mm 密码:mm 鼠标点击登录正常登陆,转入对应的系统页面 用户名:mm 密码:mm 直接回车键(Enter)进行登陆正常登陆,转入对应的系统页面 输入正确的用户名和正确的密码,但未区分大小写 用户名:Mm 密码:Mm 区分大小写,显示出错信息,不能正常登陆

输入正确的用户名和错误的密码 用户名:mm 密码:dw54f 出现密码错误的提示并清空输入框 用户名:mm 密码:$§£(即在密码中输入特殊符号) 提示密码中存在特殊符号或者在输入特殊符号时系统自动消除/不能输入输入错误的用户名和正确的密码 用户名:jiew11 密码:mm 出现用户名不存在或错误的提示并清空输入框 用户名:jie$§(在用户名中输入特殊符号) 密码:mm 提示用户名中存在特殊符号或者在输入特殊符号时系统自动消除/不能输入输入错误的用户名和错误的密码 用户名:jiew11 密码:dw54f 出现用户名不存在或密码错误的提示并清空输入框 不输入用户名和密码/或均为空格,直接点击登录 用户名: 密码: 出现"请输入用户名、密码"的提示框 只输入用户名,密码为空/或为空格 用户名:mm 密码: 出现"请输入密码"提示框

用户界面设计实验-系统界面设计实例

用户界面设计实例 设计的系统名称:个人日常事务管理系统 针对用户群是:广大电脑用户(有一定的电脑操作基础),officer 和广大学生。 一、系统需求分析(The system requirement ) 针对officer 和学生们的需求分析,从我自身分析:对于我日常的安排我平时会用专门的记事本记录和更改,对于日常各种事务可能会冲突或不变携带,现在针对这些需求,设计出符合此人群适合的一款系统来帮助人们更好的安排日程和完成工作。此系统是要面向个人的,同企业系统相比,此软件要力求操作简单,效率要高效,由于针对的人群是officer 和大学生,这些人都是年轻的一代人,对计算机和系统都比较了解,而且倾向于华丽的界面,但是该系统同时要解决高效,较少的操作较快地达到用户的需求。由于工作原因或计算机系统崩溃等用户在本机保存的日程安排等数据可能丢失的情况,同时,有些情况下可能无法连接网络,此系统应支持 1.、本机数据保存。2、可以上传到服务器数据库,用户注册可获得免费的空间,用户注册后,只要登录就能在随时随地获得自己的日程安排等信息。 二、系统功能定义(The function definitions ) 个人日程管理系统主要是提供个人时间日程安排系统软件,它具有相当方便的操作接口,让用户能够对所安排的行程一目了然,除去主要功能还附带了更多功能和小工具,安排的行程可以生成通行路线,并会根据天气预报提醒当天安排是否影响。而且用户可以注册,注册后用户有更多的服务,安排的日程数据可以保存到本地同时可以更新到服务器,这样用户就算到外地也可以随时查看自己的日程安排,同时其他功能有:时钟提醒、通讯录、效率评估等。 实现功能(主界面导航): 个人日常事 务管理系统 用户注册登录 主要功能实现 软件设置、帮助 用户登录界面 主界面(导航) 用户注册登录 子界面(功能)

登录界面的测试用例

1. TAB 键的使用是否正确 2.上下左右键是否正确 3.界面如果支持 ESC键看是否正常的工作 3.ENTER 键的使用是否正确切换时是否正常。 布局美感 界面的布局是否符合人的审美的标准 具体因人而依,有些需要提示的信息是否显眼(如:注册,找密码等……) 输入框的功能 输入合法的用户名和密码可以成功进入、 输入合法的用户名和不合法密码不可以进入,并给出合理的提示 输入不合法的用户名和正确密码不可以进入,并给出合理的提示 输入不合法的用户名和不正确的密码不可以进入,并给出合理的提示 不合法的用户名有:不正确的用户名,,使用了字符大于用户名的限制 正常用户名不允许的特殊字符空的用户名,系统(操作系统和应用系统)的保留字符 不合法的密码有:空密码(除有特殊规定的),错误的密码,字符大于密码的限制 正常密码不允许的特殊字符,系统(操作系统和应用系统)的保留字符 界面的链接: 对于界面有链接的界面,要测试界面上的所有的链接都正常或者给出合理的提示 输入框是否支持复制和黏贴和移动 密码框显示的不要是具体的字符,要是一些密码的字符 还有用户名和密码为空的时候不可以进入,并给出提示信息 验证用户名前有空格是否可以进入,一般情况可以。 验证用户名是否区分大小写。(有的软件是区分大小写的) 验证必填项为空,是否允许进入。 验证登录的次数是否有限制。从安全角度考虑,有些安全级别高的软件会考虑这方面的限制。输入不合法的用户名和正确密码不可以进入,并给出合理的提示 这个如果输入了不合法的用户名他会有正确的密码吗? 内容有不对的和不足的请大家多多的指出和补充! 初始页面显示 从用例入口进入 页面元素完整,显示与详细设计一致 用户名录入验证 输入已存在的用户 输入成功 用户名容错性验证 输入:aaaaabbbbbcccccdddddeeeee 输入到蓝色显示的字符时,系统拒绝输入 输入数据超过规定长度范围

测试点分析与与设计QQ登录界面

测试点分析与与设计(QQ登录界面) 1.账号 检查账号是否由[5,10]位数字组成 1.1等价类划分法 测试点检查账号是否全部由[5,10]位数字组成 合并后的等价类表 有效类: 5≤X≤10 无效类:X<5, X>10,非数字 1.2 边界值分析法 根据划分出的等价类,进行边界值分析: 分析得出待测边界值:4位、5位、7位、10位、11位---字符负数

2密码 检查密码是否由6-16个字符组成(不能是9位以下的纯数字,不能包含空格) 2.1 等价类划分法 密码:6位≤X≤16位 有效类:9位≤X≤16位纯数字,6位≤X≤16位字母、下划线、特殊符号 无效类:X<9位纯数字,X<6位字符,X>16字符,含空格,含中文 资料中: 有效的:长度在6-10位之间、类型是0-9自然数。 无效的:长度小于6 、长度大于10、负数、小数、英文字母、字符、特殊字符、中文、编程语言中的转义字符、空 把密码进行等价类划分: 有效的和无效的。有效的:6-16位,非空,非保留字,非功能键,非汉字。 无效的:空、空格、小于6位或大于16位、保留字、汉字、功能键 2.2边界值分析法

5个字符、6个字符、8个数字、9个数字、10个字符、16个字符、17个字符 3 账号和密码 3.1判定表驱动分析法 注:Y表示正确,N表示错误,X表示动作。 测试用例:用户名密码结果 123234123 3338838f 正确登录(密码用户句匹配) 123234123 4656566 重输密码 34536473 393939 重输密码 123a eettet344 重输用户名 345 空重输密码 3.2场景分析法 注:先检查密码是否为空,再检查账号是否存在

登陆框测试用例

site:https://www.360docs.net/doc/d21778380.html, 登录、注册功能的测试用例设计 一、注册测试用例 测试编号:001 测试目标:验证系统是否对必填项为空时做出正确的响应 测试环境:windows XP 操作系统和浏览器IE6.0 测试步骤:(1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户注册”界面什么都没有输入,直接单击【注册】按钮;用户名:密码:确认密码:邮箱地址:* * * * 注册期望结果:注册失败,页面重新回到注册页面,并提示“请输入必填项” 。 测试编号:002 测试目标:验证系统是否对用户名含义非法字符时做出正确的响应 测试环境:windows XP 操作系统和浏览器IE6.0 测试步骤:(1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户名”文本框输入“a0755*87”; (3):在“密码”文本框输入:1314;(4):在“确认密码”文本框输入:1314;(5):在“邮箱地址”文本框输入:790705390@https://www.360docs.net/doc/d21778380.html,;(6):单击【注册】按钮;期望结果:注册失败,页面重新回到注册页面,并提示“用户名含义非法字符” 。 测试编号:003 测试目标:验证系统是否对密码不一致时做出正确的响应 测试环境:windows XP 操作系统和浏览器IE6.0 测试步骤:(1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户名”文本框输入“a075587”; (3):在“密码”文本框输入:1314;(4):在“确认密码”文本框输入:1315;(5):在“邮箱地址”文本框输入:790705390@https://www.360docs.net/doc/d21778380.html,;(6):单击【注册】按钮;期望结果:注册失败,页面重新回到注册页面,并提示“两次输入密码不一致” 。 测试编号:004 测试目标:验证系统是否对密码含有非法字符时做出正确的响应 测试环境:windows XP 操作系统和浏览器IE6.0 测试步骤:(1):打开浏览器,在浏览器的地址栏中输入“用户注册”页面的URL,单击【转到】按钮;(2):在“用户名”文本框输入“a075587”; (3):在“密码”文本框输入:1314*24;(4):在“确认密码”文本框输入:1314*24;(5):在“邮箱地址”文本框输入:790705390@https://www.360docs.net/doc/d21778380.html,;(6):单击【注册】按钮;期望结果:注册失败,页面重新回到注册页面,并提示“密码含有非法字符” 。 测试编号:005 测试目标:验证系统是否对邮箱格式不正确时做出正确的响应

相关主题
相关文档
最新文档