前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TDD(测试驱动设计):通过大量测试寻找最优解决方案

TDD(测试驱动设计):通过大量测试寻找最优解决方案

作者头像
用户1177503
发布2018-02-26 15:28:04
6170
发布2018-02-26 15:28:04
举报
文章被收录于专栏:程序员的SOD蜜程序员的SOD蜜

 这两天,我一直在做“测试人员”,不过跟一般的测试人员不同的是,我是在写代码做测试,这些代码是我头脑中的某种设计理念的表示,我坚信,只有不断的“测试”我的这些设计,才能够找到最优的解决方案。

    最近我在设计开发一个“wcf邮件通信系统”,目的是为了在两个不能够直接通信的环境中使用邮件作为消息通道,所以系统的关键之一就是邮件收发的效率和稳定性,怎么样才能够使得邮件内容最小?哪种格式的邮件内容处理最快?哪种方案能够消耗最小的cup资源而又占用合适的内存大小?下面是我的一个测试过程:

1,对象序列化测试

象使用xml序列化,占用的存储量太大;

json序列化,由于使用的是第三方类库,无法控制序列化细节,占用存储量还是比较大;

自定义实体类序列化器,细节由我完全控制,占用存储量最小;

2,数据存储格式测试

数据采用文本还是二进制方式存储?当然二进制存储量最小,但是文本格式可以有很高的压缩比,而且可读性好,这恰是二进制的缺点;

3,字符编码格式测试

使用gb2312,utf-8还是ascii?gb2312比较适合汉字处理,utf-8不会有国际化表示问题,ascii显然不行,它是7位字节表示的,还有没有效率更高的?这就需要测试了,最后终于找到一种编码格式:iso-8551,这是一种8位编码格式,非常适合处理二进制的字节数据。

4,压缩格式测试

使用winrar?不开源,除了问题比较麻烦,而且客户机器需要安装它;

使用zip 格式?开源的用过,以前好像还是发现有问题;

使用gzip?.net框架自己带的,相信不会有大问题,但用的少,还是需要测试;

5,数据编码方案测试

经过反复测试,发现很多邮件系统对于正文中包含大量的ascii字符有可能识别为垃圾邮件或者病毒邮件,根本无法发送邮件,所以直接使用base64格式对正文编码的方案泡汤,来看只有自己编码了,那要怎么编码才会认为是安全的?看下面的数据格式:

686a,0f00,0105,--双16进制格式,

686a0f,000105,--3字节16进制格式,

显然,采用3字节16进制格式能够更节省存储量,但反复测试发现,当正文长度超过100,000,opensmtp组件发送邮件很不稳定,经常无法发出,但是双16进制位格式却没有任何问题,只有这样了:-《

经过这些天以来不断的测试,不断的修改原有的邮件收发的设计方案,最终采用了“自定义实体类序列化+二进制数据存储+iso-8551字符编码+双16进制格式数据编码 ”的设计方案,由于对象数据本身已经是二进制了,各种压缩工具对于二进制数据几乎没有压缩效率,所以省去了“数据压缩”这个过程,最终在数据存储量、传输效率、cpu效率方面取得了最佳平衡。

所以,测试不仅仅是测试人员的事情,作为开发设计人员,如果要让你的成果是最优的,那么采用tdd吧,反复测试你的设计,最终找到最优的解决方案。

下面是附带的测试数据:

--------------------------

**新版查询结果(采用最优方案):

1,查询全部雇员数据:

198962 字符,(编码前,下同)

500390 字符,(编码后,下同)

2,查询客户数据,国家 usa,

1957 字符,

4222 字符,

------------------------

*旧版本结果(json序列化+base64编码+数据压缩):

1,查询客户数据,国家 usa,

8706 字符,

6230 字符,

2,查询全部雇员数据:

534022 字符,

830348 字符,

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档