第一代:JUnit :
优点:1.开源
2.测试后代码的质量提高明显
3.JUnit是Java写的
4.开发者写出测试代码。它证明代码需要做什么。如果有Bug会报错。
缺点:1。完全手动工作
2.为达到覆盖率,每100行代码写200-400行的测试代码
3.需要写很多的setup()、 shutdown()方法
4.测试代码难以维护,代码改变后,测试代码就无用了。
5.测试的覆盖率很难上去,测试只是静态的,线型的,只能测试有限的Path
第二代基于生成JUnit 测试脚本的: JTest.
优点:1.出来5年了,很多IDE支持。
2.产生的测试代码(JUnit)近似开发者手写的。
3.自动产生测试代码,减少了写JUnit测试代码的时间。
4.静态的代码分析。
缺点:1。证明了代码做了什么,而不是保证了“需要做什么”给人安全的错觉。
Example:
? Method to add 2 numbers together
? Developer mistakenly write code: A+B=A
? Script generator will write tests to validate that:
1+1=1, 4+6=4,10+20=10
? When tests run, they will all pass!
? Only perfect code will generate valid tests
2.开发者必需手动复查数以千行的JUnit代码。看正确与否。
3.复查机器产生的代码是很痛苦的。
4.很多重复的JUnit代码,到处都有。
5.报告的信息过多,不正确的测试将无法获取Bug。
6.它使用了私有的库,而不是纯的JUnit。
7.几乎不支持迭代/敏捷的开发模型。
(1) 同步/再生问题使它们没有办法使用。
(2)手动维护的话,失去了原有的自动化的意义。
8.要写许多的注释、说明在代码中。
9.静态的技术已经不能满足Java了。
(1)传统的静态的数据流分析只适合结构化的编码。
(2)对简单静态的代码有用,对JAVA复杂的代码用处不大。
(3)interface, abstract, private的类、方法都不可测。
10.不可动态生成测试用例的弊端:
If(date day=SystemDate.day)and
(date month=SystemDate.month) then
return true;
else return false;
像这样,今天是 return true 明天就是false;
11. 特殊用法:(1)生成的脚本是通过一个生产框架来完成的。
(2)生成的脚本只能最小的覆盖率。
(3)要提高覆盖率要用手动.
(4)脚本的维护是手工而且很容易变得陈旧。失去自动化的意义
第三代:全新的自动化单元测试:Agitar Software
Agitator的优点:
1. 完全不用写和维护测试脚本。
2.完全的面向对象的测试。
3.保证了代码“需要做什么”
4.把代码运行的真实情况(行为)直接反馈给开发者。
5.能有效地动态地生成数据(测试用例),对JAVA进行动态分析。
6.Agitation(数据分析,静态分析,动态分析)。
7.Observation暴露代码运行情况,simple click断言就生成了。
8.Factoies:200个不同的factory类型来规范输入,匹配逻辑。
9.Pattion: 规范输出,使逻辑更清晰。
10.Snapshort, stacktarce,跟踪代码,查找BUG,更容易。
11.自动创建智能MOCK对象,提供尽可能的代码
12.测试配置以XML格式保存,耐用,易改变,最有效的测试资产。
Dashboard的优点:
1. 标准和HTML表现形式,易于广泛访问和存取。
2. 清楚地看出软件的健康和测试努力的状态。
3. 项目汇总——复杂度,使用情况,风险情况、测试质量,覆盖率。测试点通过/失败的状态。
4. 所有权的分配,每个人,每个问题的负责划分非常清楚。
5. 分等级视图,提供包、类的细节信息,只要一,一目了然。
分享到:
相关推荐
9. **测试**:单元测试、集成测试、压力测试等是保证软件质量的重要环节,可能使用JUnit、Mockito等工具进行测试。 10. **部署与维护**:部署到服务器、负载均衡、监控系统性能和故障排查等都是项目实施的后期工作...
例如,单元测试框架JUnit对应Java,Python有unittest,它们简化了单元测试的实现,增强了测试的自动化水平。 综上所述,编程语言的选择并非单纯的技术决策,而是涉及到软件生命周期的多个方面,包括设计、实现、...
- **按测试时间及目标**:单元测试、集成测试、系统测试、验收测试等。 - **按测试任务**:功能测试、性能测试、安全测试等。 - **其他测试**:回归测试、冒烟测试等。 **2.4 黑盒测试** - **Release Test**:针对...
在本节niit课件中,我们探讨了无线技术和Java平台中的J2ME(Java Micro Edition)在开发移动应用中的重要性。以下是本课的主要知识点: 1. **无线技术概述**: - 无线技术是一种没有物理连接的发送者与接收者之间...
- **按测试发生时间和目标分**: 如单元测试、集成测试、系统测试等。 - **按测试任务分**: 包括功能测试、性能测试、安全测试等。 - **其他测试**: 如回归测试、冒烟测试等。 **2.4 黑盒测试详细介绍** - **Release...
软件测试策略涉及单元测试(验证单个模块的功能)、组装测试(集成多个模块)、确认测试(验证是否符合用户需求)和系统测试(验证整个系统在实际环境中的表现)。 程序调试是发现和修复错误的过程,包括识别问题、...
5. **测试与优化**:系统测试,包括单元测试、集成测试、性能测试等。 6. **部署与维护**:系统上线后持续的监控、更新与技术支持。 #### 五、结论 人力资源管理系统作为现代企业管理的重要组成部分,其发展经历了...
这个测试程序可能包含了单元测试和集成测试,用于验证Milenage算法的正确性和效率。 4. **Milenage_C**:这是用C语言实现的Milenage算法。C语言是底层编程的首选,其代码通常更简洁、运行效率更高。这个版本的...
应用的测试是开发过程中的重要环节,包括单元测试、功能测试、性能测试等,确保应用的稳定性和用户体验。 13. **3G网络技术** 文件名中的"0WCDMA2000.pdf"可能涉及3G网络技术,这在手机开发中也很重要。3G(第三...
4. 学会利用单元测试和集成测试,确保代码的正确性和稳定性。 三、技术资讯 2017年6月,可能的技术热点包括: 1. Docker容器技术的普及,推动了微服务架构的发展。 2. Python语言的崛起,因其简洁易学的特性在...
编程软件是软件开发者用于创建、测试和维护其他程序的工具,如IDE(集成开发环境)和版本控制系统。而软件架构是软件设计的关键环节,它定义了软件组件的结构、接口和相互关系,是软件开发的蓝图。软件架构的研究...
- **编码与测试**:按照设计文档进行编码,并通过单元测试、集成测试等多种测试手段确保代码质量。 - **部署与维护**:将系统部署到生产环境,并持续监控系统运行状态,及时处理可能出现的问题。 #### 三、关键...
- Android Studio是官方推荐的集成开发环境(IDE),提供了完整的开发工具链,支持项目创建、代码编写、调试和部署等环节。 - 开发者需要安装JDK(Java Development Kit),配置Android SDK路径,并确保环境变量正确...
- **单元测试**:编写测试用例验证程序逻辑是否正确。 - **Logcat**:查看程序运行时的日志信息,帮助定位问题所在。 综上所述,通过学习这些知识点,初学者可以逐步掌握Android开发的基本技能,为进一步深入学习...
在系统开发完成后,需要进行详尽的测试,包括单元测试、集成测试和系统测试,确保每个功能都能正常运行。同时,进行性能测试,评估系统的响应速度和稳定性,以满足大量并发用户的使用需求。 7. **后期维护与升级**...
3G开发板是一种用于开发3G通信应用的硬件平台,它为工程师提供了在实际环境中测试和验证3G技术的工具。3G,全称为第三代移动通信技术,是继2G之后的一个重大进步,主要特点包括更高的数据传输速率、增强的多媒体支持...
文档还列举了一些有助于开发和测试MMS服务的工具: 1. **诺基亚MMS CEAIF仿真器**:用于模拟MMS消息的发送和接收过程。 2. **诺基亚MMS Java库**:提供了Java API来开发MMS相关的应用程序。 3. **诺基亚MMS开发...