代码改变世界

一次有教益的程序崩溃调试 (中)

2010-09-07 13:35 by liangshi, 840 阅读, 0 推荐, 收藏, 编辑
摘要:上一篇文章介绍了一个程序崩溃的调试过程。经过细致的分析,我们发现程序崩溃的原因是CLR的缺陷。那么,有没有可能修改产品代码,来避免崩溃呢?检查崩溃线程的托管栈可知,产品代码是在查询数据库。0:013> !clrstack OS Thread Id: 0x2630 (13) Child-SP RetAddr Call Site 000000001d3cd2e0 000007fef48dd8ec... 阅读全文

一次有教益的程序崩溃调试 (上)

2010-09-05 19:13 by liangshi, 5130 阅读, 4 推荐, 收藏, 编辑
摘要:在系统上线前夕,我们将所有的子系统部署在预发布环境中做集成测试。集成测试模拟真实的业务场景,不停断地使用真实数据测试组成系统的各个服务(service)。预发布环境的Windows系统都启动了自动内存转储(auto memory dump)功能:当程序崩溃(crash)时,Windows会调用Windbg生成该程序的内存转储,以方便事后调试(postmortem debugging)。其技术原理是... 阅读全文

用Windbg调试Silverlight应用死锁

2010-08-22 17:33 by liangshi, 1496 阅读, 0 推荐, 收藏, 编辑
摘要:测试一个Silverlight应用时,突然整个IE窗口失去响应(Not Responding)。这时,IE和内嵌的Silverlight应用不响应任何Windows事件,似乎只有杀死IE进程,才能进一步测试。但是,简单地杀死进程,很可能导致问题无法复现(repro)。于是,我将Windbg附加(attach)到IE进程上,做现场调试(live debugging)。调试.NET程序,需要在Wind... 阅读全文

用Windbg调试.NET程序的资源泄漏

2010-08-15 17:46 by liangshi, 3161 阅读, 1 推荐, 收藏, 编辑
摘要:在产品环境中的一个Windows服务出现了异常情况。这是一个基于WCF的.NET程序,它向网络应用(Web Application)提供WCF服务,同时也调用其他WCF服务以完成任务。突然,它不能响应网络应用的WCF调用。在它的日志文件中,我发现如下异常记录:System.Net.Sockets.SocketException: An operation on a socket could not... 阅读全文

实施组合测试

2010-07-25 15:02 by liangshi, 8852 阅读, 4 推荐, 收藏, 编辑
摘要:组合测试(Combinatorial Test)是一种测试用例生成方法。它将被测试应用抽象为一个受到多个因素影响的系统,其中每个因素的取值是离散且有限的。两因素(Pairwise)组合测试生成一组测试用例集,可以覆盖任意两个因素的所有取值组合,在理论上可以暴露所有由两个因素共同作用而引发的缺陷。多因素(N-way,N>2)组合测试可以生成测试用例集,以覆盖任意N个因素的所有取值组合,在理论上... 阅读全文

读书:手工测试与自动测试

2010-06-05 20:55 by liangshi, 884 阅读, 0 推荐, 收藏, 编辑
摘要:《探索式软件测试 》当软件测试的热点渐渐转向测试自动化,当越来越多的测试人员谈论白盒测试、测试编程、测试脚本时,测试专家James A. Whittaker旗帜鲜明地捍卫手工测试(manual testing),探讨如何用探索式测试(exploratory testing)来应对严峻的现实挑战。作者以“漫游”为隐喻,提出了以漫游测试(touring testing)为核心的... 阅读全文

利用Performance Counter Alert辅助调试

2010-05-30 18:26 by liangshi, 1469 阅读, 1 推荐, 收藏, 编辑
摘要:在51Testing论坛上,有一位网友提出一个问题:应用程序运行1小时左右,会占用CPU 近100%,持续1~2分钟后恢复正常,有没有诊断方法?《.NET 2.0应用程序调试》和《Windows用户态程序高效排错》都指出,开发者可以用Performance Monitor监视特定的Performance Counter,当Counter的值超过预定义阈值时,Performance Monitor会... 阅读全文

基于云计算的软件测试服务

2010-05-24 20:07 by liangshi, 3068 阅读, 3 推荐, 收藏, 编辑
摘要:James A. Whittaker在《探索式软件测试》中展望了“软件测试的未来”,其中提到了基于云计算的软件测试服务。受大师的启发,我也斗胆展望一下云计算在软件测试领域的应用(简称“云测试”)。本文的许多想法只是推测或遐想,未经深思熟虑和广泛调研,想必包含许多错误,权当是抛砖引玉吧。在走上“云”之前,先审视一下本地(loca... 阅读全文

迭代还是交付?

2010-05-16 20:15 by liangshi, 2246 阅读, 1 推荐, 收藏, 编辑
摘要:在大学期间,我就是敏捷软件开发的追捧者。像《XP Explained》、《XP Explained 2e》、《Agile Software Development》、《Pragmatic Programmer》、《Domain Driven Design》这样的书都读过两遍,颇似叶公好龙。后来参加工作,将敏捷理论与中国国情相结合,也有些感悟。于是,我打算以“测试杂感”为题,... 阅读全文

IronPython and LINQ to Objects (V): 支持PLINQ

2010-05-03 16:13 by liangshi, 737 阅读, 0 推荐, 收藏, 编辑
摘要:当IronPython 2.6 Beta发布时,我阅读了《LINQ in Action》和DevHawk的IronPython and LINQ to XML系列文章。受他们的启发,我撰写了三篇博文介绍了如何在IronPython中实现流水线风格的LINQ to Objects查询。IronPython and LINQ to Objects (I): 语言特性 IronPython and LI... 阅读全文