API测试
api鉴权测试策略

API鉴权测试策略概述API鉴权是指在使用API(Application Programming Interface)时对用户身份进行验证和授权的过程。
它是保证API安全性和可靠性的重要环节。
本文将从策略制定、测试目标、测试方法、测试环境、测试工具等方面,详细介绍API鉴权测试策略。
策略制定在制定API鉴权测试策略时,需要考虑以下几个方面:1.了解业务需求:理解API的功能和使用场景,明确需要对哪些用户进行鉴权。
2.安全性要求:根据业务需求确定鉴权的安全级别,如是否需要使用HTTPS协议进行通信。
3.授权方式:确定采用何种授权方式,如基于角色的访问控制(RBAC)、OAuth 2.0等。
4.鉴权流程:设计鉴权流程,包括用户注册、登录、获取访问令牌等步骤。
5.风险评估:评估可能存在的安全风险,并制定相应的对策。
测试目标API鉴权测试的主要目标是验证系统能否正确地对用户进行身份验证和授权,并确保系统在各种情况下都能正确处理异常情况。
具体目标包括:1.验证用户注册和登录功能的正确性,确保用户可以成功注册和登录。
2.验证系统能够正确生成访问令牌,并对令牌进行有效期限的管理。
3.验证系统能够根据鉴权规则,正确判断用户是否有权限访问API。
4.验证系统能够正确处理异常情况,如无效的令牌、过期的令牌等。
测试方法API鉴权测试可以采用以下几种方法进行:1.功能测试:验证API的基本功能是否正常,如用户注册、登录、获取访问令牌等。
2.安全性测试:测试系统对非法请求的处理能力,如SQL注入、跨站脚本攻击等。
3.性能测试:测试在高并发情况下系统的性能表现,验证系统在大量请求下是否会出现性能问题。
4.异常场景测试:模拟各种异常情况,如无效的令牌、过期的令牌等,并验证系统是否能够正确处理。
测试环境为了进行API鉴权测试,需要搭建相应的测试环境。
具体步骤如下:1.搭建开发环境:安装开发工具、配置开发环境,并编写相应的代码实现API功能。
API测试报告接口正确性与稳定性评估

API测试报告接口正确性与稳定性评估1. 概述API(Application Programming Interface)是不同软件系统之间进行通信和交互的接口,它的正确性和稳定性对于系统的正常运行至关重要。
本报告将对API进行测试,并评估其正确性和稳定性。
2. 测试环境为了保证测试的准确性和可重复性,我们在以下环境中进行了API 测试:- 操作系统:Windows 10- 浏览器:Google Chrome- 开发语言:Python 3.9- 测试工具:Postman3. 测试方法为了评估API的正确性和稳定性,我们采用了以下测试方法:- 功能测试:测试API的各项功能是否按照预期工作。
- 边界测试:测试API在各种边界条件下的表现。
- 连续性测试:测试API在持续高负载下是否能够保持稳定工作。
- 异常测试:测试API对于异常输入或错误请求的处理能力。
4. 测试结果在对API进行综合测试后,我们得出了以下测试结果:4.1 接口正确性评估通过功能测试和边界测试,我们验证了API的正确性。
API按照预期设计,能够正常处理各项功能,并在边界条件下表现良好。
没有发现任何功能缺陷或错误响应。
4.2 接口稳定性评估在连续性测试和异常测试中,我们评估了API的稳定性。
4.2.1 连续性测试在持续高负载下,API表现出良好的稳定性。
我们逐渐增加了请求负载,API能够处理并响应请求,没有出现系统崩溃或请求超时的情况。
4.2.2 异常测试我们模拟了各种异常输入和错误请求,测试API对于异常情况的处理能力。
API能够正确识别并处理异常情况,返回适当的错误响应,并保持系统的稳定性。
5. 总结与建议通过对API的测试和评估,我们认为其正确性和稳定性达到了预期要求。
以下是我们的总结和建议:5.1 正确性API在功能测试和边界测试中表现出良好的正确性,能够正确处理各项功能,并在边界条件下表现正常。
我们建议在后续开发中继续保持对正确性的检验,并及时修复任何功能缺陷。
API接口可用性和性能测试报告

