{"id":2388,"date":"2022-06-03T08:02:06","date_gmt":"2022-06-03T08:02:06","guid":{"rendered":"https:\/\/blog.embold.io\/?p=2388"},"modified":"2022-06-06T10:22:46","modified_gmt":"2022-06-06T10:22:46","slug":"repository-scan-performance-testing","status":"publish","type":"post","link":"https:\/\/blog.embold.io\/de\/repository-scan-performance-testing\/","title":{"rendered":"Repository Scan Performance Testing"},"content":{"rendered":"\n<p>Before we get into the exact testing approaches\nthat we use, we&#8217;d want to talk about the different <strong>levels of granular\ntesting.<\/strong>&nbsp;&nbsp; <\/p>\n\n\n\n<p>Let&#8217;s look at a software system, which is made up of interconnected components. The first level of testing that we consider in testing is <strong>Unit Testing<\/strong>, which involves testing individual components in isolation.&nbsp;<\/p>\n\n\n\n<p><strong>Integration Testing<\/strong> is the next step, which involves examining\nnumerous components and their interactions. <a href=\"https:\/\/community.embold.io\/t\/embold-for-qas-identify-bug-prone-components\/128\" target=\"_blank\" rel=\"noreferrer noopener\">Know more about\nhow Embold can be used by QA teams.<\/a>&nbsp;<\/p>\n\n\n\n<p>And after the integration testing, the next\nstep is to test the complete <strong>system as a whole.<\/strong> It includes both <strong>functional<\/strong>\nand <strong>non-functional testing. <\/strong>&nbsp;<\/p>\n\n\n\n<p><strong>Performance\ntesting<\/strong> is an important aspect of testing\nsince it aids in the improvement of performance. It&#8217;s a type of non-functional\nsoftware testing that ensures software programs will run smoothly under the\npredicted load. The goal of performance testing is not only to find bugs but also\nto eliminate performance bottlenecks. Performance testing examines the <strong>speed<\/strong>,\n<strong>scalability<\/strong>, and <strong>stability<\/strong> of a software program. Every new\nversion is subjected to performance testing by <strong>Embold.<\/strong><\/p>\n\n\n\n<p><strong>Acceptance testing<\/strong> and <strong>regression testing<\/strong> are two more\ntypes of testing.&nbsp;<\/p>\n\n\n\n<p><strong>Acceptance testing<\/strong> is the validation of software against the customer requirements. So, this is the testing that makes sure that the system does what the customer wants it to do.&nbsp;<\/p>\n\n\n\n<p>And the last type of testing is <strong>Regression\ntesting. <\/strong>It is a type of testing or retesting that we perform every time\nthat we change our system and make sure that the changes behave as intended and\nthe unchanged code is not negatively affected by the modification by these\nchanges. &nbsp;<\/p>\n\n\n\n<p><strong>So,\nfor many projects, the test processes that run,\noccupy a significant amount of time during the construction phase. These tests\ncould be a mix of unit and integration tests, with the latter taking the most\ntime.<\/strong>&nbsp;<\/p>\n\n\n\n<h2><strong>How we, at Embold, do granular\nperformance testing by analysing the performance of every component?<\/strong>&nbsp;<\/h2>\n\n\n\n<p>Before\nevery release, Embold carries out an automated performance testing for all\nmajor languages. With each new version, we have more rules introduced that influence\nthe scan performance. But our goal is to ensure that the difference in performance\nis as small as possible.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Test\ndata consists of large, medium, and small-size open-source repositories. We\nbenchmark the performance to the scan time for the last release for\nrepositories with similar lines of code.&nbsp;<\/p>\n\n\n\n<p>In case there is an improvement in scan\nperformance, we consider that as our new benchmark.&nbsp;<\/p>\n\n\n\n<p>But\nif the scan performance has deteriorated, we do a more granular performance\ntesting. Embold scan process consists of multiple small components which\nperform the following tasks&nbsp;<\/p>\n\n\n\n<ul><li>Parsing&nbsp;<\/li><li>Metric Calculation&nbsp;<\/li><li>Issue Detection&nbsp;<\/li><li>Relevance Calculation&nbsp;<\/li><li>Duplication&nbsp;<\/li><li>Code Issues Rating&nbsp;<\/li><li>Design Issues Rating&nbsp;<\/li><li>Metric Rating&nbsp;<\/li><li>Publishing&nbsp;<\/li><\/ul>\n\n\n\n<p>Our testing team carries out performance testing on all these individual components to understand the exact cause of the performance drop. Once our testing team has completed the test, our development team will get to work on it and resolve the issues as soon as possible. This method aids us in improving our performance.<\/p>\n\n\n\n<p><strong>Have a look at the performance report of our last two scans:<\/strong><\/p>\n\n\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">Project_Name<\/th><th class=\"column-2\">Repo_Name<\/th><th class=\"column-3\">Repo_URL<\/th><th class=\"column-4\">Language<\/th><th class=\"column-5\">Download_Source<\/th><th class=\"column-6\">Start_Scan<\/th><th class=\"column-7\">Parsing<\/th><th class=\"column-8\">Preprocessing_Parser_Data<\/th><th class=\"column-9\">Metric_Calculation<\/th><th class=\"column-10\">Unit_Test<\/th><th class=\"column-11\">Issue_Detection<\/th><th class=\"column-12\">Relevance_Calculation<\/th><th class=\"column-13\">Data_Aggregation<\/th><th class=\"column-14\">Consolidation<\/th><th class=\"column-15\">Total_Time<\/th><th class=\"column-16\">Duplication<\/th><th class=\"column-17\">Code_Issues_Rating<\/th><th class=\"column-18\">Design_Issues_Rating<\/th><th class=\"column-19\">Metric_Rating<\/th><th class=\"column-20\">Overall_Rating<\/th><th class=\"column-21\">totalLoc<\/th><th class=\"column-22\">eloc<\/th><th class=\"column-23\">components<\/th><th class=\"column-24\">Code Issues Count<\/th><th class=\"column-25\">Design Issues Count<\/th><th class=\"column-26\">Duplication Loc<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">performance<\/td><td class=\"column-2\">openjdk<\/td><td class=\"column-3\">https:\/\/github.com\/saurabhacellere\/jdk<\/td><td class=\"column-4\">JAVA<\/td><td class=\"column-5\">236.136<\/td><td class=\"column-6\">0.04<\/td><td class=\"column-7\">762.625<\/td><td class=\"column-8\">4.847<\/td><td class=\"column-9\">744.932<\/td><td class=\"column-10\">17.571<br \/>\n<br \/>\n<\/td><td class=\"column-11\">23.088<\/td><td class=\"column-12\">11.41<br \/>\n<\/td><td class=\"column-13\">72.207<br \/>\n<\/td><td class=\"column-14\">333.904<br \/>\n<\/td><td class=\"column-15\">2467.492<br \/>\n<br \/>\n<\/td><td class=\"column-16\">2.64<br \/>\n<br \/>\n<\/td><td class=\"column-17\">0.75<br \/>\n<\/td><td class=\"column-18\">1.71<br \/>\n<\/td><td class=\"column-19\">0.23<\/td><td class=\"column-20\">1.21<br \/>\n<\/td><td class=\"column-21\">2605355<br \/>\n<\/td><td class=\"column-22\">1181381<br \/>\n<\/td><td class=\"column-23\">13998<br \/>\n<\/td><td class=\"column-24\">36807<br \/>\n<\/td><td class=\"column-25\">50982<br \/>\n<\/td><td class=\"column-26\">197395\t<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">performance<\/td><td class=\"column-2\">openjdk<\/td><td class=\"column-3\">https:\/\/github.com\/saurabhacellere\/jdk<\/td><td class=\"column-4\">JAVA<\/td><td class=\"column-5\">37.252<\/td><td class=\"column-6\">0.518<\/td><td class=\"column-7\">619.728<\/td><td class=\"column-8\">2.376<\/td><td class=\"column-9\">273.189<\/td><td class=\"column-10\">0.367<\/td><td class=\"column-11\">7.995<\/td><td class=\"column-12\">9.394<br \/>\n<\/td><td class=\"column-13\">103.263<br \/>\n<\/td><td class=\"column-14\">1527.296<br \/>\n<\/td><td class=\"column-15\">2951.673<\/td><td class=\"column-16\">2.64<\/td><td class=\"column-17\">-2.51<br \/>\n<\/td><td class=\"column-18\">1.69<br \/>\n<\/td><td class=\"column-19\">0.23<\/td><td class=\"column-20\">0.87<br \/>\n<\/td><td class=\"column-21\">2611003<br \/>\n<\/td><td class=\"column-22\">1184842<br \/>\n<\/td><td class=\"column-23\">14091<br \/>\n<\/td><td class=\"column-24\">175719<br \/>\n<\/td><td class=\"column-25\">50963<br \/>\n<\/td><td class=\"column-26\">197745\t<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td><td class=\"column-3\"><\/td><td class=\"column-4\">Difference;<\/td><td class=\"column-5\">198.884<\/td><td class=\"column-6\">-0.478<\/td><td class=\"column-7\">142.897<\/td><td class=\"column-8\">2.471<\/td><td class=\"column-9\">471.743<\/td><td class=\"column-10\">17.204<\/td><td class=\"column-11\">15.093<\/td><td class=\"column-12\">2.016<\/td><td class=\"column-13\">-31.056<\/td><td class=\"column-14\">-1193.392<\/td><td class=\"column-15\">-484.181<\/td><td class=\"column-16\">0<\/td><td class=\"column-17\">3.26<\/td><td class=\"column-18\">0.02<\/td><td class=\"column-19\">0<\/td><td class=\"column-20\">0.34<\/td><td class=\"column-21\">-5648<\/td><td class=\"column-22\">-3461<\/td><td class=\"column-23\">-93<\/td><td class=\"column-24\">-138912<\/td><td class=\"column-25\">19<\/td><td class=\"column-26\">-350\t<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n\n\n\n<p><strong>Conclusion<\/strong>:  <strong>As Code issue count has increased by 0.3 million with duplication increase of 350 data aggregation and consolidation time will increase as they are directly proportional.<\/strong><\/p>\n\n\n\n<p>For more updates keep visiting <a href=\"https:\/\/embold.io\/\"><strong>Embold.io.&nbsp;<\/strong>&nbsp;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before we get into the exact testing approaches that we use, we&#8217;d want to talk about the different levels of granular testing.&nbsp;&nbsp; Let&#8217;s look at a software system, which is&hellip;<\/p>\n","protected":false},"author":24,"featured_media":2389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[302],"better_featured_image":{"id":2389,"alt_text":"Repository scan performance testing","caption":"","description":"","media_type":"image","media_details":{"width":3000,"height":2000,"file":"2022\/06\/RSPT.png","sizes":{"thumbnail":{"file":"RSPT-150x150.png","width":150,"height":150,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-150x150.png"},"medium_large":{"file":"RSPT-768x512.png","width":768,"height":512,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-768x512.png"},"penci-full-thumb":{"file":"RSPT-1170x780.png","width":1170,"height":780,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-1170x780.png"},"penci-slider-thumb":{"file":"RSPT-1170x663.png","width":1170,"height":663,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-1170x663.png"},"penci-magazine-slider":{"file":"RSPT-780x516.png","width":780,"height":516,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-780x516.png"},"penci-slider-full-thumb":{"file":"RSPT-1920x800.png","width":1920,"height":800,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-1920x800.png"},"penci-single-full":{"file":"RSPT-1920x1280.png","width":1920,"height":1280,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-1920x1280.png"},"penci-thumb":{"file":"RSPT-585x390.png","width":585,"height":390,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-585x390.png"},"penci-masonry-thumb":{"file":"RSPT-585x390.png","width":585,"height":390,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-585x390.png"},"penci-thumb-square":{"file":"RSPT-585x585.png","width":585,"height":585,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-585x585.png"},"penci-thumb-vertical":{"file":"RSPT-480x650.png","width":480,"height":650,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-480x650.png"},"penci-thumb-small":{"file":"RSPT-263x175.png","width":263,"height":175,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-263x175.png"},"jr_insta_square":{"file":"RSPT-640x640.png","width":640,"height":640,"mime-type":"image\/png","source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT-640x640.png"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"post":2388,"source_url":"https:\/\/blog.embold.io\/wp-content\/uploads\/sites\/2\/2022\/06\/RSPT.png"},"translation":{"provider":"WPGlobus","version":"2.10.8","language":"de","enabled_languages":["en","es","de","fr","ru"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"es":{"title":false,"content":false,"excerpt":false},"de":{"title":false,"content":false,"excerpt":false},"fr":{"title":false,"content":false,"excerpt":false},"ru":{"title":false,"content":false,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/posts\/2388"}],"collection":[{"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/comments?post=2388"}],"version-history":[{"count":10,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/posts\/2388\/revisions"}],"predecessor-version":[{"id":2402,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/posts\/2388\/revisions\/2402"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/media\/2389"}],"wp:attachment":[{"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/media?parent=2388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/categories?post=2388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embold.io\/de\/wp-json\/wp\/v2\/tags?post=2388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}