#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为一个单线程应用程序就变得十分容易了。我们不再需要为了解决问题而反复地部署和测试应用了。这种方法也同样适用于配置 URL、服务器和端口号等。
#2、测试中使用的数据集规模不合适。比如,生产过程中一个 典型的场景就是只使用1到3个账户进行测试,而这个数量本应是1000到2000个的。在做性能测试时,使用的数据必须是真实并且未经裁剪的。不贴近真实 环境的性能测试,可能会带来不可预料的性能、拓展和多线程问题。只有使用更大规模的数据集对应用程序进行测试,才能保证它正常运行并满足非功能属性的 SLAs(服务水平标准)。
#3、天真地认为应用程序中所调用的外部和内部服务是可靠的,并且是始终可用的。不允许出现服务调用超时和重试,将会对应用程序 的稳定性和性能造成不利地影响。需要进行适当的服务中断测试。这一点十分重要,因为如今的应用程序多是分布式并且面向服务的,都需要大量的网络服务。无限 地请求不可用的服务会损害应用程序。也需要对负载均衡器进行测试,以确保它能正常工作,使每个节点达到平衡。
#4、没有遵循最低限度的安全要求。正如上文提到,网 络服务随处可见,从而使得黑客可以轻易地利用它进行拒绝服务攻击。所以,在使用安全套接层时,必须完成基本的验证并使用Google skipfish等工具进行渗透测试。不安全的应用程序不仅会威胁其自身稳定性,还可能会因为数据完整性问题对公司的声誉造成负面影响,例如出现了客户 “A”可以浏览客户“B”数据的情况。
#5、没有进行跨浏览器的兼容性测试。如今的网络应用程序多是丰富的单页应用程序,它们使用JavaScript编程语言以及angular js这样的框架。为了使你建设的网站能够流畅地运行于不同的设备和浏览器之间,必须实现与之对应的设计。所以为了确保你的应用程序可以适用于所有设备和浏 览器,必须对其进行兼容性测试。
#6、没有外化可能经常发生变化的商业规则。例如税法、政府或行业相关要求、分类法等。可以使用像Drools这样的引擎来处理商业规则,它帮助你通过存入数据库或 excel的形式,来外化这些商业规则。企业掌握了这些商业规则,就能以最少的变化和测试完成对税法或相关要求地快速反应。
#7、没有提供下列文档
编写单元测试文档并使其拥有良好的代码覆盖率。
集成测试。
一个综合的或者百科全书式的页面列出了所有的软件构件,比如类、脚本、配置文件等,而这些构件要么是被修改了的,要么是新创建的。
高层次的概念图描述了所有的组件,交互和结构。
而基础文档则告诉开发者“如何结合数据源的详细信息来搭建开发环境”。
除了COS(满足的条件)这种由MindMap创建的形式之外,敏捷开发中还有1和2这两种主要的文档形式。
#8、没有适当的灾害恢复计划以及系统监视和归档策略。在项目截止日期来临之际,常常因为急于部署项目而遗漏了这些事项。没有通过Nagios和Splunk建立合适的系统监视机制不仅会威胁到应用程序的稳定性,还会妨碍目前的诊断和将来的改进工作。
#9、没有为数据库表设计方便整理的列,比如created_datetm、update_datetm、created_by、updated_by和时间戳,也没有提供有条理的删除记录列,如可以取‘Y’或‘N’的‘deleted’列或是可以取‘Active’或‘Inactive’的 ‘record_status’列。
#10、没有制定适当的回撤计划。导致在系统发生故障时,没有办法将系统恢复到部署前的稳定状态。这个计划需要反复推敲并有相关团队签字保证。计划包括了,退回到软件先前的版本,去除插入到数据库中的所有数据以及属性文件的所有条目。
#11、在项目开始前没有制定能力计划。现如今,在说明对平台的要求时,仅仅说“需要一台Unix计算机,一个Oracle数据库服务器,一个JBoss应用程序服务器”是远远不够的。你的要求必须精确到
操作系统的特定版本,JVM等。
有多少内存(包括物理内存,JVM堆内存,JVM栈内存和JVM永久代的空间)。
CPU(内核数)。
负载均衡器,需要的节点数、节点类型,比如是active/active型还是active/passive型,以及聚类要求。
文件系统要求,例如,你的应用程序可能会收集生成的报告并将其保存一年,之后 才进行归档。这样的话,你就需要有足够的硬盘空间。有些应用程序要求产生数据提取文件,并将它们暂时储存以供其他系统进程或数据仓库系统用来做多维分析报 告。还有些数据文件是基于安全文件传输协议的,它们或来自内部系统,或来自外部系统,并且在归档前需要被保存12到36个月。
下面的#12来自“David DeCesare”发自“java.dzone”的评论,
#12、“不在工作时使用最好的工具”。很多情况下,开发者会在生产系统中使用一门想要学习的语言或某种工具。通常这不是最好的选择。比如,为已经实际上是关系型的数据使用NoSQL数据库。请记住,无论你采用哪种工具,都需要在未来3到5年(甚至更长的时期)内维护你的产品。
#13、在16个关键技术领域缺少充足的知识储备。这些领域包括识别并修复1)“并发问题”、2)事务问题、3)性能问题。很多次面试中,我靠着这3个方面的知识拿到了新的合同。
相关推荐
### C++熟手如何学习Java 对于C++背景的学习者来说,转向Java并不仅仅是学习一种新的编程语言那么简单,还需要理解其背后的设计理念、框架以及生态系统的差异。下面将详细介绍从C++过渡到Java的过程中需要掌握的...
《Java项目开发实训教程_朱福喜》是...总的来说,《Java项目开发实训教程_朱福喜》不仅是一本学习Java编程语言的教材,更是一份宝贵的实践指南,它将帮助读者从理论到实践,从新手到熟手,最终在Java开发领域游刃有余。
因此,如果你是一名Java新手,"Java经典源码实例"是一个极好的起点,它将引导你逐步成为Java编程的熟手。记得在每个实例中多思考,尝试修改代码以达到不同的效果,这样你的编程技能将得到迅速提升。
Java电子教案是一个全面而深入的学习资源,旨在帮助学习者掌握Java编程语言的基础和高级概念。这份教程可能包含了从初级到中级甚至高级的Java知识体系,是个人自学或课堂教学的理想参考资料。 1. **Java简介** ...
【描述】中提到,“一个Java熟手都可能不会记得所有的用法”,这暗示了Java语言的博大精深。Java作为一种多用途、面向对象的编程语言,拥有丰富的类库和API,包括集合框架、输入/输出流、网络编程、多线程、异常处理...
原生态(PHP和JAVA)研发...可节省至少三个熟手程序员三个月的开发成本;只需一周即可轻松二开闪送、聚合打车、跑腿、外卖、物流配送、货运等APP系统。 目前已有功能列表如下,希望能给大家带来一个选择和可用的价值.
3DMax脚本开发是3D建模与动画制作领域中的一个重要组成部分,它允许用户通过编程方式自动化和扩展3DMax的功能。对于初学者来说,3DMax脚本开发可能显得有些复杂,但通过逐步学习,可以极大地提高工作效率并实现个性...
1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用,可以在此...适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.7.
用友U9ERP开发手册最新版2.8,方便新用户快速上手学习,方便熟手有需要时查询技术资料,方便高手做技术培训写PPT课件时,参考用。
项目部分则是本书的重头戏,通过实际的软件开发项目,如开发一个小型的数据库管理应用或一个简单的游戏,让读者将所学知识应用于实践中。这些项目不仅锻炼了编程技巧,也提高了问题解决能力。 在C#的高级特性方面,...
《成为熟手:100条Unity基础小贴士》这本书涵盖了从基本操作到进阶技巧的全方位指导,旨在帮助Unity新手快速提升技能,成为熟练的开发者。以下是一些核心知识点的详细说明: 1. **高亮选择**:在Unity编辑器中,...
【Java小白初学指南】 Java是一种广泛使用的高级编程语言,由Sun ...记得,学习编程是一个循序渐进的过程,遇到问题不要怕,多思考、多查阅资料,你会逐渐成为Java编程的熟手。祝你在Java学习的道路上越走越远!
SQLite是一个轻量级的、开源的关系型数据库,广泛应用于移动应用开发,因为它不需要独立的服务器进程,而是嵌入到应用程序中。在这个例程3中,我们将探讨如何使用类DBUtils1来操作SQLite数据库。 首先,理解DBUtils...
标题中的“二代身份证读卡示例_精伦iDR210”指的是使用Delphi7编程语言编写的一个程序示例,该示例主要用于演示如何与精伦iDR210这款二代身份证读卡器进行交互。这个读卡器是专门设计用来读取中国第二代居民身份证的...
例如,List就是一个常见的泛型集合,T可以代表任何类型,使得存储不同类型的数据变得简单。 "03"可能讲解了C#的面向对象编程(OOP)概念,如封装、继承和多态。封装是隐藏实现细节,提供公共接口;继承让子类可以...
JSF,全称JavaServer Faces,是Java EE平台中的一个组件框架,用于构建交互式用户界面。它提供了一种声明式的方式来创建Web应用,大大简化了开发过程。这个教程系列是针对初学者设计的,旨在帮助他们快速理解和掌握...
**Laravel 开发 - Moloquent** 在 Laravel 框架中,我们通常使用 Eloquent ORM 来操作关系型数据库,如 MySQL 或 PostgreSQL...无论你是 Laravel 新手还是 MongoDB 熟手,Moloquent 都能帮你轻松上手并提高开发效率。
这篇入门教程将帮助你理解CPLD的基本概念,掌握开发流程,并逐步成为CPLD设计的熟手。 首先,让我们了解一下CPLD的基本结构。CPLD通常由多个独立的可编程逻辑阵列(PLA)组成,每个PLA包含输入、输出和可编程逻辑...
4.WinForm界面:虽然具体的窗体设计和细节可能在博客中没有详细展示,但这个资源包括了一个WinForm界面,用于与PLC进行交互,例如读取和显示PLC数据。 5.关联博文:...