For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
数据库的架构与应用是大多数后端编程开发程序员都需要熟练掌握的一个编程技术,下面我们就通过案例分析来了解一下,数据库测试常见问题与解决方法。
我们不检查记录条数。除非你在测试中根据值来过滤数据,否则,如果有其他测试也在使用同一个数据库,就会有问题。这些问题通常出现在分片数据库中,或者在并行执行测试用例时。
随着时间推移,你会发现,返回的数据记录条数会持续增加。当记录条数的增加导致测试变慢,你需要考虑以下这些操作。
重置数据库。
改进索引。
移除Repository的这些方法。
重置数据库是快的操作,但我通常很少会建议这么做。尽管测试数据库中会有很多记录,但比起生产数据库,仍然少很多个数量级。这意味着重置数据库只会将性能问题隐藏掉。
改进索引有它自己的难点,因为每一个索引都会降低写入性能。不过,如果你可以忍受,改进索引会给用户带来更好的体验。
后一个选项也需要考虑在内,特别是当这些方法返回很多数据。GetAll方法只返回几十条记录是没有问题的,但如果返回1万条记录,你就不应该考虑在生产环境中使用它,你应该将其移除。
关于清理
很多人建议在测试结尾把创建的记录删掉,甚至有人会把整个测试放在一个事务中,确保新创建的记录会被删掉。
一般来说,我并不鼓励这种做法。测试数据库通常不会有太多数据,回滚事务只会错失累积数据的机会。
另外,清理操作有时候也会失败,特别是当你手动删除记录而不是回滚事务时。这种脆弱的测试是我们要避免的。
说到事务,有人建议整个测试从头到尾只使用一个事务。这可能是一种严重的反模式,它会影响你并行执行测试,因为它可能会阻塞数据库(还可能出现死锁)。况且,有些数据库(比如SQLServer)的回滚非常慢。
话虽如此,在测试中加入清理步骤并没有错,只是你要小心,不要让测试时间变得太长或增加失败情况。
结论
持久化层的测试与类和方法的测试不一样。这些技术不难掌握,与其他技术一样,要掌握它们都需要练习。先从简单的CRUD场景开始,再过渡到复杂的场景,比如并行测试、随机采样、性能测试和全数据集扫描。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。