API接口可用性和性能测试报告一、概述本报告旨在对API接口进行可用性和性能测试,并对测试结果进行分析和总结。
通过测试,评估API接口的稳定性、可用性和性能表现,为开发团队提供进一步优化和改进的指导。
二、测试环境为保证测试结果的准确性和可信度,我们在以下环境中进行了测试:1. 操作系统:Windows 102. 浏览器:Google Chrome3. 开发工具:Postman4. 测试工具:Apache JMeter5. 测试数据:模拟真实生产环境的数据量和类型三、可用性测试可用性测试主要针对API接口的可访问性、响应时间和错误处理能力进行评估。
1. 可访问性我们通过模拟不同网络环境和访问频率对API接口进行了测试。
测试结果显示,在正常网络环境下,API接口的可访问性良好,无明显的访问延迟和连接失败现象。
然而,在高并发情况下,部分请求会出现较高的响应时间和错误率,需要进一步优化。
2. 响应时间通过使用Apache JMeter进行负载测试,我们模拟了不同负载下的API接口响应时间。
测试结果显示,在低负载情况下,API接口的响应时间平均为100毫秒,在高负载情况下,响应时间增加至300毫秒。
相较于行业标准,API接口的响应时间表现良好。
3. 错误处理能力我们针对API接口可能出现的异常情况进行了测试,包括错误的请求参数、未授权访问等。
测试结果显示,API接口能够正确地处理异常情况,并返回相应的错误码和错误信息,提高了系统的可靠性和安全性。
四、性能测试性能测试旨在评估API接口在各种负载下的性能表现,包括并发用户数、吞吐量和可扩展性。
1. 并发用户数我们逐步增加并发用户数,观察API接口在不同并发情况下的响应时间和错误率。
测试结果显示,API接口在100个并发用户下响应时间平均为200毫秒,在1000个并发用户下增加至500毫秒,错误率也有所增加。
这表明API接口在高并发情况下存在一定的性能瓶颈,需要进行性能优化。
API测试中的边界条件验证技术总结

API测试中的边界条件验证技术总结在API测试中,边界条件验证是一项关键的技术。
通过针对输入参数和边界情况进行测试,我们可以确定应用程序是否能够正确处理各种不同的情况。
在本文中,我们将总结API测试中的边界条件验证技术。
边界条件验证是指在测试过程中,针对输入参数的最小值、最大值以及特殊情况进行测试。
这些边界条件往往是应用程序的薄弱点,因此在测试中特别需要关注。
以下是几个重要的边界条件验证技术。
1. 最小值验证:在测试中,通过输入参数的最小值来验证程序的反应。
例如,如果API接受一个数字参数,我们可以使用0或者负数来测试程序的反应。
这可以帮助我们确定程序在边界条件下是否能够正确处理。
2. 最大值验证:与最小值验证类似,最大值验证是指通过输入参数的最大值来测试程序。
例如,如果API接受一个字符串参数的最大长度为100个字符,我们可以测试101个字符的情况。
这可以帮助我们确定程序是否能够正确处理超过最大值的情况。
3. 界限交叉验证:在测试中,边界条件可能会相互交叉,而不仅仅是最小值和最大值。
例如,如果API接受一个日期参数,我们可以测试年份在当前年份之前和之后的情况。
这有助于确定程序是否能够正确处理不同的时间范围。
4. 边界相等验证:有时候,边界条件不仅仅是最小值和最大值,还包括边界值本身。
例如,如果API接受一个整数参数,并且范围是从1到10,我们需要验证1和10这两个边界值。
这可以帮助我们确定程序是否能够正确处理边界值。
5. 特殊字符验证:在输入参数中包含特殊字符也是边界条件验证的一部分。
例如,如果API接受一个字符串参数,我们可以测试包含特殊字符如@、#或者$的情况。
这可以帮助我们确定程序是否能够正确处理特殊字符。
在进行边界条件验证时,还需要注意一些注意事项。
要确保输入参数的范围和类型符合API的要求。
如果API要求输入参数为整数,那么在进行边界条件验证时,要确保输入参数是一个合法的整数。
要确保边界条件测试覆盖所有可能的情况。
探索API接口测试的重要性

