第 6 章 系统测试及功能展示
6.1 系统测试
软件系统测试是应用系统开发过程中的一个重要环节,尤其对于面向互联网的应用系统,开发过程中,需要对系统各层代码进行全面的测试,上线前对系统功能需要进行系统的测试。
6.1.1 单元测试
单元测试是一种细粒度的测试,很多公司都已把单元测试作为开发流程的一部分,并明确要求开发者在提交功能模块的同时,也要提交相应的测试用例,所以对大多数开发者而言关于单元测试的知识己成了必修课[16].
本系统开发过程中,使用了最典型的单元测试框架 JUnt.单元测试通常在系统开发过程中进行,目标在于对系统数据存储层、业务处理层、数据展示层代码进行有效的独立测试,确保各层代码准确地完成各自的功能目标。
本系统在单元测试过程中,重点对数据处理层编写了相应的单元测试代码,确保对用户输入的各类非法边界数据进行容错处理,通常对每个业务处理类编写专门的测试类,并且通过单元测试代码的编写,为上层调用代码的编写给出了可参考借鉴的实例。
另一方面,通过单元测试,能够对项目开发过程中的代码重构成果做有效地检查,确保重构后的代码能够完全替代原有实现逻辑,从而可以替代旧的模块。同时,当系统测试发现问题时,可以通过单元测试代码来快速定位到出问题的代码片段,并通过单元测试代码,快速重现代码 Bug,快速修复问题。
总之,本系统开发过程中,通过引入单元测试机制,对代码质量提升有很大帮助,在团队成员沟通协作、工作成果积累和工作效率提升等方面也起到很大作用。
以下为部分单元测试用例设计样例。
6.1.2 集成测试
集成测试,是系统上线前的关键环节,通常相当于系统内测。
本系统在集成测试阶段,对集成测试进行详细的策划,如同拍戏过程的彩排,为每个系统角色安排 2~3 名测试人员,对每个角色的测试步骤进行了缜密的规划,并要求每个角色充分理解其所扮演角色的工作职责,通过对业务流程的系统讲解,让各个角色明白了各项功能的测试目标。
测试过程组织测试人员集中在一个办公室内,根据测试负责人给出的流程进行了惰轮反馈测试,过程中不断收集关于系统的功能性、易用性问题和有价值的改进意见。
正是在集成测试过程中,发现了系统前期版本界面,在非 wifi 环境下的卡顿或卡死现象,同时还发现部分小屏幕手机,如苹果 4 手机,在遇到比较长的页面输入表单时,表单元素被输入法遮盖,还有部分手机出现界面错位等一系列问题。
对于界面改进方面,系统测试过程中,参与测试的人员普遍反馈,系统界面提示对话框不够友好,一则不够美观,二则易出现无响应,对于此,研发人员进行了技术攻关,最终选择了开源的斑马对话框,效果非常理想,具体可以参加后续章节中的界面展示。
总之,通过组织了 3 轮集成测试,对系统的稳定性、可靠性、易用性等方面均有明显的提示,收集了许多有价值的反馈意见,并且让业务人员更加充分地理解和掌握了系统功能,为后续系统推广培训奠定了基础。
以下为部分集成测试用例设计。
6.1.3 测试环境及测试策略
开发测试环境:
硬件:Dell 服务器:4 核至强服务器,8G 内存
操作系统:CentOS6.3 64 位版本。
应用服务器:Tomcat7.0.50
数据库:MySQL5.6
Web 服务器:Nginx1.6.0
在线服务器测试环境:
硬件:阿里云 ECS 服务器:10M 带宽 双核 CPU、8G 内存。
操作系统:CentOS6.3 64 位版本。
应用服务器:Tomcat7.0.50
数据库:MySQL5.6
Web 服务器:Nginx1.6.0
单元测试在开发机器进行,开发机器为主流PC配置,开发环境使用了Eclipse3.7.2版本,JDK 使用了 1.7.0_71 版本。测试过程中,确保在线和开发服务器环境使用一致的软件环境,有利于问题的排查。
集成测试主要安排在测试服务器上进行,测试过程中,需要的业务数据,可以由在线服务器导出,然后导入到测试服务器中;开发机与测试服务器共用一套开发数据库,便于排查问题;团队开发了初始化数据库的工具程序,对测试环境进行校准,能够自动创建必要的业务数据:楼盘、案场经理、置业顾问,并清理测试过程汇总产生业务数据,这样便于反复进行测试,对发现的问题进行重现和排查,实践证明,用于辅助测试的数据库初始化程序对测试效率提升有明显帮助。