Pages

Saturday, January 28, 2012

Understanding the power of isolated object testing

I spent some time last night watching J.B. Rainsberger's excellent InfoQ presentation entitled "Integration Tests are a Scam". I've been recently contemplating why I favor unit testing (or as J.B. calls it, isolated object testing) over integration testing and I found his presentation particularly relevant. I highly recommend watching it. He also has a series of blog entries that support the presentation (Parts 1, 2, and 3). I also recommend reading those. They're truly gems.

 

Testing to prove basic correctness

I find many developers using integrated tests as a way to prove the basic correctness of the class or system under test. J.B. writes that "While integration tests offer value in other contexts, too many programmers use them to show basic correctness, and when they do that they waste a tremendous amount of time and effort." Integrated testing can be used within a project (I'm personally fond of acceptance testing), but integrated testing should not be used to prove basic correctness of your code. Focused, isolated object tests (aka unit tests using test doubles) should be used for this endeavor. If you discover behavior that a collaborator demonstrates and you have not accounted for in your isolated object tests, you should mimic this behavior in your test doubled collaborator contracts. You want to cover as much of your code with isolated object tests. We'll talk more about contract tests later.

J.B. mentions using an integrated test to learn about how a collaborator might support its contract, but that this integrated test is not included in the basic correctness test suite. I'm wondering if there isn't some other test suite here that we could use to keep integrated tests that support our learning the runtime and external dependencies. This test suite would be run periodically, but is not part of the whole continuous integration process of building a software system. Need to noodle on this more.

 

Isolated object testing

J.B. states in his aforementioned presentation that he does not use the term "unit testing" and instead favors a more focused term of "isolated object testing". He makes a point to call out the isolated word; these tests isolate the class under test by using test doubles to stub or mock the collaborators of the class under test. These tests focus on a single object and a singular behavior. Any collaborations are realized using test doubles.

I tend to agree that the phrase "unit testing" is a weak phrase describing the type of testing that we use to drive design of a single class and a single method. These tests focus on the responsibility of a single method of a single class. These tests also help you focus on understanding the contracts of collaboration between this class under test and its collaborators. This is really where the design part of the equation comes in. Classes that are hard to test are screaming out that the design is wrong. The tests are saying you have too much responsibility in the class under test or there are too many collaborators. Using your fast isolated object tests, you can engage in a reactive design activity, moving responsibilities out of the class under test, create new collaborators, and other design changes to make .

 

The collaboration contract

J.B. rightfully makes a big deal about contracts (aka interfaces) to explicitly specify collaboration protocols between objects. He mentions that in Domain-Driven Design, popularized by the Eric Evans book of the same name, three concepts can be used to express a domain-driven model: Values, Entities, and Services. All Services should have contracts and those contracts manifest themselves as interfaces. By specifying interfaces, we explicitly declare the protocol supported by each interface implementation. Constraining ourselves to interface types when specifying collaborations results in looser coupled systems, which is considered a "Good Thing". When engaging in isolated object testing, J.B. details the concept of collaboration tests and the closely associated contract tests. This concept of collaboration tests and contract tests is something new to me and is a big reason the presentation was so valuable in my eyes.

 

Collaboration tests and contract tests

After watching the presentation, I seem to be doing a pretty good job of using collaboration tests, but I'm not making the association to contract tests. Collaboration tests prove that the client interacts with its collaborators correctly; the client sends the correct messages and message arguments to the collaborator and appropriately handles all outputs from the collaborator. This is traditionally what I have used mock objects for and that seems to be what J.B. is arguing one should do for collaboration testing.

Contract testing, on the other hand, deals with testing that an interface implementation accurately respects the interface it is implementing. Does the implementor support the contract it declares to support? I haven't typically written these types of tests, but I'm going to start. Interestingly, I don't see a lot of this sort of testing in the wild. The part I really dig about contract tests as Rainsberger explains them is that they can be reused across interface implementations. He uses the List interface and two of its implementations, ArrayList and LinkedList, and details how to use implementation inheritance in the tests to DRY up your contract tests.

It really gets interesting when he declares that for every collaboration test that implies that a test double behavior, there better be a corresponding contract test that demonstrates that the interface implementation(s) actually does support that behavior. Same goes for values returned: if a test double returns a value in a collaboration test, there should be a contract test that demonstrates that the real implementation(s) does actually return that value. This is where I think selective, integrated learning tests can help you discover how your classes on the edges of a system may act when integrated to real external dependencies. But again, those integrated tests are not providing basic code correctness semantics. They're in your project to help you learn, but are not part of the isolated object tests suite. Don't lump them with your isolated tests and don't run them as part of your code/update repos/run tests/commit cadence.  This learning test suite should be run periodically during the day, but not part of the CI build process.

The death spiral of integrated testing for proving basic code correctness


Both Rainsberger's tutorial presentation and his blog postings go into great detail to the fallacy of using integrated testing to prove code correctness. I won't rehash what he has to say about it. My conclusions that I draw from his material are:

  • Focus on isolated object tests and isolation techniques and learn how to do collaboration and contract testing.
  • If you need to learn, by all means, write an integrated test. If you need to reproduce a defect, initially write it as an integrated test. However, in all cases, take what you have learned and replicate that in your isolated object test suite.  Replicate the behavior you discovered in the integration test(s) with test doubles.  This will ensure that your isolated object tests stay true to the behavior of the integrated system.
  • Don't get sucked into the downward death spiral of using integrated testing to guide your test-driven design efforts. It will only cause you pain.


J.B.'s series on Integrated Tests are a Scam can be found here.



 

272 comments:

  1. I absolutely love "death spiral". I wish I'd called it that.

    Thank you for your support of the idea. I'm particularly interested in knowing how it helps you in your work.

    ReplyDelete
  2. Solid advice. Thanks Chris. Using "isolated" to mean "single object and singular behavior" works better for my feeble mind than the word "unit". As I think about it, what we're calling unit tests on my current project might in some cases not be proving basic code correctness. I probably should take one of your TDD classes at DevJam. ;-)

    ReplyDelete
  3. Hmmm... I've seen so-called isolated object tests make so many assumptions about the collaborators it uses that they become a maintenance nightmare, false-redbaring constantly. And I've seen integration tests become so easy to write and so able to survive refactoring that you will take them out of my cold, dead hands to prove the correctness of my code. So I have trouble with this one.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Colonel Nikolai, I respect your opinion. I'm not saying that I don't value integrated tests, I just tend not to use them for code correctness. I've been on more than one project that has allowed integrated testing to get out of hand and turn the entire testing feedback loop on its head. Anything over 2 minute for a full run of the integration test suite kills the feedback loop.

    I love your comment about false-redbarring. Yep, isolation techniques, if not properly controlled, can be a huge mess. You definitely have to understand what the contract is when using test doubles. Thanks for the read and the comments.

    ReplyDelete
  6. Do you know how to keep a good mood. Just remember to pay attention to the fashion trend of Paris Hermes such as Hermes Constance Handbag or the other styles like Kelly Hermes Bag. I promise you will relax yourself. So come on, know more fashion style arround you and make yourself more confidence. You will like it.

    ReplyDelete
  7. Otr214428
    INTERNATIONAL CONCEPT OF WORK FROM HOME
    Work from home theory is fast gaining popularity because of the freedom and flexibility that comes with it. Since one is not bound by fixed working hours, they can schedule their work at the time when they feel most productive and convenient to them. Women & Men benefit a lot from this concept of work since they can balance their home and work perfectly. People mostly find that in this situation, their productivity is higher and stress levels lower. Those who like isolation and a tranquil work environment also tend to prefer this way of working. Today, with the kind of communication networks available, millions of people worldwide are considering this option.

    Women & Men who want to be independent but cannot afford to leave their responsibilities at home aside will benefit a lot from this concept of work. It makes it easier to maintain a healthy balance between home and work. The family doesn't get neglected and you can get your work done too. You can thus effectively juggle home responsibilities with your career. Working from home is definitely a viable option but it also needs a lot of hard work and discipline. You have to make a time schedule for yourself and stick to it. There will be a time frame of course for any job you take up and you have to fulfill that project within that time frame.

    There are many things that can be done working from home. A few of them is listed below that will give you a general idea about the benefits of this concept.

    Baby-sitting
    This is the most common and highly preferred job that Women & Men like doing. Since in today's competitive world both the parents have to work they need a secure place to leave behind their children who will take care of them and parents can also relax without being worried all the time. In this job you don't require any degree or qualifications. You only have to know how to take care of children. Parents are happy to pay handsome salary and you can also earn a lot without putting too much of an effort.

    Nursery
    For those who have a garden or an open space at your disposal and are also interested in gardening can go for this method of earning money. If given proper time and efforts nursery business can flourish very well and you will earn handsomely. But just as all jobs establishing it will be a bit difficult but the end results are outstanding.

    Freelance
    Freelance can be in different wings. Either you can be a freelance reporter or a freelance photographer. You can also do designing or be in the advertising field doing project on your own. Being independent and working independently will depend on your field of work and the availability of its worth in the market. If you like doing jewellery designing you can do that at home totally independently. You can also work on freelancing as a marketing executive working from home. Wanna know more, email us on workfromhome.otr214428@gmail.com and we will send you information on how you can actually work as a marketing freelancer.


    Internet related work
    This is a very vast field and here sky is the limit. All you need is a computer and Internet facility. Whatever field you are into work at home is perfect match in the software field. You can match your time according to your convenience and complete whatever projects you get. To learn more about how to work from home, contact us today on workfromhome.otr214428@gmail.com and our team will get you started on some excellent work from home projects.


    Diet food
    Since now a days Women & Men are more conscious of the food that they eat hence they prefer to have homemade low cal food and if you can start supplying low cal food to various offices then it will be a very good source of income and not too much of efforts. You can hire a few ladies who will help you out and this can be a good business.

    Thus think over this concept and go ahead.

    ReplyDelete
  8. You made some good points there. I did a search on the topic and found most people will agree with your blog...Software Testing Training in Bangalore

    ReplyDelete
  9. It is really a great work and the way in which u r sharing the knowledge is excellent. Java Training in Chennai | Blue prism Training in Chennai

    ReplyDelete
  10. Great post and informative blog.it was awesome to read, thanks for sharing this great content to my vision.
    Good discussion.
    Six Sigma Training in Abu Dhabi
    Six Sigma Training in Dammam
    Six Sigma Training in Riyadh

    ReplyDelete
  11. Thank you for this brief explanation and very nice information. Well, got a good knowledge. Java Training in Chennai | Blue prism Training in Chennai

    ReplyDelete
  12. You rock particularly for the high caliber and results-arranged offer assistance. I won't reconsider to embrace your blog entry to anyone who needs and needs bolster about this region.
    nebosh course in chennai

    ReplyDelete
  13. Can you recommend any other blogs/websites/forums that deal with the same subjects? Thanks.
    safety course institute in chennai

    ReplyDelete
  14. Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
    Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

    ReplyDelete
  15. Great informative bog. Thanks for sharing such a valuable information with us.

    Article submission sites
    Education

    ReplyDelete
  16. Innovative thinking of you in this blog makes me very useful to learn.
    i need more info to learn so kindly update it.
    Selenium Training in Nungambakkam
    Selenium Training in Vadapalani
    Selenium Training in Kelambakkam
    Selenium Training in Padur

    ReplyDelete
  17. One of the best blogs that I have read till now. Thanks for your contribution in sharing such a useful information. Waiting for your further updates.

    IELTS Course in Mumbai
    IELTS Institute in Mumbai
    Best IELTS Coaching Classes in Mumbai
    IELTS Coaching Center in Mumbai
    Best IELTS Classes in Mumbai
    IELTS Classes near me
    IELTS Courses in Mumbai

    ReplyDelete
  18. Such an excellent and interesting blog, Do post like this more with more information, This was very useful, Thank you.
    Aviation Academy in Chennai
    Aviation Courses in Chennai
    best aviation academy in chennai
    aviation institute in chennai

    ReplyDelete
  19. This is really impressive post, I am inspired with your post, do post more blogs like this, I am waiting for your blogs.
    air hostess training in Bangalore
    air hostess academy Bangalore
    cabin crew training institute in Bangalore
    air hostess training center in Bangalore

    ReplyDelete
  20. Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
    rpa training in bangalore
    best rpa training in bangalore
    RPA training in bangalore
    rpa course in bangalore
    rpa training in chennai
    rpa online training

    ReplyDelete
  21. Read all the information that i've given in above article. It'll give u the whole idea about it.
    Devops Training courses
    python Training in chennai
    Devops Training in Bangalore

    ReplyDelete
  22. Congratulations guys, quality information you have given!!!
    Regards,
    Data Science Course In Chennai

    ReplyDelete
  23. Amazing post thanks for sharing
    php training in chennai

    ReplyDelete
  24. Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.

    AWS TRAINING IN BTM LAYOUT | AWS TRAINING IN BANGALORE
    AWS Training in Marathahalli | AWS Training in Bangalore

    ReplyDelete
  25. I love the blog. Great post. It is very true, people must learn how to learn before they can learn. lol i know it sounds funny but its very true. . .
    online Python training
    python training in chennai

    ReplyDelete
  26. You are doing a great job. I would like to appreciate your work for good accuracy
    Regards,
    Best Devops Training in Chennai | Best Devops Training Institute in Chennai

    ReplyDelete
  27. Resources like the one you mentioned here will be very useful to me ! I will post a link to this page on my blog. I am sure my visitors will find that very useful
    AWS Training in Bangalore
    AWS training in sholinganallur
    AWS training in Tambaram
    AWS training in Velachery

    ReplyDelete

  28. I was recommended this web site by means of my cousin.
    I am now not certain whether this post is written through him as nobody else recognise such precise about my difficulty. You're amazing! Thank you!

    selenium training in Chennai
    selenium training in Tambaram
    selenium training in Velachery
    selenium training in Omr
    selenium training in Annanagar

    ReplyDelete
  29. I recently came across your blog and have been reading along. I thought I would leave my first comment.
    python Training institute in Chennai
    python Training institute in Bangalore
    python Training in Pune

    ReplyDelete
  30. Thanks for providing wonderful information with us. Thank you so much.
    Regards,
    Devops Training in Chennai | Devops Certification in Chennai

    ReplyDelete
  31. You are doing a great job. I would like to appreciate your work for good accuracy.
    best devops training in chennai

    ReplyDelete
  32. Thanks for the wonderful tip! Very detailed and informative. Easy enough for a beginner like me to understand.
    Data Science Training in Chennai | Data Science Course in Chennai

    ReplyDelete
  33. Amazing! I like to share it with all my friends and hope they will like this information.
    Regards,
    Python Training in Chennai | Python Programming Classes | Python Classes in Chennai

    ReplyDelete
  34. Nice to read, Thanks for sharing your opinion!

    Please read our blog which has same information like you.

    Python training in Bangalore

    ReplyDelete
  35. Nice post. Thanks for sharing! I want people to know just how good this information is in your article. It’s interesting content and Great work.
    Thanks & Regards,
    VRIT Professionals,
    No.1 Leading Web Designing Training Institute In Chennai.

    And also those who are looking for
    Web Designing Training Institute in Chennai
    SEO Training Institute in Chennai
    Photoshop Training Institute in Chennai
    PHP & Mysql Training Institute in Chennai
    Android Training Institute in Chennai

    ReplyDelete
  36. And indeed, I’m just always astounded concerning the remarkable things served by you. Some four facts on this page are undeniably the most effective I’ve had.

    SLAJOBS REVIEWS AND COMPLAINTS
    slajobs reviews and complaints
    slajobs reviews and complaints
    slajobs reviews and complaints
    slajobs reviews and complaints
    slajobs reviews and complaints
    slajobs reviews and complaints

    ReplyDelete
  37. Attend The Python training in bangalore From ExcelR. Practical Python training in bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python training in bangalore.
    python training in bangalore

    ReplyDelete
  38. If you have Natural Curls or Curly Hair, you are just blessed. You can experiment with many Hairstyles which will Look Stylish here we tell about top best and easy Curly Hairstyles and Curly Hair Tips of 2019

    ReplyDelete
  39. Attend The Python Training in Bangalore From ExcelR. Practical Python Training in Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python Training in Bangalore.

    ReplyDelete
  40. I like viewing web sites which comprehend the price of delivering the excellent useful resource Python training in pune free of charge. I truly adored reading your posting. Thank you!

    ReplyDelete
  41. Thank you for excellent article.You made an article that is interesting.
    Tavera car for rent in chennai|Indica car for rent in chennai|innova car for rent in chennai|mini bus for rent in chennai|tempo traveller for rent in chennai
    Keep on the good work and write more article like this...
    indica car rental in chennai for outstation
    Great work !!!!Congratulations for this blog

    ReplyDelete
  42. Anonymous9:00 AM

    this power have lot's of value but lot's of people do scam and make people foool like 1k daily profit review so alwyes read real reviews and be happy noe more scam.

    ReplyDelete
  43. Thanks for sharing valuable information.It will help everyone.keep Post.
    Dhankesari

    ReplyDelete
  44. Hey, would you mind if I share your blog with my twitter group? There’s a lot of folks that I think would enjoy your content. Please let me know. Thank you.
    IT Institute in KK Nagar| qtp training in chennai | Best QTP Training Institute in Chennai | QTP Training Institute in Chennai | best qtp training in chennai

    ReplyDelete
  45. Nice I have checked a couple of them. I figure You Should likewise consider making a rundown of Indian named a client I'm seeing great reaction from Indian individuals as well
    Contact us :- https://www.login4ites.com
    https://myseokhazana.com/



    ReplyDelete
  46. I really enjoyed your blog Thanks for sharing such an informative post.
    Best- Web -Designing -services- in -Noida

    ReplyDelete
  47. Thanks for the Valuable information.Really useful information. Thank you so much for sharing.It will help everyone.Keep Post. Find Some Indian Memes. Interesting News Viral News Some Life hacks tips Life hacks Entertainment News Find Some Viral News Here.Viral News

    ReplyDelete
  48. nice and well defined article, click for more entertainment news

    ReplyDelete
  49. Thanks For Providing Us this Great Iformation .Get Our Some Quality Services Buy Adsense Accounts .
    Here is also avilable Buy Adsense Accounts .
    You Can Watch Adsense Earning Trick Here Youtube Channel Buy Adsense Accounts .

    ReplyDelete
  50. This comment has been removed by the author.

    ReplyDelete
  51. Thanks for sharing such a great information, Waiting for more blogs
    The blog was really mind-blowing,
    Please publish more blogs like this!
    To know more about DIGITAL MARKETING do visit the below mentioned Link-
    DIGITAL MARKETING COURSE
    Again thanks for providing great quality blogs...

    ReplyDelete
  52. Attend The Data Analytics Course Bangalore From ExcelR. Practical Data Analytics Course Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Course Bangalore.
    ExcelR Data Analytics Course Bangalore

    ReplyDelete
  53. Ambulance Service in Patna provide Best services in hajipur, Muzaffarpur, Darbhanga, Samastipur, Mumbai at low cost.Private, air, AC, Road, Oxygen service in Bihar.ICU, Ground, Domestic, Critical, Cardiac, Funeral, Coffin, emergency, accidental care, dead body packing, rail, train facility available.
    Patna Ambulance
    Patna Ambulance service
    Ambulance in Patna
    Ambulance service in Patna
    Best Ambulance service in Patna
    Icu Ambulance in Patna
    PMCH Ambulance
    igims Ambulance
    paras ambulance
    patna aiims ambulance
    Ambulance Number
    Ambulance Number in Patna
    Ambulance Near me
    Ambulance in hajipur
    Ambulance number in hajpur
    Ambulance in samastipur
    Ambulance Number in samastipur
    http://www.ambulanceserviceinpatna.in/

    ReplyDelete
  54. amazing post and written in very simple and impressive language. Thanks for sharing
    harry potter wifi names

    ReplyDelete
  55. Nice Post. You have done a great job. Please Keep Posting and Keep Sharing. Emotional Quotes

    ReplyDelete
  56. Anonymous5:29 AM

    For Devops Training in Bangalore Visit - Devops Training in Bangalore

    ReplyDelete
  57. This is the first & best article to make me satisfied by presenting good content. I feel so happy and delighted.By Learn Digital Marketing Course Training in Chennai it will help to get Digital Marketing Training with Placement Institute in Chennai. If you Learn Social Media Marketing Training with Placement Institute in Chennai, you will get job soon.

    Learn Best Digital Marketing Course Training in Chennai in professional institute to get reputed job.

    ReplyDelete
  58. Attend The PMP Certification From ExcelR. Practical PMP Certification Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The PMP Certification.
    ExcelR PMP Certification

    ReplyDelete
  59. thanks for this valuable post
    such a awesome info bro,thanks for this post.if your looking for selenium courses or big data courses you can check out links below
    .Very well written article thanks for posting this amazing article with us keep growing and keep hustling
    Selenium course in chennai
    best selenium training institute in chennai
    best selenium training in chennai
    selenium training in chennai omr
    selenium training in omr
    big data course in chennai
    big data hadoop training in chennai
    big data analytics courses in chennai



    ReplyDelete
  60. Really a awesome blog for the freshers. Thanks for posting the information.
    Devops Training in Delhi

    ReplyDelete
  61. Thank you for your good information
    I will always support you to do your best in everything.
    I hope to have a good exchange in the future
    먹튀검증사이트


    ReplyDelete
  62. Your articles really impressed for me,because of all information so nice.devops Training in Bangalore

    ReplyDelete
  63. These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post.Amazon web services Training in Bangalore

    ReplyDelete
  64. I gathered a lot of information through this article.Every example is easy to undestandable and explaining the logic easily.python training in bangalore

    ReplyDelete
  65. Very useful and information content has been shared out here, Thanks for sharing it.selenium training in bangalore

    ReplyDelete
  66. This is really an awesome post, thanks for it. Keep adding more information to this.mulesoft training in bangalore

    ReplyDelete
  67. I Check your site your site is very good site thank you so much share amazing article 먹튀검증

    ReplyDelete
  68. keep up the good work. this is an Assam post. this to helpful, i have reading here all post. i am impressed. thank you. this is our digital marketing training center. This is an online certificate course
    digital marketing training in bangalore / https://www.excelr.com/digital-marketing-training-in-bangalore

    ReplyDelete
  69. Its really helpful for the users of this site. I am also searching about these type of sites now a days. So your site really helps me for searching the new and great stuff.

    aws training in bangalore

    aws courses in bangalore

    aws classes in bangalore

    aws training institute in bangalore

    aws course syllabus

    best aws training

    aws training centers

    ReplyDelete
  70. Nice blog, this blog provide the more information. Thank you so much for sharing with us.

    Nice blog, this blog provide the more information. Thank you so much for sharing with us.
    aws Training in Bangalore
    python Training in Bangalore
    hadoop Training in Bangalore
    angular js Training in Bangalore
    bigdata analytics Training in Bangalore
    python Training in Bangalore
    aws Training in Bangalore

    ReplyDelete
  71. Its really helpful for the users of this site. I am also searching about these type of sites now a days. So your site really helps me for searching the new and great stuff.

    aws training in bangalore

    aws courses in bangalore

    aws classes in bangalore

    aws training institute in bangalore

    aws course syllabus

    best aws training

    aws training centers

    ReplyDelete
  72. This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information.

    mulesoft training in bangalore

    mulesoft courses in bangalore

    mulesoft classes in bangalore

    mulesoft training institute in bangalore

    mulesoft course syllabus

    best mulesoft training

    mulesoft training centers

    ReplyDelete
  73. thanks for posting such an useful and informative stuff...
    unable to download ccc admit card

    ReplyDelete
  74. Go for the pg diploma in nursing that is offered by the top college in Chandigarh who provide admission to the top international nursing college. Rather than taking education from the local colleges go for the college having approval from the top international colleges.

    ReplyDelete
  75. This comment has been removed by the author.

    ReplyDelete

  76. You write this post very carefully I think, which is easily understandable to me. Not only this, but another post is also good. As a newbie, this info is really helpful for me. Thanks to you.
    Tally ERP 9 Training
    tally classes
    Tally Training institute in Chennai
    Tally course in Chennai

    ReplyDelete
  77. Pretty article! I found some useful information in your blog, it was awesome to read, software testing course thanks for sharing this great content to my vision, keep sharing.

    ReplyDelete
  78. Uselessly I am not Commenting on to the post But when I Saw your post It was Amazing. It any News you want to know National New Today

    The TrendyFeed
    Latest New Today
    Technology New Today

    Thanks,
    The TrendyFeed

    ReplyDelete
  79. Thank you for sharing valuable information. Thanks for providing a great informatic blog, really nice required information & the things I never imagined. Thanks you once again Boom Beach Apk

    ReplyDelete
  80. Hey Nice Blog Post Please Check Out This Link for purchase
    https://www.urbandezire.com/product/handmade-leather-messenger-bag/ for your loved ones.

    ReplyDelete
  81. Download Latest Android Mod Apk from Modkiller. This is the Best Modded APK site of 2019, We share Modded Games and other android apps for Free.

    vpn 360 mod apk
    Dog vpn mod apk
    piclab mod apk
    avira antivirus security premium mod apk
    x vpn mod apk
    koda cam mod apk

    ReplyDelete
  82. Download Latest Android Mod Apk from Modkiller. This is the Best Modded APK site of 2019, We share Modded Games and other android apps for Free.

    surfeasy vpn mod apk
    vpn by firevpn mod apk
    music speed changer mod apk
    adove acrobat reader pro mod apk
    tunnelbear vpn mod apk
    pub gfx mod apk
    hi vpn pro mod apk

    ReplyDelete
  83. Download Latest Android Mod Apk from Modkiller. This is the Best Modded APK site of 2019, We share Modded Games and other android apps for Free.

    vpn master premium mod apk
    pocket caste mod apk
    hola vpn mod apk
    procam x mod apk
    filmmaker pro mod apk
    azar mod apk
    link vpn mod apk
    imvu mod apk

    ReplyDelete
  84. Download Latest Android Mod Apk from Modkiller. This is the Best Modded APK site of 2019, We share Modded Games and other android apps for Free.

    Mod Killer
    Jntuk Fast Updates
    fast vpn mod apk
    tinder gold mod apk
    unblock website vpn mod apk
    vpn lighter mod apk
    avg cleaner pro mod apk
    videoshop pro mod apk

    ReplyDelete
  85. HI
    Are you Looking For Digital Marketing In Noida. We have Team of expert for Digital marketing internship with 100% placementBest Digital marketing Agnecy In Noida

    ReplyDelete
  86. Join The Top PGDM College in Delhi/NCR for 2 years of blended learning. Global, responsible and inclusive Education. 2 Years Program. 100% Placement Assistance. Experienced Faculty. If you choose the right PGDM college in Delhi such as FOSTIIMA, you get the benefit of latest modified curriculum this in line with what is taught at Harvard and Stanford. What this means that you learn the latest right during college. Others have to upgrade themselves once they pass and they may not be able to tackle job situations competently enough. Private MBA colleges in Delhi with latest curriculum gives you a head-start and, in this respect, they may be better than older, established government institutions. If you are more information visit a website : https://www.fostiima.org/

    top 10 pgdm college in india
    top 10 pgdm colleges in delhi
    top 10 pgdm colleges in india
    best pgdm college
    best pgdm courses in india
    best pgdm institute in delhi
    best pgdm institute in delhi ncr
    best pgdm institute in india
    pgdm
    pgdm college
    pgdm college in delhi
    pgdm college in delhi ncr

    ReplyDelete
  87. 검색 엔진 순위를 높이는 팁

    순위가 높은 웹 사이트와 블로그는 특정 틈새 시장에 많은 트래픽을 발생 시키므로 일부 사람들은 사이트 순위를 매기기 위해 실질적으로 어떤 것도 시도하려고합니다. 사이트에서 SEO를 시도하기 전에 먼저이 기사를 읽고 올바르게 작업하고 있는지 확인하십시오.

    웹 페이지 메타 태그는 페이지의 내용에 대한 설명을 포함합니다. 제목 태그에 포함시킬 단어 몇 개가 아니라 메타 태그에는 잘 구성된 문장이 있습니다. 효과적인 검색 엔진 최적화를 위해 제목 태그에 이미있는 것을 반복하지 마십시오!

    플래시 파일을 사용하는 것은 검색 엔진 최적화에 좋지 않습니다. 로드 속도가 매우 느릴 수 있으므로 플래시 사용에주의하십시오. 사용자는 실망 할 것입니다. 또한 검색 엔진 스파이더는 플래시 파일에있는 키워드를 읽지 않습니다.

    검색 엔진을 최적화하는 가장 좋은 방법은 내부 링크를 사용하는 것입니다. 즉, 자신의 사이트 내 링크에 쉽게 액세스 할 수 있습니다. 이를 통해 시청자 고객이보다 쉽게 ​​데이터베이스를 사용할 수있게되므로 트래픽 양이 증가하게됩니다.

    검색 엔진에 친숙한 페이지를 만드십시오. 검색 엔진 최적화에 대한 조사를 수행하고 더 쉬운 팁과 요령을 사이트에 통합하십시오. 페이지 순위가 높을수록 좋습니다. 게시물과 제목에 키워드를 포함시켜야합니다. 이렇게하면 검색 엔진 크롤러에서 사이트를 더 쉽게 찾을 수 있습니다.

    귀하의 목표는 항상 검색 엔진에서 매우 높은 게재 순위를 달성하는 것이되어야하지만 맹목적으로 날아갈 수 없으며 귀하의 사이트가 어떻게 든 모호해지기를 바랍니다 백링크. 귀하의 사이트가 좋은 위치에 놓 이도록 적절한 공격 계획을 세우려면 이와 같은 훌륭한 조언을 따라야합니다.

    ReplyDelete
  88. 카지노사이트 토토사이트 온라인카지노
    온라인바카라 바카라 블랙잭 실시간카지노
    라이브카지노 바카라사이트 카지노사이트추천
    카지노사이트주소 실시간바카라 바카라사이트추천
    바카라사이트주소 우리카지노 우리계열 바카라게임사이트

    카지노사이트 
    토토사이트 
    온라인카지노 
    온라인바카라 
    바카라 
    블랙잭 
    실시간카지노 
    라이브카지노 
    바카라사이트 
    카지노사이트추천 
    카지노사이트주소 
    실시간바카라 
    바카라사이트추천 
    바카라사이트주소 
    우리카지노 
    우리계열 
    바카라게임사이트

    바카라 블랙잭 에볼루션카지노 우리카지노 우리계열 타이산 먹튀검증 온라인바카라 바카라 블랙잭

    https://ggongsearch.com/

    ReplyDelete
  89. Thank you for sharing valuable information. Thanks for providing a great informatic blog, really nice required information & the things I never imagined 카지노사이트.

    ReplyDelete
  90. Thank you for giving this post. It may be the first time ever when the world is quarantine. It proves that the whole world is at extreme risk. Your report on this issue will help most of the people. Thank you very much.
    CORONA VIRUS EFFECT ON SPORTING EVENTS
    Thanks.

    ReplyDelete
  91. Your Website is very good, Your Website impressed us a lot, We have liked your website very much.
    We have also created a website of Android App that you can see it.
    http://damodapk.com/
    http://seniorjacket.com/

    ReplyDelete
  92. Very nicely done. Your show schedule gave me the info on some shows I was wondering about. I visited your web site today and found it very interesting and well done 메이저사이트

    ReplyDelete
  93. This was really one of my favorite website. Please keep on posting. ExcelR Digital Marketing Classes In Pune

    ReplyDelete
  94. Wow What A Nice And Great Article, Thank You So Much for Giving Us Such a Nice & Helpful Information about Java, keep sending us such informative articles I visit your website on a regular basis.Please refer below if you are looking for best Training Center.
    Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery

    ReplyDelete
  95. Hello Guys,
    If you look like for a brand new and stylish in 2020 Top Handbags for Women, Best Luggage Bags For Travel, Best Bags For Men, School Bags For Kids, Please Check Buy Best Bags

    ReplyDelete
  96. Do you really want to rank your business then why don't you go for the best digital marketing services in chandigarh provided by the reputed digital marketing company in chandigarh - digital expert solution. It has a team of professional having full knowledge about google sandbox in seo which is the necessary part that every website should face before achieving the top position over the google.

    ReplyDelete
  97. You can become a billionaire. With us 먹튀

    ReplyDelete
  98. I thought I was strong with my ideas on this, but with your writing expertise you have managed to convert my beliefs your new ideas. Mallorca is fun
    Best Data Science training in Mumbai

    Data Science training in Mumbai

    ReplyDelete
  99. Wow! This article is jam-packed full of useful information. The points made here are clear, concise, readable and poignant. I honestly like your writing style.
    SAP training in Kolkata
    SAP training Kolkata
    Best SAP training in Kolkata
    SAP course in Kolkata
    SAP training institute Kolkata

    ReplyDelete
  100. thanks for sharing information awesome blog post click here

    ReplyDelete
  101. Attend The Data Analyst Course From ExcelR. Practical Data Analyst Course Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analyst Course.
    Data Analyst Course

    ReplyDelete
  102. Attend The Business Analytics Course From ExcelR. Practical Business Analytics Course Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Course.
    Business Analytics Course

    ReplyDelete
  103. Great writing! You have a flair for informational writing. Your content has impressed me beyond words. I have a lot of admiration for your writing. Thank you for all your valuable input on this topic.
    Data Science training in Mumbai
    Data Science course in Mumbai
    SAP training in Mumbai

    ReplyDelete
  104.  Being a travel blogger and lover, it was appealing and helpful for me. It is a strong article to portray this topic limits the readers to widen their horizon of accepted wisdom and power as they go through the article.
    SAP training in Kolkata
    SAP training Kolkata
    Best SAP training in Kolkata
    SAP course in Kolkata

    ReplyDelete
  105. https://zulqarnainbharwana.com/los-angeles-lakers/

    ReplyDelete

  106. Firstly talking about the Blog it is providing the great information providing by you . Thanks for that .Hope More articles from you . Next i want to share some information about Salesforce training in Banglore .

    ReplyDelete
  107. Superb Information, I really appreciated with it, This is fine to read and valuable pro potential, I really bookmark it, pro broaden read. Appreciation pro sharing. I like it.ExcelR Business Analytics Courses

    ReplyDelete