探索API接口测试的重要性
API接口测试是软件开发过程中非常重要的一环,它确保系统各个组件之间的通信能够正常运作,从而保证整个系统的稳定性和可靠性。
在探索API接口测试的重要性时,我们需要深入了解其作用和优势,以便更好地应用在实际项目中。
首先,API接口测试能够帮助开发人员验证接口的正确性和可靠性。
通过对接口参数、返回数据和错误处理等方面进行测试,可以及时发现并解决潜在的问题,从而提高系统的稳定性和可靠性。
其次,API接口测试能够提高系统的安全性。
通过对接口的输入验证、权限控制和数据加密等方面进行测试,可以有效防止恶意攻击和数据泄露,保护系统和用户的安全。
此外,API接口测试还能够提高开发效率和质量。
通过自动化测试工具进行接口测试,可以节省大量时间和人力成本,同时保证测试的全面性和准确性,有效提高开发效率和项目质量。
总的来说,API接口测试在软件开发过程中起着至关重要的作用,它能够确保系统的稳定性、可靠性、安全性和质量,帮助开发人员及时发现并解决问题,提高开发效率和质量,从而更好地满足用户需求和提升用户体验。
因此,我们应该重视API接口测试的重要性,加强对其的理解和应用,以确保系统的正常运行和持续发展。
apipost测试用例

