如何设计测试用例
- 格式:doc
- 大小:32.00 KB
- 文档页数:3
五种软件测试用例设计方法软件测试用例设计是软件开发过程中的重要环节,它旨在验证软件系统是否符合预期的功能和性能要求。
在软件测试用例设计中,有许多方法可以帮助测试人员有效地设计和执行测试用例。
下面将介绍五种常用的软件测试用例设计方法。
1. 黑盒测试用例设计方法:这种方法主要关注软件系统的功能需求,而不考虑内部实现细节。
测试人员仅仅通过输入和输出来确定测试用例,不需要了解软件系统的内部结构。
例如,对于一个登录功能,可以设计测试用例来验证正确的用户名和密码是否能够成功登录。
2. 白盒测试用例设计方法:与黑盒测试相反,白盒测试用例设计方法关注软件系统的内部结构和代码逻辑。
测试人员需要深入了解软件系统的代码,通过设计测试用例来覆盖不同的代码路径和分支。
例如,通过设计测试用例来验证一个排序算法是否能够正确地排序输入的数据。
3. 边界值测试用例设计方法:这种方法主要关注软件系统的边界条件,因为很多错误往往发生在边界条件上。
测试人员需要确定各种边界情况,并设计测试用例来验证软件系统在这些边界情况下的行为。
例如,对于一个接受1到100之间整数输入的功能,可以设计测试用例来验证输入0、1、100、101等边界值。
4. 等价类测试用例设计方法:这种方法将输入值划分为不同的等价类,因为在每个等价类中的输入值具有相同的预期行为。
测试人员只需要选择一个代表性的输入值来设计测试用例,以覆盖每个等价类。
例如,对于一个计算平均成绩的功能,可以选择一个代表性的输入值,例如80、90、100来设计测试用例。
5. 错误推测测试用例设计方法:这种方法主要是基于测试人员的经验和直觉来设计测试用例,通过推测软件系统可能存在的错误来设计测试用例。
测试人员需要具备丰富的经验和对软件系统的深入理解,以确定可能的错误和设计相应的测试用例。
例如,测试人员可以推测软件系统在并发访问时可能存在的竞态条件,并设计测试用例来验证系统在并发情况下的正确性。
综上所述,软件测试用例设计方法有很多种,每种方法都有其特点和适用范围。
测试用例设计打造全面且高效的测试覆盖一、前言软件测试是确保软件质量的重要环节之一,而测试用例的设计与编写则是测试工作中的关键步骤。
本文将介绍如何打造全面且高效的测试覆盖,以提升测试效果。
二、测试用例设计原则1. 高覆盖率:测试用例应该尽可能地覆盖系统的各个功能和模块,以便发现潜在的问题和缺陷。
2. 高效性:测试用例应该是有效的,能够快速定位问题,减少测试过程中的冗余工作。
3. 可重复性:测试用例应该是可重复执行的,以便在软件变更后进行回归测试。
4. 可维护性:测试用例应该易于维护和更新,随着软件的演化和变更,测试用例也需要及时进行相应的修改。
三、测试用例设计方法1. 黑盒测试用例设计方法:- 等价类划分法:将输入域划分为等价类,选择代表性的测试数据进行测试,例如选择最小值、最大值、边界值以及典型值进行测试。
- 边界值分析法:针对输入域的边界值设计测试用例,以便更容易发现输入域边界处的错误。
- 课程表测试法:根据实际业务场景,设计各种可能的测试用例,覆盖系统的各个功能和异常情况。
- 因果图法:通过构建因果图,找出可能导致软件错误的因素,设计相应的测试用例进行测试。
2. 白盒测试用例设计方法:- 语句覆盖:设计测试用例,使得每一条程序语句至少被执行一次。
- 判定覆盖:设计测试用例,使得每个判定结果的取值至少覆盖一次真和一次假。
- 条件覆盖:设计测试用例,使得每个判定的各个条件都至少覆盖一次取值为真和取值为假的情况。
- 路径覆盖:设计测试用例,使得每个程序路径至少被执行一次。
四、测试用例设计实例以下是一个简单的示例,说明如何使用测试用例设计方法进行测试覆盖:假设有一个功能,要求输入一个整数,如果这个数是偶数,则输出"偶数",否则输出"奇数"。
1. 等价类划分法:- 输入为偶数的等价类:2, 4, 6, ...- 输入为奇数的等价类:1, 3, 5, ...- 特殊输入类:负数、零2. 边界值分析法:- 输入等于最小值:-∞- 输入等于最大值:+∞3. 课程表测试法:- 输入为正偶数- 输入为正奇数- 输入为负偶数- 输入为负奇数- 输入为零通过以上测试用例设计方法,可以设计出一系列的测试用例,确保对该功能进行全面且高效的测试覆盖。
测试用例的设计方法
《测试用例的设计方法》
一、定义
测试用例是指由测试者根据测试目标和测试需求,设计出的一系列的测试步骤和预期结果的集合,用来检查软件的功能和性能的一种文档或者测试案例的总称。
二、设计流程
1. 收集需求:通过观察、记录和分析,提取软件的功能和性能要求的具体内容;
2. 识别测试对象:根据软件功能和性能需求,识别出关键的测试对象;
3. 构建测试场景:结合测试对象,根据软件的具体要求,构建出符合测试要求的测试场景;
4. 确定测试步骤:根据每个测试场景,分析出其中所包含的重要测试步骤;
5. 编写用例:将上述测试步骤和预期结果整合到一起,并按照某种规范用文档的形式描述出来,就形成了一个测试用例;
6. 执行用例:按照用例中的步骤,对软件进行测试,并记录测试结果。
三、编写说明
1. 测试用例的编写应该清晰易懂、简洁、具体、可行;
2. 测试用例中的步骤应该表达清楚,要能够准确地描述测试者
所进行的操作;
3. 测试用例中的预期结果应该清楚明确,要能够准确地反映软件在测试者进行步骤操作后应该出现的结果;
4. 测试用例应该有明确的测试目的和依据,如果某个用例无法覆盖某个测试目标,可以考虑增加新的用例,或者调整原有的用例;
5. 测试用例应该与其它的用例相互补充,如果测试者发现某个用例不能够满足测试需求,应该及时修改或者重新设计新的用例。
测试工程师必备技能如何设计高效的测试用例测试用例是软件测试中至关重要的一环。
设计高效的测试用例可以有效提高测试覆盖率和发现潜在缺陷的能力。
本文将介绍测试工程师在设计测试用例时应该具备的一些必备技能和一些建议。
一、全面理解需求在设计测试用例之前,测试工程师必须要全面理解软件的需求。
只有通过深入地了解系统的功能和非功能需求,才能设计出全面覆盖的测试用例。
测试工程师可以通过需求文档、功能规格说明、用户故事等方式来获取系统需求信息。
二、正确选择测试方法测试用例设计需要根据不同的测试目的选择不同的测试方法。
常见的测试方法包括黑盒测试、白盒测试、灰盒测试等。
黑盒测试重点关注系统的功能和用户界面,白盒测试则关注系统的内部结构和代码逻辑,灰盒测试则结合了黑盒测试和白盒测试的特点。
三、考虑功能分解测试用例设计时可以根据系统的功能将其进行分解。
将系统的主要功能划分为子功能,然后设计相应的测试用例。
这样可以帮助测试工程师更加有针对性地进行测试,提高测试效率和覆盖率。
四、注重边界测试在设计测试用例时,测试工程师必须注重对系统边界情况的测试。
边界测试是指对系统极限情况的测试。
例如,输入边界测试、输出边界测试、性能边界测试等。
通过边界测试可以发现系统在极限情况下的特殊行为,提高系统的鲁棒性。
五、考虑异常情况在设计测试用例时,测试工程师还应该考虑到系统的异常情况。
例如,输入错误、异常输入、系统异常等。
通过设计针对异常情况的测试用例,可以测试系统在异常情况下的处理能力和稳定性。
六、遵循等价类划分等价类划分是一种常见的测试方法,也是测试用例设计中的重要技巧。
等价类划分将测试输入数据划分为若干等价类,然后选择一个代表性的值作为测试用例。
通过等价类划分可以有效地减少测试用例数量,同时覆盖到更广泛的测试场景。
七、利用辅助工具在测试用例设计过程中,测试工程师可以利用一些辅助工具提高效率。
例如,测试用例管理工具、缺陷管理工具、自动化测试工具等。
测试用例的设计技术有哪些内容测试用例的设计技术是软件测试中非常重要的一环,它直接影响到测试的覆盖率和测试效果。
在测试用例的设计过程中,我们需要考虑多种因素和技术,以确保测试用例的全面性和有效性。
下面将介绍一些常见的测试用例设计技术。
1. 等价类划分法等价类划分法是一种常用的测试用例设计技术,它将输入域划分为多个等价类,并从每个等价类中选取一个典型值作为测试用例。
这样可以有效地减少测试用例的数量,同时覆盖到不同的等价类。
2. 边界值分析法边界值分析法是一种基于输入域的测试用例设计技术,它主要关注输入域的边界值。
通过选取输入域的边界值作为测试用例,可以更好地发现输入域的异常情况。
3. 判定表方法判定表方法是一种基于决策表的测试用例设计技术,它将软件的决策规则表示为一个判定表,并根据判定表来生成测试用例。
这种方法可以有效地覆盖到不同的决策路径,提高测试的效果。
4. 状态转换法状态转换法是一种基于状态机的测试用例设计技术,它将软件系统的状态和状态之间的转换关系表示为一个状态转换图,并从图中选取测试用例。
这种方法可以覆盖到不同的状态和状态转换路径。
5. 错误推测法错误推测法是一种基于错误假设的测试用例设计技术,它假设软件系统中可能存在的错误,并据此设计测试用例。
这种方法可以帮助测试人员主动发现软件系统中的潜在问题。
6. 场景法场景法是一种基于用户场景的测试用例设计技术,它以用户的使用场景为基础,设计测试用例。
这种方法可以更好地模拟用户的实际使用情况,提高测试的真实性和有效性。
7. 成对测试法成对测试法是一种基于组合测试的测试用例设计技术,它将可能的输入值组合成不同的测试用例,并进行测试。
这种方法可以有效地发现输入值之间的交互问题。
8. 正交试验法正交试验法是一种基于正交表的测试用例设计技术,它根据测试目标和测试需求,选取合适的正交表,并从表中选取测试用例。
这种方法可以有效地减少测试用例的数量,同时覆盖到不同的测试需求。
测试用例的几种常用设计方法测试用例是软件测试中的重要组成部分,它们对于确保软件质量至关重要。
在设计测试用例时,可以采用多种不同方法。
下面将介绍几种常用的测试用例设计方法。
1.等价类划分法(Equivalent Partitioning)等价类划分法是一种基于输入数据的测试用例设计方法。
它将输入数据划分为若干等价类,每个等价类中的数据具有相同的功能和处理方式。
在设计测试用例时,只需要选择每个等价类中的一个或几个代表性的测试数据进行测试即可。
这种方法可以有效地减少测试用例的数量,同时保证测试覆盖面。
2. 边界值分析法(Boundary Value Analysis)边界值分析法是一种基于输入数据边界的测试用例设计方法。
它关注输入数据的边界条件,通常在输入数据的最小值、最大值和边界附近选择测试用例。
这是因为在边界处发生的错误往往比在其他地方发生的错误更容易被发现。
通过边界值分析法设计的测试用例可以提高测试效率和覆盖度。
3. 错误推测法(Error Guessing)错误推测法是一种基于经验和直觉的测试用例设计方法。
它假设测试人员能够猜测到软件中潜在的错误,并设计相应的测试用例来验证这些错误。
这种方法不依赖于任何特定的测试技术或规则,而是基于测试人员的经验和洞察力。
错误推测法可以应用于各种测试阶段,并且适用于不同类型的软件。
4. 决策表法(Decision Table)决策表法是一种基于规则和条件的测试用例设计方法。
它使用表格来表示系统的决策条件和相应的动作结果。
在设计测试用例时,可以根据表格中的各种条件组合来选择相应的测试用例。
决策表法对复杂的业务逻辑和条件约束非常有效,可以提高测试覆盖范围和准确性。
5. 状态转换法(State Transition)状态转换法是一种基于系统状态的测试用例设计方法。
它将系统的不同状态和状态之间的转换关系进行建模,并选择相应的测试用例来验证系统在不同状态下的行为。
状态转换法适用于具有明确状态转换关系的系统,例如有限状态机。
测试用例的设计步骤测试用例的设计是软件测试中的关键环节之一,它帮助确定一个软件系统是否按照预期运行。
测试用例必须详细而全面地覆盖系统的各个方面,以尽可能发现潜在的缺陷。
以下是测试用例设计的完整步骤。
1.理解需求:首先,测试团队需要全面理解被测试系统的需求文档。
他们应该清楚系统的预期功能和性能。
此外,他们还应该了解系统的约束、限制和用户预期。
2.划分功能:在理解需求的基础上,测试团队将系统的各个功能模块进行划分。
这将有助于组织测试用例,并确保每个模块都有相应的测试覆盖。
3.确定测试类型:测试团队需要确定系统中的不同类型的测试。
例如,功能测试、性能测试、安全性测试等。
这样他们可以专注于每种类型的测试用例的设计。
4.确定测试目标:为每个测试类型设置明确的测试目标。
例如,对于功能测试,测试目标可以是验证所有的功能是否按照预期工作。
对于性能测试,测试目标可以是评估系统的响应时间和负载能力。
5.设计测试用例:测试团队应该根据测试目标设计测试用例。
一个测试用例应该包括输入、操作和预期输出。
测试团队应该考虑到不同的测试场景和测试数据。
他们还可以根据等价类、边界值和错误猜测等测试技巧来设计测试用例。
6.优先测试用例:测试团队应该根据测试目标和风险评估为测试用例设定优先级。
这将帮助团队在测试过程中更有效地分配资源和注意力。
7.验证和评审:测试团队应该对设计的测试用例进行内部验证和评审。
他们可以使用模拟测试环境或自动化工具来执行测试用例,确保每个用例的正确性和完整性。
8.补充和修改:根据验证和评审的结果,测试团队应该及时补充和修改测试用例。
他们应该确保每个功能和场景都得到适当的测试覆盖。
此外,他们还可以根据系统变更和反馈来调整测试用例。
9.组织和管理:测试团队应该合理组织和管理测试用例。
他们可以使用测试用例管理工具来跟踪和记录测试用例的执行情况和结果。
这将有助于评估测试的进展和效果。
10.回顾和总结:测试团队应该在测试过程结束后进行回顾和总结。
如何设计可维护性强的测试用例测试用例是软件测试过程中非常重要的一环,合理设计和编写测试用例能够有效提高测试效率和测试覆盖率。
而测试用例的可维护性指的是能够方便地进行维护和更新,以适应软件的变化和演化。
本文将探讨如何设计可维护性强的测试用例。
一、定义清晰的测试目标在设计测试用例之前,首先需要明确测试的目标和范围。
清晰的测试目标有助于确定需要覆盖的功能和场景,避免测试用例的冗余和重复。
测试目标应该具体、明确,并与软件需求和用户期望相匹配。
二、分析需求和用户场景通过仔细分析软件需求和用户场景,可以帮助我们确定需要测试的关键功能和重要路径。
在设计测试用例时,应该优先考虑这些关键功能和路径,确保测试的全面性和有效性。
同时,根据不同的用户场景,设计相应的测试用例以覆盖各种使用情况。
三、采用模块化和可复用的设计为了提高测试用例的可维护性,可以采用模块化和可复用的设计思想。
将测试用例分解为独立的模块,每个模块负责测试一个特定的功能或场景。
这样可以提高测试用例的重用性,当软件发生变化时,只需要更新和修改相关的模块,而不需要重写整个测试用例。
四、使用有效的数据驱动方法在设计测试用例时,应该考虑使用数据驱动的方法。
通过将测试数据和测试逻辑分离,将测试数据存储在外部数据源中,可以方便地修改和更新测试数据,而不需要修改测试用例本身。
这样可以提高测试用例的可维护性和灵活性。
五、注重可读性和可理解性一个可维护的测试用例应该具有良好的可读性和可理解性。
使用清晰的命名规范,提供详细的注释,使得其他人能够快速理解测试用例的目的和步骤。
同时,测试用例的结构应该清晰有序,遵循一定的规范和编码风格。
六、定期回顾和更新测试用例测试用例的维护是一个持续的过程,定期回顾和更新测试用例是保持其可维护性的重要方式。
随着软件的演化和变化,旧的测试用例可能已经不适用或失效,需要根据最新的需求和变更进行相应的调整和更新。
总结:设计可维护性强的测试用例是一项挑战性的任务,需要我们在测试需求分析、模块化设计、数据驱动等方面下功夫。
如何编写可维护的测试用例测试用例是软件测试过程中至关重要的一部分。
编写可维护的测试用例对于测试团队来说是至关重要的。
好的测试用例能够提高测试效率、降低测试成本并增强软件质量。
下面将介绍一些编写可维护的测试用例的实践方法。
1. 确定测试目标和范围:在编写测试用例之前,我们首先需要明确测试的目标和范围。
确定测试的目标可以帮助我们集中注意力,确保我们编写的测试用例能够覆盖所有需要测试的功能和场景。
2. 使用清晰、简洁的语言:测试用例应该使用简洁明了的语言来描述测试的步骤和预期结果。
使用简单的句子和常用的词汇可以帮助读者快速理解和执行测试用例。
3. 避免冗余和重复的步骤:测试用例应该避免冗余和重复的步骤。
如果多个测试用例中有相同的测试步骤,应该考虑将这些步骤提取出来作为一个公共的测试步骤,然后在不同的测试用例中引用这个公共步骤。
这样做可以减少测试用例的维护工作,并提高测试用例的可读性和可维护性。
4. 使用简洁而具体的预期结果:测试用例的预期结果应该具体、明确。
避免使用模糊、含糊不清的预期结果。
例如,我们可以使用具体的数值或明确的文字描述来描述测试的预期结果。
5. 提供清晰的前置条件和测试数据:测试用例应该提供清晰的前置条件和测试数据。
在执行测试用例之前,需要确保测试环境的准备工作已经完成,并提供所需的测试数据。
6. 使用可读性强的命名规范:我们可以为测试用例使用具有可读性的命名规范,例如使用能够清晰地描述测试目标和范围的名字。
好的命名规范可以帮助读者快速理解测试用例的目的和功能。
7. 保持测试用例的更新:随着软件的不断迭代和演进,测试用例也需要不断地更新和调整。
保持测试用例的更新是非常重要的,这样可以确保测试用例始终与软件的最新版本保持一致,并覆盖新的功能和场景。
8. 使用合理的测试覆盖策略:我们在编写测试用例时需要考虑测试覆盖的策略。
在有限的时间和资源下,我们无法对所有的功能和场景进行全面的测试,因此需要根据软件的重要性和测试的风险来选择测试覆盖的策略。
测试用例设计方法有哪些测试用例设计方法有以下几种:1. 等价类划分法(Equivalence Partitioning):根据输入数据的特征,将输入数据集划分成若干个等价类,从每个等价类中选取一个代表作为测试用例。
这样可以有效地降低测试用例的数量,同时保证覆盖了不同输入数据的情况。
2. 边界值分析法(Boundary Value Analysis):在等价类中,选取边界值进行测试,因为通常边界值处更容易出现错误。
对于输入数据,选取它的最小值、最大值和边界值的前后一个值作为测试用例。
3. 错误推测法(Error Guessing):根据过去的经验和直觉,识别潜在的错误和缺陷,并设计测试用例来验证这些错误和缺陷。
这种方法主要依赖测试人员的经验和判断力。
4. 因果图法(Cause-Effect Graphing):根据系统或软件的功能和逻辑关系绘制因果图,然后从中选择特定的情况进行测试。
这种方法可以确保覆盖到所有可能的输入和条件组合。
5. 决策表测试法(Decision Table Testing):根据系统的规则和条件,建立一个决策表,表中包含各种可能的输入和对应的输出。
然后选择不同的条件组合进行测试,确保覆盖了所有的规则。
6. 认知测试方法(Cognitive Testing):根据用户使用软件的心理逻辑和思维方式,设计测试用例。
测试人员需要理解用户的需求和预期行为,从而设计出符合用户思维方式的测试用例。
7. 数据驱动测试方法(Data-Driven Testing):根据系统或软件的逻辑关系和各种输入数据,设计测试用例。
可以使用测试数据生成工具来生成测试用例,或者利用现有的数据进行测试。
8. 状态迁移法(State Transition Testing):适用于测试涉及状态转换的系统或软件。
根据系统的状态图或状态转换图,设计测试用例来覆盖不同的状态转换路径。
9. 随机测试方法(Random Testing):随机选择输入数据进行测试,以发现可能被疏忽的错误和缺陷。
如何设计测试用例
测试种类:白盒测试、黑盒测试、静态测试、动态测试
测试种类的组合:静态白盒测试、静态黑盒测试、动态白盒测试、动态黑盒测试(主要介绍的内容)
动态黑盒测试用例设计:
1、等价类方法:
例1:加法器A+B=C 要求A,B必须都为1—100的整数
有效等价类:>=1,<=100
无效等价类:<1、>100
由此可知测试用例为:
A=4 B=40 C=43
A=0 B=-1 C=ERROR
A=30 B=0 C=ERROR
A=101 B=120 C=ERROR
A=101 B=50 C=ERROR
考虑到小数,非字符等其它情况测试用例还要增加以下几种情形:
A=3.1 B=5.6 C=ERROR
A=A B=B C=ERROR
A=@ B=# C=ERROR
A=空格B=空格C=ERROR
A= B= C=ERROR
等价类定义:
是指某个输入域的子集合。
在该集合中,各个输入数据对于揭露程序中的错误都是等价的。
有效等价类:符合需求规格说明书,合理的输入数据的集合;无效等价类:不符合规格说明书,无意义的输数据集合。
2、边界值方法:
隐藏在角落中,大量测试经验表明边界值是最容易出现问题的地方,也是我们测试的重点。
仍旧用加法器这个例子,由于输入需要1—100两个边界值,对于边界值我们经常取值范围为n-1,n,n+1(n为边界值)
所以加法器测试用例增加如下几条:
A=0 B=10 C=ERROR
A=1 B=10 C=11
A=2 B=10 C=12
A=10 B=0 C=ERROR
A=10 B=1 C=11
A=10 B=2 C=12
A=99 B=10 C=109
A=100 B=10 C=110
A=101 B=10 C=ERROR
A=10 B=99 C=109
A=10 B=100 C=110
A=10 B=101 C=ERROR
其实边界值合等价类法联系是很密切的,大家想一想边界值是如何产生的,是我们在划分等价类过程中产生的,而由于边界地方最容易出错,我们在等价类中选取测试数据的时候也经常选取边界值
3、因果图方法:
例2:奖金计算软件
员工分为普通员工与管理与员工
员工表现分为普通,优秀和特殊贡献(普通和优秀员工都可能有特殊贡献,普通员工表现为普通、优秀、特殊贡献和管理人员表现为普通、优秀、特殊贡献拿的奖金事不同的)
输入条件:员工类别:普通员工A1,管理员工A2
员工表现:普通B1,优秀B2,特殊贡献B3
输出条件:奖金类别:1类奖金C1,2类奖金C2……
由于A1和A2是互斥的,B1和B2互斥,B1和B3,B2和B3可以同时满足,根据输入条件排列组合如下:
普通员工:A1+B1→C1, A1+B2→C2, A1+B1+B3→C3, A1+B2+B3→C4
管理员工:A2+B1→C5, A2+B2→C6, A2+B1+B3→C7, A2+B2+B3→C8
所以测试用例如下:
输入输出
普通员工,表现普通奖金1
普通员工,表现优秀奖金2
普通员工,表现普通,有特殊贡献奖金3
普通员工,表现优秀,有特殊贡献奖金4
管理人员,表现普通奖金5
管理人员,表现优秀奖金6
管理人员,表现普通,有特殊贡献奖金7
管理人员,表现优秀,有特殊贡献奖金8
采取以下方法比较实用:
1)分析输入,输出条件
2)确定输入条件的关系
3)根据排列组合原则书写测试用例
4、流程图方法:
例3:电子商务网站
一个电子商务网站,购买货物:登入系统,查看商品,选择要购买的商品,购买完毕到收银台结账,最好退出系统。
设计测试用例如下:
输入
1打开IE,进入系统显示登入界面
2输入正确用户名密码登入系统登入系统成功
3查询商品显示符合条件的商品列表
4挑选商品
5放某样商品进入购物车该商品进入购物车
6如果还需要购买其它商品,返回步骤4 显示商品列表
7进入购物车选择的商品都在购物车中
8进入收银台结账结账成功
9退出系统系统退出进入登入界面
方法举例:
例4:用户注册页面测试
包含用户名,秘密,注册日期
分析:用户名,密码可以采用因果图,正确用户名A1, 错误用户名A2,正确密码B1,错误密码B2
A1,A2 B1, B2互斥
A1,B1 A2,B1 A1,B2 A2,B2可以并存
注册日期可以采用等价类法
月:大月31,小月30,闰年2月29,非闰年2月28。