ホームページ データベース mysql チュートリアル 查询分析器中开发代码测试检查_MySQL

查询分析器中开发代码测试检查_MySQL

Jun 01, 2016 pm 01:56 PM
開発する お問い合わせ テスト

如果您像我一样,则可能已经花费了很多时间在查询分析器中开发代码。在您对代码感到满意之后,可以立即对开发服务器上的测试数据库运行一个或两个专设 测试。如果看起来没有什么问题,您便可以将代码投入生产。如果这是一段关键代码,或者该代码较为复杂,则您可能会执行更多的检查,以避免后验剖析。甚至在这种情况下,您也可能屏息以待。www.chinai tp 采集 ow er.comd1nHRZf 

这就是我在大部分职业生涯中所采用的编码方式。哦,有时我会存储测试查询以供将来使用,这通常是因为总裁/CEO/CIO/部门经理习惯于大约每周就改变一下他或她的要求。但是,除此以外,我不会再做什么。我通常在查询分析器或它的 Oracle/Access/FoxPro 等效工具外部用专设 查询进行测试。更高强度的测试需要使用查询分析器调试器。在绝望的情形下,需要使用 PRINT 语句。www.chinai tp 采集 ow er.comd1nHRZf

目前存在 一种更好的方式。www.chinai tp 采集 ow er.comd1nHRZf

超越专设 测试www.chinai tp 采集 ow er.comd1nHRZf

当我的 SIL 部门采用极限编程 (XP) 时,我们还采用了该方法论的单元测试部分,而它们两者都使我成为更出色的开发人员。但是,即使您不在 XP 环境中工作,您仍然可以从 XP 风格的单元测试中获益。 www.chinai tp 采集 ow er.comd1nHRZf

单元测试不同于接受测试。单元测试用于测试较小的代码块(例如,存储过程),而接受测试更多地涉及到用户是否可以接受 UI。以下是我发现的单元测试的五个优点:www.chinai tp 采集 ow er.comd1nHRZf

? 它们能够找出应该承担责任的当事人。您是否收到过电子邮件,告诉您应该修复程序错误,而这实际上是其他某个人所作更改的副作用?好,如果您具有一些零散的测试查询,请将它们包装到可以定期运行(或许是在晚上)的存储过程中。请确保在单元测试失败时能够生成电子邮件。 www.chinai tp 采集 ow er.comd1nHRZf
 
? ;生成库不需要花费很长时间。每个存储过程和每个存储函数都应当具有为它编写的测试,而触发器也应该如此。如果这听起来有些苛刻,那么请想一想,能够在问题到达生产服务器之前捕捉到它,从而拯救您自己,将会是一种多么好的感觉。如果您具有大量旧式代码,那么为每个单元编写测试可能需要多年的工作,并且您也不能仅仅为了编写测试而停止新的开发工作。但是,您可以为每段新代码编写测试,也可以为您修改的每个过程编写测试。用不了多长时间,您就会为关键的旧式代码和新代码编写众多的测试。 www.chinai tp 采集 ow er.comd1nHRZf
 
? 轻松创建准确的代码文档。每个过程或函数都应当用不同的参数组合调用。这不仅能够确保代码按预期方式工作,而且还提供了有关您的工作的最新而准确的文档。另外一个编码员只需查看您的测试,就可以了解对您的过程进行调用的示例。谁知道呢?某一天,这另一个编码员可能就是您自己。 www.chinai tp 采集 ow er.comd1nHRZf
 
? 它们迫使您预先进行一点儿思考和计划。您应当在编写实际的过程或函数之前编写自己的单元测试。“什么?”您说,“我抗议!我们如何为尚未进行编码的东西编写测试?” www.chinai tp 采集 ow er.comd1nHRZf
 
? 有一个很老的笑话,它讲的是:有一个经理说:“我将弄清楚他们需要什么。其余的人开始编码。”那么,编码员在知道他们需要编写什么之前是无法开始工作的,不是吗?当您首先编写测试时,您将被迫考虑在开始编写该过程之前,您希望该过程完成什么工作。 www.chinai tp 采集 ow er.comd1nHRZf
 
? 它们确实可以节省您的时间。开发人员经常抱怨,编写测试需要花费比编写实际过程更多的时间。有时的确如此。但是请考虑以下情况:我最近接受了一项任务,即,修改我曾经遇到过的最难的存储过程之一。它是旧式代码,但是我仍然首先编写了测试。它花费了我几天的时间才完成,部分原因在于对该过程所施加的要求。实践证明,出于我刚才列出的所有原因,该测试非常重要,并且当我必须重新编写该过程以改善性能时,它变得弥足珍贵。 www.chinai tp 采集 ow er.comd1nHRZf
 
