﻿
{"id":24533,"date":"2022-02-24T20:50:08","date_gmt":"2022-02-24T20:50:08","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=24533"},"modified":"2022-02-24T20:50:08","modified_gmt":"2022-02-24T20:50:08","slug":"genfu-kutuphanesi-ile-test-dummy-data-olusturmak","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/genfu-kutuphanesi-ile-test-dummy-data-olusturmak\/","title":{"rendered":"GenFu K\u00fct\u00fcphanesi \u0130le Test\/Dummy Data Olu\u015fturmak"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda anl\u0131k olarak ger\u00e7ekle\u015ftirilmesi gereken test ve operasyonel s\u00fcre\u00e7lerin icra edilebilmesi i\u00e7in olmazsa olmaz\u0131m\u0131z diyebilece\u011fimiz nominal, ger\u00e7ek olmayan yani kukla niteli\u011finde iyi huylu sahte bilgilere <em><strong>Dummy Data<\/strong><\/em> denmektedir. Dummy Data&#8217;lar, anl\u0131k olarak test edilecek yap\u0131n\u0131n ihtiyac\u0131 olan organik verilerin haz\u0131r olmamas\u0131 yahut o verileri sa\u011flayacak olan d\u0131\u015f servisin bir \u015fekilde sa\u011fl\u0131kl\u0131 \u00e7al\u0131\u015famamas\u0131 gibi t\u00fcrl\u00fc sebeplerden dolay\u0131, bu sebeplerin hallolmas\u0131n\u0131 beklemeksizin gayeye uygun bir \u015fekilde o anki ihtiyaca istinaden test i\u015fleminin ger\u00e7ekle\u015ftirilmesini sa\u011flayacak kadar numune verinin olu\u015fturulmas\u0131n\u0131 ve bu verilerin senaryoya uygun bir \u015fekilde operasyona tabi tutulup testin sim\u00fcle edilmesini sa\u011flamaktad\u0131rlar. Haliyle biz geli\u015ftiriciler a\u00e7\u0131s\u0131ndan dummy data&#8217;lar, hayat kurtaran ve olabildi\u011fince zamansal israf\u0131 minimize eden yap\u0131lar olsalar da, maliyet a\u00e7\u0131s\u0131ndan bir tek hadikaplar\u0131 vard\u0131r ki, o da, olu\u015fturulmalar\u0131n\u0131n ve y\u00f6netilmelerinin olduk\u00e7a zor ve zahmetli olmalar\u0131d\u0131r. \u0130\u015fte bu noktada GenFu k\u00fct\u00fcphanesi ile bu zahmeti olabildi\u011fince t\u00f6rp\u00fcleyerek dummy data&#8217;lar\u0131m\u0131z\u0131 rahatl\u0131kla olu\u015fturabilmekte ve y\u00f6netebilmekteyiz. Hadi gelin bunun nas\u0131l oldu\u011funu hep beraber inceleyelim&#8230;<\/p>\n<h4 style=\"color:#e83e8c;\">GenFu K\u00fct\u00fcphanesi Nedir? Nas\u0131l Kullan\u0131l\u0131r?<\/h4>\n<p>Ger\u00e7ek\u00e7i test verileri olu\u015fturmak i\u00e7in kullan\u0131lan bir k\u00fct\u00fcphanedir. Test verisi olu\u015fturulmas\u0131 gereken model i\u00e7in, verilerini dahili olarak bar\u0131nd\u0131rd\u0131\u011f\u0131 bir veritaban\u0131ndan temin eden ya da rastgele olu\u015fturan ve reflection yoluyla t\u00fcm property&#8217;lere uygulayan bir i\u015flevselli\u011fe sahiptir.<\/p>\n<p><a href=\"https:\/\/www.nuget.org\/packages\/GenFu\/\" rel=\"noopener\" target=\"_blank\">GenFu<\/a> k\u00fct\u00fcphanesini kullanabilmek i\u00e7in a\u015fa\u011f\u0131daki talimatlar e\u015fli\u011finde ilgili k\u00fct\u00fcphaneyi projenize dahil edebilirsiniz.<\/p>\n<p>Package Manager : <code style=\"color:red;\">Install-Package GenFu<\/code><br \/>\n.NET CLI : <code style=\"color:red;\">dotnet add package GenFu<\/code><\/p>\n<p>H\u0131zl\u0131 bir \u015fekilde \u00f6rnek kullan\u0131m ger\u00e7ekle\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki modeli ele alarak ba\u015flayabiliriz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\npublic class Person\r\n{\r\n    public string Name { get; set; }\r\n    public string Surname { get; set; }\r\n    public int Age { get; set; }\r\n    public Country Country { get; set; }\r\n    string _info;\r\n    public void Instruct(string info)\r\n        =&gt; _info = info;\r\n}\r\n\r\npublic enum Country\r\n{\r\n    TR,\r\n    UK,\r\n    FR,\r\n    GE\r\n}\r\n<\/pre>\n<\/div>\n<p>\u015eimdi bu model \u00fczerinden tek bir &#8216;Person&#8217; test datas\u0131 olu\u015fturmak istiyorsak a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015f\u0131lmas\u0131 yeterli olacakt\u0131r.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing GenFu;\r\n\r\nvar person = A.New&lt;Person&gt;();\r\n<\/pre>\n<\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak.png\" alt=\"GenFu K\u00fct\u00fcphanesi \u0130le Test\/Dummy Data Olu\u015fturmak\" width=\"295\" height=\"140\" class=\"aligncenter size-full wp-image-24550\" \/><\/a>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere t\u00fcm property&#8217;leri verilerle dolu olan haz\u0131r bir test datas\u0131 olu\u015fturmu\u015f olduk. \u0130\u015fte bu kadar basit \ud83d\ude42<\/p>\n<p>Tabi bizlere tek bir test verisi yetmeyebilir. Haliyle bir listeye ihtiyac\u0131m\u0131z olursa e\u011fer;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing GenFu;\r\n\r\nvar person = A.ListOf&lt;Person&gt;();\r\n<\/pre>\n<\/div>\n<p>\u015feklinde \u00e7al\u0131\u015fabiliriz. B\u00f6ylece a\u015fa\u011f\u0131daki gibi hali haz\u0131rda onlarca test verisi elde etmi\u015f olaca\u011f\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak-1.png\" alt=\"GenFu K\u00fct\u00fcphanesi \u0130le Test\/Dummy Data Olu\u015fturmak\" width=\"472\" height=\"428\" class=\"aligncenter size-full wp-image-24551\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak-1.png 472w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2022\/02\/GenFu-Kutuphanesi-Ile-Test-Dummy-Data-Olusturmak-1-300x272.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><br \/>\nBunun d\u0131\u015f\u0131nda belirli conditionlar tan\u0131mlayarak olu\u015fturulacak dummy datan\u0131n s\u0131n\u0131rlar\u0131n\u0131 belirleyebiliriz. Misal; 19 ile 25 ya\u015f aras\u0131nda person nesneleri olu\u015fturmak istiyorsak a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015fabiliriz:<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing GenFu;\r\n\r\nGenFu.GenFu.Configure&lt;Person&gt;()\r\n    .Fill(p =&gt; p.Age)\r\n    .WithinRange(19, 25);\r\n\r\nvar person = A.ListOf&lt;Person&gt;();\r\n<\/pre>\n<\/div>\n<p>Ya da bir yandan 19-25 ya\u015f aral\u0131\u011f\u0131nda olsun bir yandan da isimleri &#8220;Ahmet&#8221;, &#8220;Mehmet&#8221;, &#8220;Hilmi&#8221;, &#8220;Necati&#8221;, &#8220;Muiddin&#8221;, &#8220;\u015euayip&#8221;, &#8220;R\u0131fk\u0131&#8221; vs. olsun dersek a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015fabiliriz:<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing GenFu;\r\n\r\nGenFu.GenFu.Configure&lt;Person&gt;()\r\n    .Fill(p =&gt; p.Age)\r\n    .WithinRange(19, 25)\r\n    .Fill(p =&gt; p.Name)\r\n    .WithRandom(new string&#x5B;] { &quot;Ahmet&quot;, &quot;Mehmet&quot;, &quot;Hilmi&quot;, &quot;Necati&quot;, &quot;Muiddin&quot;, &quot;\u015euayip&quot;, &quot;R\u0131fk\u0131&quot; });\r\n\r\nvar person = A.ListOf&lt;Person&gt;();\r\n<\/pre>\n<\/div>\n<p>T\u00fcm bunlar\u0131n haricinde herhangi bir property&#8217;nin de\u011feri direkt sabit bir de\u011fer olsun istersekte a\u015fa\u011f\u0131daki gibi geli\u015ftirme yapabiliriz:<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing GenFu;\r\n\r\nGenFu.GenFu.Configure&lt;Person&gt;()\r\n    .Fill(p =&gt; p.Surname, () =&gt; &quot;Y\u0131ld\u0131z&quot;);\r\n\r\nvar person = A.ListOf&lt;Person&gt;();\r\n<\/pre>\n<\/div>\n<p>Nihai olarak, g\u00fcnl\u00fck hayatta dummy data olu\u015fturman\u0131n maliyetini ortadan kald\u0131rabilmek ve \u00e7ok \u015fi\u015firilmeden bu ihtiyac\u0131 giderebilmek i\u00e7in GenFu k\u00fct\u00fcphanesi bizlere gayet pratik \u015fekilde e\u015flik ederek i\u015fimizi kolayla\u015ft\u0131rmaktad\u0131r diyebiliriz \ud83d\ude09<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Yaz\u0131l\u0131m d\u00fcnyas\u0131nda anl\u0131k olarak ger\u00e7ekle\u015ftirilmesi gereken test ve operasyonel s\u00fcre\u00e7lerin icra edilebilmesi i\u00e7in olmazsa olmaz\u0131m\u0131z diyebilece\u011fimiz nominal, ger\u00e7ek olmayan yani kukla niteli\u011finde iyi huylu sahte bilgilere Dummy Data denmektedir. Dummy Data&#8217;lar, anl\u0131k olarak&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4446,2739,3102,12],"tags":[4524,4525,4523,4528,4526,4522,4527],"class_list":["post-24533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net-6","category-net-core","category-asp-net-core","category-c-sharp-c","tag-net-core-genfu-library","tag-c-genfu-kutuphanesi","tag-c-genfu-library","tag-genfu-dummy-data","tag-genfu-kutuphanesi-test","tag-genfu-library","tag-genfu-test-data"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=24533"}],"version-history":[{"count":21,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24533\/revisions"}],"predecessor-version":[{"id":24558,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24533\/revisions\/24558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=24533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=24533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=24533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}