apipost测试用例在进行API测试时,测试用例的编写是非常重要的。
测试用例可以帮助我们验证API的功能和性能,并确保API在各种情况下都能正常工作。
本文将介绍如何编写apipost测试用例,并提供一些示例来帮助读者更好地理解。
首先,我们需要了解apipost是什么。
apipost是一种用于测试API 的工具,它可以模拟各种请求,并验证API的响应。
在编写apipost测试用例之前,我们需要明确测试的目标和需求。
例如,我们可能需要测试API的登录功能、注册功能、数据查询功能等等。
接下来,我们可以开始编写测试用例。
测试用例应该包括以下几个方面:1. 测试目标:明确测试的目标,例如测试API的登录功能。
2. 测试条件:列出测试所需的条件,例如测试登录功能时,需要提供正确的用户名和密码。
3. 测试步骤:详细描述测试的步骤,例如输入用户名和密码,点击登录按钮。
4. 预期结果:说明测试的预期结果,例如登录成功后,应该跳转到用户的个人主页。
5. 实际结果:记录测试的实际结果,例如登录成功后,确实跳转到了用户的个人主页。
6. 测试结论:根据实际结果判断测试是否通过,例如登录成功后,测试通过。
下面是一个简单的apipost测试用例示例:测试目标:测试API的登录功能测试条件:正确的用户名和密码测试步骤:1. 输入正确的用户名和密码2. 点击登录按钮预期结果:登录成功,跳转到用户的个人主页实际结果:登录成功,跳转到了用户的个人主页测试结论:测试通过除了基本的测试用例,我们还可以编写更复杂的测试用例来覆盖更多的场景。
例如,我们可以测试API的错误处理功能,验证API在接收到无效请求时是否能正确地返回错误信息。
我们还可以测试API的性能,例如测试API在高并发情况下的响应时间和吞吐量。
总结起来,编写apipost测试用例是一项重要的任务,它可以帮助我们验证API的功能和性能。
在编写测试用例时,我们需要明确测试的目标和需求,并详细描述测试的步骤和预期结果。
软件测试自动化之-APITest
软件测试⾃动化之-APITestAPI测试从本质上来说,API测试是⽤来验证组成软件的那些单个⽅法的正确性,⽽不是测试整个系统本⾝.API测试也被称为单元测试(Unit Testing), 模块测试(Module Testing), 组建测试(Component Testing), 以及元件测试(Element Testing).为了将待测的程序和⽤于测试它们的测试套件(test harness)系统区分开来,待测程序通常叫做SUT(System Under Test), AUT(Application Under Test) 或者IUT(Implementation Under Test)通常来说,当待测函数或⽅法都位于DLL当中时,使⽤术语API测试.当待测⽅法位于某个类(当然,这个类可能作为⼀个DLL来实现)中的时候,使⽤术语单元测试等更为宽泛的术语.API测试需要注意的点存储⽤于测试⽤例的数据 (⽂本[⾃定义的序列化/反序列化,IOReaderWrter],XML[XmlSerializer],数据库[])读⼊测试⽤例的数据解析测试⽤例运⾏测试⽤例判定测试结果纪录测试过程与结果给测试加上时间戳综合总结测试结果纪录测试总耗时处理输⼊输出特殊值(null,string.Empty,"",越界值)处理"⽅法抛出异常"发送邮件(Report)⾃动运⾏(.Bat, Task Schedule, Daily Build & Run)(TFS)⾃动化测试相对于⼿⼯测试有以下优点Speed--快速地进⾏成千上万个测试⽤例;Accuracy--不受⼈为的因素的⼲扰,例如记录错误的结果;Precision--每次都以同样的⽅式运⾏;Efficiency--晚上⽩天都可以进⾏测试;Skill-Building--培养技能,⼿⼯测试⾮常枯燥乏味,提⾼不了技能。
待测⽅法的代码如下:View Code好了,下⾯来介绍API⾃动化测试的流程:1、准备测试⽤例数据,最好是独⽴于测试套件,可以存放在txt⽂件,XML⽂件和数据库,以便多个测试套件重复使⽤。
RESTful API测试中的接口规范和验证
RESTful API测试中的接口规范和验证在进行RESTful API测试时,接口规范和验证是非常重要的环节。
接口规范定义了API的结构、参数和返回结果等,而接口验证则是确保API按照规范进行操作,并验证其是否符合预期。
一个好的接口规范可以提高团队协作的效率。
通过定义统一的接口结构和参数要求,不仅可以减少沟通成本,还能够确保不同团队成员在开发过程中遵循相同的规范。
接口规范还可以作为文档,帮助开发人员更好地理解API的功能和使用方法。
在接口规范中,需要定义API的HTTP方法、路径和参数等。
常用的HTTP方法包括GET、POST、PUT和DELETE,分别用于获取资源、添加资源、更新资源和删除资源。
路径应该清晰明了,能够清楚表达API的功能和层级关系。
参数也是接口规范的重要组成部分,包括查询参数、请求体参数和路径参数等。
参数的类型、是否必填以及取值范围都应该在规范中说明。
接口验证是确保API符合规范的重要手段。
在接口测试中,可以通过验证接口的请求和响应是否符合预期来判断其是否符合规范。
可以针对每个接口的不同路径和参数进行测试。
确保API能够正确处理各种不同的情况,例如当参数缺失、参数格式不正确或参数值超出范围时的处理情况。
还可以测试接口的边界条件,例如参数的最小值、最大值以及边界值等。
除了路径和参数的验证,还需要验证接口的返回结果是否符合预期。
需要验证接口的返回码。
根据不同的业务需求,可以定义一套统一的错误码规范,使得开发人员在接口测试时能够清晰地判断接口是否正常。
还需要验证接口返回的数据是否正确。
可以通过比对接口返回的数据与预期结果,来判断接口的返回是否符合预期。
在接口验证过程中,可以借助一些工具和框架来提高效率。
例如,可以使用Postman这样的工具进行接口的发送和验证。
通过Postman,可以对API的请求参数进行设置,并查看API的返回结果,从而快速验证接口是否符合预期。
也可以使用各种编程语言中的HTTP库来发送请求并验证返回结果。
API自动化测试加速开发和测试流程
API自动化测试加速开发和测试流程在软件开发和测试过程中,API(Application Programming Interface)自动化测试是一个重要的环节。
它能够有效提高开发效率、缩短测试周期、增强软件质量,对于现代软件开发来说具有非常重要的意义。
本文将探讨API自动化测试的概念、优势以及加速开发和测试流程的方法。
一、API自动化测试概述API自动化测试是指通过编写脚本、利用自动化工具来实现对API的功能和性能的自动化测试。
它能够模拟真实用户的行为,对API进行全面的测试,包括输入验证、功能验证、性能验证等,从而确保API的稳定性和可靠性。
API自动化测试的主要步骤包括:测试环境准备、测试脚本编写、测试执行和结果分析。
首先,需要准备好测试环境,包括配置开发和测试所需的硬件和软件。
然后,根据测试需求编写测试脚本,测试脚本可以使用各种编程语言或者自动化测试工具来实现。
接着,执行测试脚本并收集测试结果。
最后,对测试结果进行分析和整理,发现问题并进行修复。
二、API自动化测试的优势1. 提高效率:相比手动测试,API自动化测试能够自动执行测试用例,大幅提高测试效率。
同时,自动化测试可以在短时间内执行大量的测试用例,提高测试覆盖率。
2. 缩短测试周期:自动化测试能够快速定位和发现错误,减少测试周期。
通过自动化测试,可以及时发现和解决问题,提高软件的开发和交付效率。
3. 增强软件质量:自动化测试能够全面测试API的功能和性能,避免人为操作的误差。
它能够快速准确地验证API的各种输入和输出,确保API的稳定性和可靠性。
4. 提供可持续集成:API自动化测试与持续集成相结合,能够实现开发和测试的无缝衔接。
在每次代码提交或集成后,自动运行测试用例,及时发现问题,保证软件质量。
三、加速API开发和测试流程的方法1. 选择合适的自动化测试工具:根据具体的需求和技术栈,选择适合的自动化测试工具。
常见的API自动化测试工具包括Postman、SoapUI、JMeter等。
API测试报告接口功能性与稳定性评估
API测试报告接口功能性与稳定性评估接口功能性与稳定性评估报告1. 概述本报告旨在评估所测试的API接口的功能性与稳定性,确保其能够满足预期的需求并保持稳定的性能。
API(Application Programming Interface)是不同软件系统之间进行通信和数据交互的桥梁,因此其功能性和稳定性对于整个系统的正常运行至关重要。
2. 测试环境为了进行细致而全面的评估,我们在以下环境中进行了测试:- 操作系统:Windows 10- 浏览器:Google Chrome, Mozilla Firefox- 开发工具:Postman, cURL- 数据库:MySQL- 编程语言:Python, Java3. 功能性测试功能性测试旨在验证API接口是否按照预期的功能进行工作,包括输入输出的准确性、参数的正确性、返回结果的一致性等。
3.1 接口1:用户注册(URL:/api/user/register)- 测试目的:验证用户注册接口是否能够正确注册用户,并返回相应的成功信息。
- 测试步骤:1. 提供有效的注册信息,包括用户名、密码、邮箱等。
2. 发送注册请求,验证响应状态码是否为200。
3. 验证返回结果中是否包含正确的成功信息。
- 测试结果:用户注册接口功能正常,能够成功注册用户并返回正确的成功信息。
3.2 接口2:商品查询(URL:/api/product/search)- 测试目的:验证商品查询接口是否能够根据给定的条件返回符合条件的商品信息。
- 测试步骤:1. 提供有效的查询条件,如商品名称、价格、类别等。
2. 发送查询请求,验证响应状态码是否为200。
3. 验证返回结果是否符合查询条件,并包含正确的商品信息。
- 测试结果:商品查询接口功能正常,能够根据给定的条件返回符合条件的商品信息。
4. 稳定性测试稳定性测试旨在评估API接口在高负荷和压力情况下的表现,以确定其是否能够持续稳定地运行,并保持良好性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
API(Application Programming Interface)测试的自动化是软件测试最基本的一种类型。从本质上来说,API测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身。API测试也称为单元测试(Unit Testing)、模块测试(Module Testing)、组件测试(Component Testing)以及元件测试(Element Testing)。从技术上来说,这些术语是有很大的差别的,但是在日常应用中,你可以认为它们大致相同的意思。它们背后的思想就是,必须确定系统中每个单独的模块工作正常,否则,这个系统作为一个整体不可能是正确的。毫无疑问,API测试对于任何重要的软件系统来说都是必不可少的。
例:一个窗体程序,估且叫StatCalc,它可以计算一组整数值的平均值。在后台,StatCalc程序引用了MathLib.dll库,这个库包括一些用于计算平均值的方法,比如计算算术平均值的ArithmeticMean(),计算几何平均值的GeometricMean(),以及计算调和平均值的HarmonicMean()。
我们的目标是测试上述三个方法,而不是使用了这三个方法的整个StatCalc程序。为了将待测试和用于测试它们的测试套件(Test Harness)系统区分开来,待测程序通常叫作SUT(System Under Test)、AUT(Application Under Test)或者IUT(Implementation Under Test),此例中使用AUT这个术语。
需要进行测试的几个方法属于一个叫作Methods的类,这个类位于MathLib命名空间(namespace)内,这几个方法的定义如下:
namespace MathLib { public class Methods { public static double ArithmeticMean(params int[] vals) { //计算并返回算术平均值 } private static double NthRoot(double x, int n) { //计算并返回n次方根 } public double GeometricMean(params int[] vals) { //使用n次方根计算并返回几何平均值 } public static double HarmonicMean(params int[] vals) { //此方法未实现 } }//class Methods 请注意,ArithmeticMean()是一个静态方法,GemetricMean()是一个实例方法(instance method),而HarmonMean()还没有完成,并不能进行测试。如何处理静态方法、实例方法以及未完成的方法是编写轻量级的API测试自动化程序时,最常见的三种情况。每个待测方法都接受整数序列作为参数(由params关键字指明),并且返回一个double类型的值。大多数情况下,用不着测试那些辅助的私有函数,比如说NthRoot()。如果辅助函数有错误,在测试其他用到了这个辅助的方法时,会把这些错误暴露出来。但是如果辅助函数非常复杂,则最好需要用到本文讲到的技术写一个专门针对它的测试用例。
手工测试这个API包括以下步骤:创建一个小的测试程序,把Methods类拷贝到测试程序,针对待测方法硬编码(Hard-coding)一些输入值,运行这个存根程序(stub program)以得到实际的输出结果,然后通过肉眼来比较实际的结果与期望的结果是否一致,从而决定测试通过与否,接下来再把结果记录到Excel表格或者类似的数据存储文件。要对待测方法的正确性有信心,可能要成百上千次地重复上述的测试过程。更好的方法是通过编写自动化程序来完成测试。
自动化测试相对于手工测试有以下5个优点: 速度:可以非常快速地运行成千上万个测试用例 精确性:不受人为因素的干扰,比如记录错误结果 确定性:每次都以同样的方式运行,而手工测试常常根据测试人员的不同而有细微的差别 效率:可以在晚上也可以在白天运行,同时你可以做别的事情 提高技能:提交测试人员的兴趣并且培养他们自身的技能,而手工测试通常是枯燥乏味的,并且提高不了什么技能。 接下来的几篇依次讲解如下技术:准备API自动化测试程序,运行程序,保存运行结果。此外,还可以学到一些用来处理特殊情况的技术,比如有些方法会抛出异常,或者有些方法可以接受字符串作为参数。同时还讲述如何管理API自动化测试的一些技术,比如通过编程的方法用E-mail来发送测试结果。
存储用于测试用例的数据 问题 如何在一个简单的文本文件里创建并存储用于API测试用例的数据 设计 使用冒号作为分隔符的文本文件,这个文件包含 唯一的测试用例ID,一个或者多个输入值和期望结果。 方案 0001:ArithmeticMean:2 4 8:4.6667 0002:ArithmeticMean:1 5 :3.0000 0003:ArithmeticMean:1 2 4 8 16 32:10.5000 注解 编写自动化测试程序的时候,可以让测试用例数据独立于测试套件单独存在,也可以把它嵌入测试套件。通常来说,较好的做法是让测试用例数据独立于测试套件,因为这样做可以让多个测试程序共享数据更为容易,而且修改这些数据也更为容易。文件的每一行代表一个单独的测试用例。每个测试用例有4个字段,它们分别是:测试用例ID、待测试方法、测试用例数据输入(由空格分开),以及期望结果。这4个字段由“:”字符来隔开。很多时候,这些文件还会包含一些额外的数据,比如测试用例标题、测试用例描述以及测试用例分类。选择什么做为分隔符,大多数情况下你都可以根据自己的喜好来决定。前提是要使用的分隔符不能是输入数据或是期望结果的一部分。举例来说,用冒号作为分隔符对于测试与数值计算相关的方法来说毫无问题,但是如果所测的方法的输入是URL那就有问题了,因为"http”后面紧跟着就是冒号。对于很多轻量级的自动化测试程序来说,出于简单性考虑,文本文件就最好的数据存储方法。其他的方法还包括把测试用例数据存储到XML文件或者SQL表。使用文本文件的不足之处还在于,它们很难处理有内在层次结构的数据,而且很难识别出伪控制字符,比如等。
前在的方案只有3个测试用例,但是实际测试中,你常常需要成千上万个测试用例。应该考虑到边界值(通过给出 一些特殊的输入,比如说正好等于、小于、大于预定义的输入上限或下限)、空值以及无效输入 。还要有一些用例使用重新排列过的输入数据,如下所示:
0002:ArithmeticMean:1 5:3.0000 0003:ArithmeticMean:5 1:3.0000 决定测试用例的期望结果通常是比较困难的,从理论上来说,会有一份文档详细说明待测方法的行为。当然,实际情况是:这些文档要么不全,要么根本就没有。常见的一种错误是,把输入数据提供给待测方法,记下输出结果,然后把这个结果作为期望值,你应该努力避免这种错误,因为这种做法不是在测试一个类的方法:它仅仅验证了你每次得到的都是相同的(但可能是不正确的)输出结构。如果采用这种做法,那就是无效的测试系统。
开测试套件的过程中,应该故意创建一些产生失败结果的测试用例。这么做可以帮助我们发现测试套件中的逻辑错误。例如:
0004:ArithmeticMean1 6:6.0000:deliberate failure 通常来说,当待测函数或待测方法都位于DLL当中时,使用术语API测试。当待测方法位于某个类(当然,这个类可能作为一个DLL来实现)中的时候,使用术语单元测试(Unit Testing)。术语模块测试(Module Testing)、组件测试(Component Testing)以及元件测试(Element Testing)是更为宽泛的术语,当所测试的函数和方法不用DLL的方法来实现的时候,使用后面几个术语。 读入测试用例数据 问题 如何从测试用例文件(简单的文本文件)中读入每条测试用例。 设计 通过while循环遍历用例文件的每一行,使用System.IO.StreamReader对象读入测试用例。 方案 FileStream fs = new FileStream("..\..\TestCases.txt",FileMode.Open); StreamReader sr = new StreamReader(fs); string line; while ((line = sr.Reader()) != null) { //解析每个测试用例行 //调用待测方法 //判断通过与否 //记录测试用例结果 } sr.Close(); fs.Close(); 注解 通常来说,控制台程序相比于Windows窗体程序,更适合用来编写轻量级的自动化测试程序。控制台程序很容易集成到遗留下来的测试系统,而且在Windows环境下也很容易操纵。如果你要把测试程序写成窗体程序,请不要忘了让这个程序也可以通过命令行来进行操纵。
本方案假定已经把using System.IO;语句放到测试程序的代码里,这样就可以使用FileStream和StreamReader类而不用每次都引用它们的全名。我们还假定测试用例数据文件被命名为TestCase.txt,并且被放在测试程序所在目录的上两级目录。对于测试用例数据文件来说,相对路径通常要比诸如C:\\Here\\There\\TestCase.txt这样的绝对路径要好,因为相对路径允许把测