? 单元测试显示重新编写的过程中存在大量错误,而我能够很快地找到每个错误的根源,所花费的时间只占不使用单元测试时的几分之一。然后,当我认为已经完成该任务时,模糊测试失败了。主循环中的变量之一存在缺陷。如果代码以这种状态发布到生产环境中,那么这将是一个难以捕获的程序错误。最终,我以比采用其他方式更快的速度完成了这项任务。 www.chinai tp 采集 ow er.comd1nHRZf
 

如何编写 T-SQL 单元测试www.chinai tp 采集 ow er.comd1nHRZf

在我告诉您有关 T-SQL 测试框架的内容之前,首先需要提醒您注意两个非常基本的原则:www.chinai tp 采集 ow er.comd1nHRZf

? 第一,您需要一个具有良好测试数据的数据库。我用“良好数据”表示来自现实世界的真实数据。无论您是一个多么优秀的程序员,都无法充分地为应用程序仿造数据。即使要替换的旧式系统由纸张组成,也要找一位数据录入员来在某些表中输入数据。完成获得真实数据所需的工作。[尽管如此,仍然存在测试数据生成器。请参见本期中我的提示“生成测试数据”— 编者]www.chinai tp 采集 ow er.comd1nHRZf
 
? 第二,不应当针对生产数据库进行开发。您应当具有一个开发或测试数据库,以便满足您自己的需要。过去,当我在 Oracle 进行开发时,我曾经花费了一周的时间将开发数据库放在一个陈旧的服务器上。SQL Server 开发人员没有这样的借口。 www.chinai tp 采集 ow er.comd1nHRZf
 

在为开发数据库配备良好的数据以后,您需要某种框架以便运行测试。您可以编写自己的框架,但是为什么要这么做呢?已经有一个可用的框架了。www.chinai tp 采集 ow er.comd1nHRZf

TSQLUnit 简介www.chinai tp 采集 ow er.comd1nHRZf

TSQLUnit 是 T-SQL 的一个开放源码单元测试框架,它由 Henrik Ekelund 编写,并且可以从 http://sourceforge.net/projects/tsqlunit 获得。以下是一个有关我如何使用它的示例。www.chinai tp 采集 ow er.comd1nHRZf

我的 TSQLUnit 测试采用了类似的三部分模式:1) 单元测试设置,2) 执行目标过程,和 3) 检查结果。www.chinai tp 采集 ow er.comd1nHRZf

在单元测试设置过程中,我经常进行检查,以确保没有人趁我不注意时破坏了我的数据:www.chinai tp 采集 ow er.comd1nHRZf

DECLARE @nId INT, @nNewId INT a?”- @nNewId is for later

 

SELECT @nId = [ID] FROM MyTable

 

WHERE MyField = 'whatever'

 

IF @nId IS NULL  -- or @@ROWCOUNT = 0

 

EXEC tsu_failure 'The data has changed.

 

'whatever' couldn't be found'

 

IF 块用于检查预期的记录。如果找不到该记录,则测试会失败,并且会生成错误信息。测试框架移动至下一个单元测试。您不需要在失败消息字符串中使用该单元测试的名称,因为当测试失败时,TSQLUnit 将为您命名它。www.chinai tp 采集 ow er.comd1nHRZf

现在,我调用将要编写的存储过程:www.chinai tp 采集 ow er.comd1nHRZf

EXEC CreateMyTableNewRec @nId, @nNewId OUTPUT

 

正如您看到的那样,我已经确定了需要来自这一新过程的输出参数。在检查结果的过程中,我确保输出参数确实填充了某些内容:www.chinai tp 采集 ow er.comd1nHRZf

IF @nNewId IS NULL

 

EXEC tsu_failure

 

'A new record was not created for table MyTable.'

 

我可以进一步检查该值,以查看新记录是否是按照我希望的方式创建的。www.chinai tp 采集 ow er.comd1nHRZf

每个 TSQLUnit 测试本身都是一个存储过程。清单 1 显示了在将上述所有代码段放在一起时所具有的样子:www.chinai tp 采集 ow er.comd1nHRZf

清单 1. T-SQL 的完整单元测试。www.chinai tp 采集 ow er.comd1nHRZf

CREATE PROCEDURE ut_MyTable_NewRec

 

AS

 

--== Setup ==--

 

DECLARE @nID INT, @nNewId INT

 

SELECT @nId = ID FROM MyTable

 

WHERE MyField = 'whatever'

 

IF @nId IS NULL  -- or @@ROWCOUNT = 0

 

EXEC tsu_failure 'The data has changed.

 

'Whatever' couldn't be found'

 

--== Execute ==--

 

EXEC CreateMyTableNewRec @nId, @nNewId OUTPUT

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

furmark についてどう思いますか? - furmark はどのように資格があるとみなされますか? furmark についてどう思いますか? - furmark はどのように資格があるとみなされますか? Mar 19, 2024 am 09:25 AM

furmark についてどう思いますか? 1. メインインターフェイスで「実行モード」と「表示モード」を設定し、「テストモード」も調整して「開始」ボタンをクリックします。 2. しばらく待つと、グラフィックス カードのさまざまなパラメータを含むテスト結果が表示されます。ファーマークはどのように資格を取得しますか? 1. ファーマークベーキングマシンを使用し、約 30 分間結果を確認します。室温 19 度、ピーク値は 87 度で、基本的に 85 度前後で推移します。大型シャーシ、シャーシ ファン ポートが 5 つあり、前面に 2 つ、上部に 2 つ、背面に 1 つありますが、ファンは 1 つだけ取り付けられています。すべてのアクセサリはオーバークロックされていません。 2. 通常の状況では、グラフィックス カードの通常の温度は「30 ~ 85℃」である必要があります。 3. 周囲温度が高すぎる夏でも、通常の温度は「50〜85℃」です

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問​​題解決とコラボレーションにより集中できるようになります。ギット

12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 Mar 28, 2024 pm 03:11 PM

12306 チケット予約アプリの最新バージョンをダウンロードします。誰もが非常に満足している旅行チケット購入ソフトウェアです。行きたい場所に行くのに非常に便利です。ソフトウェアには多くのチケット ソースが提供されています。本物のチケットを渡すだけで済みます。 - 氏名認証によるオンラインチケット購入 全ユーザー 旅行券や航空券を簡単に購入でき、さまざまな割引が受けられます。また、チケットを入手するための事前予約も開始できます。ホテルや特別な車の送迎も予約できます。これを使用すると、ワンクリックで行きたい場所に行き、チケットを購入できます。旅行がより簡単で便利になり、すべての人に旅行体験を提供します編集者はオンラインで詳細を説明するようになり、12306 人のユーザーに過去のチケット購入記録を表示する方法が提供されます。 1. Railway 12306 を開き、右下隅の [My] をクリックして、[My Order] をクリックします。 2. 注文ページで [Paid] をクリックします。 3. 有料ページにて

Xuexin.com で学歴を確認する方法 Xuexin.com で学歴を確認する方法 Mar 28, 2024 pm 04:31 PM

Xuexin.com で私の学歴を確認するにはどうすればよいですか? Xuexin.com で学歴を確認できますが、多くのユーザーは Xuexin.com で学歴を確認する方法を知りません。次に、エディターが Xuexin.com で学歴を確認する方法に関するグラフィック チュートリアルを提供します。興味のあるユーザーはぜひ見に来てください! Xuexin.com の使用方法チュートリアル: Xuexin.com で学歴を確認する方法 1. Xuexin.com の入り口: https://www.chsi.com.cn/ 2. Web サイトのクエリ: ステップ 1: Xuexin.com のアドレスをクリックします。上記をクリックしてホームページに入ります [教育クエリ]をクリックします; ステップ2: 最新のWebページで下図の矢印に示すように[クエリ]をクリックします; ステップ3: 新しいページで[学術単位ファイルにログイン]をクリックします; ステップ4: ログインページで情報を入力し、[ログイン]をクリックします。

Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Mar 28, 2024 pm 10:00 PM

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

新しい仙霞の冒険に参加しましょう! 「朱仙2」「武威検定」の事前ダウンロードが開始されました 新しい仙霞の冒険に参加しましょう! 「朱仙2」「武威検定」の事前ダウンロードが開始されました Apr 22, 2024 pm 12:50 PM

新作ファンタジー妖精MMORPG『朱仙2』の「武威試験」が4月23日より開始されます。原作から数千年後の朱仙大陸で、どのような新たな妖精冒険物語が繰り広げられるのでしょうか?六界の不滅の世界、フルタイムの不滅のアカデミー、自由な不滅の生活、そして不滅の世界のあらゆる種類の楽しみが、不滅の友人たちが直接探索するのを待っています! 「Wuwei Test」の事前ダウンロードが開始されました。Fairy friends は公式 Web サイトにアクセスしてダウンロードできます。サーバーが起動する前に、アクティベーション コードは事前ダウンロードとインストール後に使用できます。完成されました。 『朱仙2』「不作為試験」開催時間:4月23日10:00~5月6日23:59 小説『朱仙』を原作とした朱仙正統続編『朱仙2』の新たな童話冒険篇原作の世界観をベースにゲーム背景を設定。

さまざまな言語での機能テストとカバレッジの違いは何ですか? さまざまな言語での機能テストとカバレッジの違いは何ですか? Apr 27, 2024 am 11:30 AM

機能テストでは、ブラック ボックス テストとホワイト ボックス テストを通じて機能の機能を検証します。一方、コード カバレッジでは、テスト ケースによってカバーされるコードの部分を測定します。言語 (Python や Java など) が異なれば、テスト フレームワーク、カバレッジ ツール、機能も異なります。実際の事例では、関数テストとカバレッジ評価に Python の Unittest と Coverage、Java の JUnit と JaCoCo を使用する方法を示します。

See all articles