Web application Performance Optimization Part 2: Optimizing CSS

by Mohsin Naeem

In this part of the series, I’m going to share some of the techniques that I used to optimize SharePoint/ASP.NET applications from CSS perspective. All of the following techniques are common for other technologies too.

Use Shorthand Properties

There are few shorthand properties available in CSS that we can use to set several properties at once. Those properties are: background, border, font, list-style, margin, padding, and outline.

Click here to continue reading.

How to Categorize a Survey in SharePoint 2010

by Burhan Ramay

A few days back I got a requirement from a client asking me to show highlighted headings and sub-headings of groups of questions in a SharePoint survey. There is no out of box solution available to achieve this functionality. Thus I did a little trick by using JavaScript to achieve the required survey user interface.

 

Requirement

You’ll need SharePoint 2010 Survey having the interface as showing in below image:

Solution

  1. Follow the below steps to accomplish this task.
  2. Go to All Site Content, click on link Create
  3. Select Survey from List category from left side menu, enter Name of survey and click button Create
  4. Add questions in survey and add Single line of text fields for headings and sub-headings e.g. if heading name is Initiation then enter Initiation under Question and select type Single line of text. Do the same for sub-heading
  5. Open SharePoint Designer and Open Site where survey was created in Step 3 above
  6. In SharePoint Designer select List and Libraries from left menu
  7. On right side click on survey name created in Step 3 under Lists column

8. In SharePoint Designer, click NewForm.aspx from under Forms

9. Select Split mode and click inside div underneath Ok, Cancel buttons as showing in below image

10. Type the below JavaScript in code pane above inside div.

<script type=”text/javascript”>

_spBodyOnLoadFunctionNames.push(“hideFieldsOnStart”);

function hideFieldsOnStart() {

//hide the control at start

var control = getTagFromIdentifierAndTitle(“input”,”TextField”,” Initiation “);

control.parentNode.parentNode.parentNode.style.display=”none”;

control = getTagFromIdentifierAndTitle(“input”,”TextField”,”Decision Making”);

control.parentNode.parentNode.parentNode.style.display=”none”;

changeBackGroundColor(control, “Initiation”, true);

changeBackGroundColor(control, “Decision Making”, false);

}

function changeBackGroundColor(control, labelText, isMainHeading)

{

var rows = control.parentNode.parentNode.parentNode.parentNode.getElementsByTagName(“tr”);

for (i = 0; i < rows.length; i++)

{

if(trim(rows[i].cells[0].innerText) == labelText)

{

if(isMainHeading)

{

rows[i].style.backgroundColor= ‘yellow’;

}

else

{

rows[i].style.backgroundColor=’lightblue’;

}

}

}

}

//this gets the field based on title identifier and tagname

function getTagFromIdentifierAndTitle(tagName, identifier, title) {

var len = identifier.length;

var tags = document.getElementsByTagName(tagName);

for (var i=0; i < tags.length; i++) {

var tempString = tags[i].id;

if (tags[i].title == title && (identifier == “” || tempString.indexOf(identifier) == tempString.length – len)) {

return tags[i];

}

}

return null;

}

function trim(stringToTrim) {

return stringToTrim.replace(/^\s+|\s+$/g,”");

}

</script>

11. In the above code, ChangeBackGroundColor() function with false parameter is used for sub-heading and
true for heading

In this code, questions are used as headings and passing as parameters to functions getTagFromIdentifierAndTitle, changeBackGroundColor. Thses headings should be defined as Questions during Survey definition.

Important factor to share this post is to confirm my approach and will be more than happy to know if some other solution is available.

Adjust the column width of a Project Tasks View of a Project Site in SharePoint 2010

Problem

There is no way to fix a Project Tasks View column width permanently. A column width can be changed from heading by using the Configure Columns option but after navigation to other site/library width goes back to its default value. For example if someone wants to show the Resource Name column width 200 pixels instead of default 100 pixels,  then he will need to change column width again and again from the column configuration. Changed width configuration doesn’t persist forever.

Solution

The above mentioned problem can be solved by using JavaScript. Below are steps needed to add script on a page that will adjust required column(s) width.

  1. Open browser and go to Project Site with Project Tasks view
  2. From Site Actions click Edit Page
  3. On page click Add a Web Part

4. Under Categories, select Media and Content;under Web Parts select Content Editor and click the Add button

5. Select newly added web part and click Edit HTML Source under HTML from top menu

6. In the HTML Source editor,add following code and click OK button

<script type=”text/javascript”>

ExecuteOrDelayUntilScriptLoaded(function(){

var oldGanttControl = SP.GanttControl;

SP.GanttControl = function() {

  • oldGanttControl.call(this);

var oldInit = this.Init;

this.Init = function(jsGridControl, jsRawGridData, params){

  • oldInit.call(this, jsGridControl, jsRawGridData, params);

DoCustomizations(jsGridControl); }; };},”SPGantt.js”);

function DoCustomizations(grid)

{

grid.SetSplitterPosition(650);

grid.SetGanttZoomLevel(grid.GetGanttZoomLevel()-1);

var tabl = document.getElementById(‘ctl00_m_g_98b1d4ed_6602_42da_b393_b4e2781c58cd_ListViewWebPartJSGrid_leftpane_mainTable’);

var row = tabl.rows(0);

AdjustWidth(row, 1, “150px”, “149px”, “140px”);

}

function AdjustWidth(row, cellNumber, cellWidth, divWidth, innerDivWidth)

{

row.cells(cellNumber).style.width=cellWidth;

var divs = row.cells(cellNumber).getElementsByTagName(‘div’);

divs(0).style.width=divWidth;

divs(1).style.width=divWidth;

var innerDivs = divs(1).getElementsByTagName(‘div’);

innerDivs(1).style.width=innerDivWidth;

}

</script>

7. In above code function  AdjustWidth(ROW, COLUMN_NUMBER, NEW_COLUMN_WIDTH, NEW_CELL_WIDTH, NEW_DIV_WIDTH);  is calling other function to adjust width of column according to the passing column number as parameter. Other parameters are adjusting cell width and div width contains this cell

Hope this post will give you an idea on how we can hook up the Gantt Control in startup and adjust the column width.

SharePoint Performance Optimization Best Practices

by Mohsin Naeem

SharePoint uses page ghosting technique to allow a server farm to scale out to tens of thousands of pages across all the sites within a farm. Page ghosting is valuable because it eliminates the need to transfer the contents of a page definition file from the SQL Server content database to the front-end web server. Page ghosting also makes it possible to process the default page instance for thousands of different sites by using a single page template that is compiled into an assembly DLL and loaded into memory in the IIS worker process just once per web application. This optimization technique is a key factor in the scalability of SharePoint in high-traffic environments running thousands or tens of thousands of sites.

Click here to continue reading

How to Backup to the Cloud

by Ali Zaman

Do you have any important files that you want to back up to an offsite locations and have access to them from anywhere, anytime? Well, you can do that for free by using a variety of free cloud based storage solutions.

Among other vendors, Microsoft offers SkyDrive with 7GB of free space but you need to have a Microsoft Live account to use it (Hotmail etc.)

To use SkyDrive, visit https://skydrive.live.com/ and login using your credentials

Click here to continue

Defect Priority vs. Severity

by Rashi Arora

Software testing methodologies and defect management techniques have taken an immense leap in the last couple of years and continue to do so by adding new perspectives to successful software development.  Despite this, there always seems to be a lingering ambiguity about certain parameters of defect tracking.  Defect Priority and Defect Severity are two of these.

Defect Priority and Defect Severity are two entirely distinct ways of categorizing software defects which influence the order in which the defects should be fixed.  Many times the defects are categorized by using only one of these. It’s not a very common practice to use both of these terminologies and not everyone does so.  This is essentially due to the confusion in understanding the meaning and significance of each of these.   But there is a significant difference, and both the terminologies if used, give precise information to defect definition.

Let’s learn more about these differences here!

  • Defect Severity primarily refers to the impact a defect creates in hindering the intended functionalities of the software. This also includes the probability of its occurrence. Both impact and probability compositely decide a defect’s severity.
  • Defect Priority refers to the urgency required in fixing/addressing the defect. Priorities for fixing defects keep changing based on project’s stages/phases.  Testing priorities take precedence during early stages followed by the priorities of the client when the project is nearing its completion

Defect Severity can be categorized as

a)      Critical /Showstopper/S1: These include the catastrophic bugs that could potential crash the system and there is no workaround for them. All testing efforts are completely suspended until these are fixed. For e.g. – memory leaks , data loss , security issues

b)      Major/S2: These bugs affect the major functionalities of the system affecting major modules. There can be workarounds available in this case and testing efforts are suspended for only the affected modules once such defects are encountered

c)       Minor/S3: These defects affect small individual functionalities of the system that have a workaround. Testing is not significantly impacted here.

d)      Trivial/S4: These are essential cosmetic defects that do not impact any functionality and do not require a workaround. Testing is not impacted in such cases.

Defect Priority on the other hand is categorized as

a)      High: High Priority bugs require immediate fixing as these may impact test execution or critical functionalities considerably

b)      Medium: Medium priority refers to the bugs that need fixing soon. These impact important functionalities but test execution is not impacted and there can be a workaround to carry that further.

c)       Low: These defects are the ones that do require fixing but not before high and medium ones are fixed. 

Confusion in understanding the above terminologies leads to conflicts between the testing and the development teams due to incorrect categorization and acceptance.  But using the above information as guide can assist both the teams in interpreting the defect details correctly and thereby making appropriate on-time efforts to deliver a product of high quality.

How to use your QA Skills in a Scrum-Based Project Part III

by Muhammad Ramzan

Read Part I and Part II here

Test Strategy for Scrum

In this section you will learn how to prepare a test strategy or perform testing in Scrum environment. The following are a few assumptions:

  • Development Scrum consists of many sprints of 2 weeks each
  • The software is a web-based with certain data in the database. The role of tester will include testing software in a “QA environment”, while developers are still doing unit tests in their environment.
  • The QA Environment is closed to client staging environment. In some cases testing can be performed in Dev. environment as well.
  • The build and deployment process may take up to 30-60 minutes.
  • Build responsibility is of Dev. side but QA can also build the release in case if resources are not available.
  • There two build process
    • Manual Build
    • Auto build, once per night (nightly build)

Using the assumptions above, I have divided a sprint into following segments from a QA perspective:

Day 1: Sprint Planning Day

On first day of a sprint, QA will be involved in the sprint planning meeting. Get knowledge of all user stories which are part of sprint. Ask questions if requirements are not clear.  The following are main points which QA should focus on during the first day of a sprint.

  • Participate in the planning meeting.
  • Analyze and clarify the requirements which are mentioned in user stories selected for the current sprint.
  • Divide the tasks for each user story.  For example:
    • Test Case Preparation
    • Test Case Execution
    • Regression
  • Add estimates for each divided tasks. Then add it to the final estimation of a user story.
  • Prepare the test environment (this should also be added as a task in backlog as well).
  • There may be some user stories which need more testing efforts and a few may have no detailed testing required. So estimate the tasks accordingly.

Day 2: Test Cases Development

The second day of a sprint should be spent developing test cases for all the selected user stories. Try to cover all user stories which are in scope of the current sprint.  If all user stories coverage is not possible, then prioritize the user stories by discussing it with the development team. For example there are 15 user stories in the current sprint. Discuss with developers which user stories will be developed first. Try to cover the test cases for those user stories for which you will receive the first build. Since we are using the Exploratory Testing technique, during the whole sprint the test development and testing cycle will be executed. Try to peer review your test cases with Scrum Master or Product Owner.

Day 3 – 8: Development & Testing

Since development is started from Day1, there might be chances that on day 3 QA receives a release with developed user stories. Coordinate with the development team, and if they have developed a few user stories, ask them to provide you the release or simply build the release and install it on the QA environment. 

The following should be the daily activities of QA during this period:

  • Coordinate with the development team and decide the release pattern. Daily release or when a few user stories are developed.
  • If you have not received a release , complete the test cases which were not completed in Day2
  • If any user story is updated, update your test cases accordingly
  • If the release process is automated every night, then every day QA will pick the release, deploy the release and then start testing
  • If the release process is manual there may be three cases:
  • If some team member completed user stories he/she will provide the build to QA. QA deploys the release and starts testing.
  • If a single release which includes user stories is developed by development team, QA deploys the release and start testing.
  • If the development team members are busy in development, QA coordinates with development team members if there are some newly developed or updated user stories Then they build the release on QA environment and start testing.
    • When you start testing, first perform sanity test if the release is stable. If critical issues are found, coordinate with the development team to get fixes and perform testing.
    • Try to complete the testing tasks as much as you can because on the last days of a sprint, there may be pressure on QA, (as many development team members will be developing user stories) and QA will receive many builds or a single build having vast implemented functionality.
    • Report all bugs/defects which you found during development on time so that they can be fixed on time.
    • During functional testing, also focus on bugs fixes. Follow-up the reported bugs and verify the bugs that are fixed.
    • Participate in daily Scrum meetings.

Day 9: QA Day

The ideal scenario is that on Day9, no new development should be accomplished. Focus should be to close all issues and re-test bugs. QA should try to close all reported issues on this day.

  • Try to close all open bugs.
  • Perform regression testing.
  • Go through the sprint backlog and note down the missed user stories for the retrospective meeting day.
  • Discuss with development teams if bugs are still open.

Day 10: Retrospective Meeting

In order to demonstrate a feature in the retrospective meeting, it should be implemented, tested and all the bugs should either be fixed or assigned to the Product Owner for clarification (otherwise feature is postponed to next sprint). The tester should demonstrate that features meet acceptance criteria and demonstrate the issues assigned to the product owner (if any)

  • Participate in retrospective meeting
  • Discuss what is tested and what is not tested
  • Explain the reason why few features are not tested
  • Explain why all bugs are not closed
  • Close all bugs or assign to Product Owner for next approval
  • Discuss the next plan in meeting

In an ideal environment on retrospective meeting day, development and testing should be closed. However in some scenarios on the retrospective meeting day we closed many items. So be prepared for such scenarios. In this case, before of the end of the business day of the retrospective meeting, you should close all items and a deliverable package should be available that can be pushed to client environment for UAT.

What Must You Learn During the First Four Years in the SQA Profession?

by Hassan Raza

Most of you, who belong to the Software Quality Assurance (SQA) profession, would also have some knowledge about the skills required for a SQA Engineer and there might be some other people reading this article belong to different professions. Today I will explain the skills required for an experienced SQA Engineer during his first four years of SQA profession. This article includes basic introduction and importance of the SQA profession and entering in SQA profession. Then I will explain that what is must to learn for a SQA Engineer during his first four years of SQA profession.

What is Software Quality Assurance?
Software Quality Assurance (SQA) is one of the most important fields in the Software Engineering domain of IT industry. SQA itself a vast field to study and explore. SQA incorporates the entire software development process, which includes processes such as software design, coding, source code control, code reviews, change management, configuration management, and release management. SQA includes the process of assuring that standards and procedures are established and are followed throughout the software acquisition life cycle.

Importance of Software Quality Assurance:
Without SQA department, a software company can earn a business for a short time but not for a long time. So now a days organizations are focusing more on Software Quality Assurance to deliver High Quality products and services to the customers. Software quality assurance engineers measure, test and improve the software development process. They work closely with developers to design and implement all aspects of software testing, including features, functionalities, usability and the prevention of defects and bugs.

Entering in SQA profession:
A bachelor degree in IT or Computer Science is minimum requirement for an individual to enter in SQA profession. Software QA Engineer may start out as Software Engineer or as Testing Engineer. SQA Engineer must be familiar with the entire SDLC and STLC in order to be effective. An experienced SQA Engineer should have strong communication skills, leadership skills, be good at documenting his work, and must be able to work well with different groups. He often becomes the middle person between the developers and the customers, so he needs to be able to understand, and convey, both viewpoints.

What should an experienced SQA Engineer learn during first four years of SQA profession?
SQA Engineer having four year experience should be able to read, understand and correctly interpret business and technical requirements, analyze those requirements and suggest changes to ensure accuracy of documented requirements, participate in reviews of technical documentation and suggest improvements. He should be able to prepare a test plan and responsible for design and execution of test cases and bug logging.

An experienced SQA Engineer should understand relational database schemas and be able to write SQL queries for data validation. He should also have a working knowledge of software development models and standard QA methodologies related to software development and verification. SQA resource should have knowledge about the tools used for test case designing and bug logging and also basic knowledge about the automation testing tools and performance testing tools.

It is very necessary for a SQA Engineer to work closely, collaboratively and communicate effectively with project stakeholders, engineers, and managers. He should be a team player, take initiative and ownership, perform as a mentor and also have basic management skills to lead and help build a positive, productive work team.

At the end I would like to conclude this topic by sharing the skills (tools and techniques) and their expertise levels required during first four years of SQA profession:

Skill (tool & technique)

Description

Expertise Level

Software Development Life Cycle (SDLC) It is a framework that describes the activities performed at each stage of a software development process.Requirement Gathering & Analysisà DesignàImplementationàTestingàDeploymentà Maintenance Advanced
Software Testing Life Cycle (STLC) STLC specifies the different stages of testing process.Requirements StageàTest PlanàTest DesignàTest ExecutionàBug TrackingàBug Reporting Advanced
Software Testing Types SQA Engineer should have detailed knowledge about the software testing types and methodologies used for the testing of software applications. Advanced
Software Development Process Models There are various software development approaches defined and designed which are used during development process of software, these approaches are referred as “Software Development Process Models”.e.g; Waterfall, Iterative, XP, RAD, Spiral, Agile, Scrum. Intermediate
Requirements Review SQA resource reviews the user requirements and performs formal review of the following requirement documents: Requirement Specification document, Functional Specification document, Design Specification document, Use case document etc. Advanced
Requirement Analysis SQA resource is required in requirement analysis stage as well because he can think from the user’s point of view. He analyze the requirement document and finds out that if the requirements mentioned in the documentation are correct, valid and understandable and identify the test requirements (what can be tested). Advanced
Test Planning Test Planning means to predetermine a plan well in advance to reduce further risks. A well designed test plan document plays an important role in achieving process oriented approach. It is the process to plan that how the testing process should flow.It includes:

  • Purpose/Objective
  • Testing Scope
  • Test Strategy (Testing Types, Testing Flow, Testing Cycle)
  • Environment requirements
  • Testing Tools (if required)
  • Training (if required)
  • Team Structure & Role and Responsibilities
  • Reference Documents
  • Exit Criteria
  • Defect Management
  • Dependencies
  • Assumptions
  • Risks
Advanced
Identify Test Scenarios SQA resource identifies and list down the test scenarios according to the user requirements considering the relevant requirement documents. Advanced
Design and Execute Test Cases On the basis of requirements and identified test scenarios, SQA resource designs detailed Test cases and the steps to execute those test cases and then also execute them one by one. Advanced
Bug Reporting and Bug Tracking While executing the test cases if SQA resource finds out any defect then he should log the bugs. He should have detailed knowledge about how to find out the bug, nature of bug, severity, priority and steps to reproduce that bug etc. He can also use bug reporting tools for bug reporting and bug tracking. Advanced
SQL queries for data validation SQA Engineer should have the knowledge of SQL queries for the data validation to retrieve, insert, update and delete record from DB. Intermediate
Tools for Test Case designing SQA Engineer should have knowledge of tools for test case designing. There are multiple tools available.e.g; Test Director, Microsoft Test Manager, Bugzilla Testopia, Mantis. Advanced
Bug Logging and Bug Tracking Tools There are multiple tools available to log and track the bugs. SQA Engineer can use bug tracking system to log the bugs details and track the bugs easily.e.g; Bugzilla, Microsoft Test Manager, Trac, Mantis. Advanced
Performance Testing Tools There are multiple tools available to measure the performance of the software application. SQA Engineer can execute Performance, Load and Stress testing by using these tools.e.g; Selenium, Apache JMeter, Visual Studio 2010, WebInject, Load Runner. Intermediate
Automation Testing Tools There are multiple tools available to automate the testing process. These are mostly used for regression testing or for repetitive tasks/flows. SQA Engineer can automate his testing activities using the automation testing tools.e.g; QTP, Selenium, Visual Studio 2010 Coded UI, TestComplete. Intermediate
Communication skills Communication is also very important skill for SQA Engineer. SQA resource should be capable to communicate with technical or non-technical people. Meetings with development team and status reports are also part of communication. Intermediate
Leadership skills A good experienced QA resource should also have leadership skills. He should have the skills that how to deal with junior team members and how to grab them. He should be capable of handling critical situations as well as his junior resources. Intermediate
Positive attitude An experienced SQA Engineer should show the positive attitude towards his work and he should perform his tasks with full concentration and accept the assignments willingly. Advanced
Team player Experienced SQA Engineer should be a good team player, give respect to others. He should be helping and supportive whenever any other member requires his help. He should accomplish his tasks with dedication and also take the responsibility to groom others as well because the success is always in team effort. Advanced

Ready for .NET Code Camp in South Florida?

Here we go again! South Florida Code Camp is about to start tomorrow, Saturday Feb 9 2013, at NOVA University in Fort Lauderdale. I have seen this event grow every year; over 900 people were registered last year. It’s a HUGE event for the Microsoft developer community in South Florida. You can still register here: http://www.fladotnet.com/codecamp/

If you look at the Agenda you will see some really interesting speakers and topics. I would like to specially give a shout-out at some of the new speakers this year and a few other speakers/topics you might want to attend. First, the new speakers:

  • Mir Majeed – Mir works at AAJ Technologies and will speak about Windows Phone 8 Development at 4PM. Outstanding topic!!!
  • Syed Ali – Syed works at AAJ Technologies as well and will talk about TFS and Scrum methodology at 4PM; if you work in Scrum projects with TFS, or are considering to do so, listen in!
  • Qasim Mehmood – Also from AAJ Qasim will speak about SharePoint 2013 features at 2:40PM; don’t miss this one if you are working on SharePoint.

You also have some really cool topics/speakers, including:

  • Jeff Barnes – Working for Microsoft, Jeff will speak about Mobile application development at 2:40PM. Cool presenter; cool topic. Smile
  • Jason Milgram (MVP) – Jason, from Linxter, will speak about Windows Azure media services at 1:20PM. Interesting topic for sure…
  • Herve Roggero (MVP) – Yes… it’s me! Smile I now work for AAJ Technologies. Come join me at 11:10am to discuss Windows Azure scalability in detail.
  • Jonas Stawski (MVP) – At 9:50, an interesting talk about Jonas on Building cross-platform mobile applications.

Here we go!!! Here are some of my recommendations. You also have some notable speakers including John Papa, Scott Klein and many others.

About Herve Roggero

Herve Roggero, Windows Azure MVP in South Florida, works for AAJ Technologies (http://www.aajtech.com) and is the founder of Blue Syntax Consulting (http://www.bluesyntax.net). Herve’s experience includes software development, architecture, database administration and senior management with both global corporations and startup companies. Herve holds multiple certifications, including an MCDBA, MCSE, MCSD. He also holds a Master’s degree in Business Administration from Indiana University. Herve is the co-author of “PRO SQL Azure” and “PRO SQL Server 2012 Practices” from Apress and runs the Azure Florida Association (on LinkedIn: http://www.linkedin.com/groups?gid=4177626).

REBLOGGED FROM http://geekswithblogs.net/hroggero/archive/2013/02/08/ready-for-.net-code-camp-in-south-florida.aspx

 

 

Creating an Azure cross-premises virtual network with a Juniper SSG 20 firewall

Recently I had a lot of fun trying to create a cross-premises virtual network between Microsoft Azure and a Juniper SSG20.

Although the process is quite simple and straight forward, there are a couple of gotchas along the way that can make the process time consuming.

I will not get into the Azure side of things as http://www.windowsazure.com/en-us/manage/services/networking/cross-premises-connectivity/ does a great job of walking one through the virtual network creation process in Azure. However the fun begins after step 7 in the “Start the Gateway” section.

For the most part the “VPN Device Config Script” is okay but it misses out on one important command regarding nat traversal for the Juniper …

set ike gateway “Azure Gateway” nat-traversal keepalive-frequency 0

Here is the configuration that worked for me, I hope it helps you save some troubleshooting time.

_____________________________________________________________

set interface tunnel.4 zone untrust

set interface tunnel.4 ip unnumbered interface ethernet0/0

set route <AZURE ADDRESS SPACE>/<CIDR> interface tunnel.4

set ike gateway “Azure Gateway” address <GATEWAY> Main outgoing-interface ethernet0/0 preshare ABCDEFGHIJKLMNOPQRSTUVWZYX123456  proposal “pre-g2-aes128-sha”

set ike gateway “Azure Gateway” dpd-liveness interval 10

set ike gateway “Azure Gateway” nat-traversal

unset ike gateway “Azure Gateway” nat-traversal udp-checksum

set ike gateway “Azure Gateway” nat-traversal keepalive-frequency 0

set vpn “P2″ gateway “Azure Gateway” no-replay tunnel idletime 0 proposal “nopfs-esp-aes128-sha”

set vpn “P2″ monitor optimized rekey

set vpn “P2″ bind interface tunnel.4

set vpn “P2″ proxy-id check

set vpn “P2″ proxy-id local-ip <LOCAL NETWORK>/<CIDR> remote-ip <AZURE ADDRESS SPACE>/<CIDR> “ANY”

set address “Untrust” “<AZURE ADDRESS SPACE>/<CIDR><AZURE ADDRESS SPACE> <SUBNETMASK>

set policy id 39 from “Trust” to “Untrust” “<LOCAL NETWORK>/<CIDR>” “<AZURE ADDRESS SPACE>/<CIDR>” “ANY” permit log

set policy id 39

exit

set policy id 38 from “Untrust” to “Trust” “<AZURE ADDRESS SPACE>/<CIDR>” “<LOCAL NETWORK>/<CIDR>” “ANY” permit set policy id 38

exit

Re-blogged from:  http://alinzaman.wordpress.com/overview/

How to use your QA Skills in a Scrum-Based Project Part II

by Muhammad Ramzan

In part one of this blog, I went over a high-level overview of using QA skills in a Scrum-based project. In this post, I’ll be going into more detail on the various testing approaches you can use in those projects.

Testing Approaches/Types used in Scrum

The following are popular testing approaches/types in Scrum:

  • Exploratory testing
  • Regression testing/ Integration testing
  • NFT (non-functional testing)
  • Automated testing

Exploratory Testing

  • Learning, test design and test execution at the same time
  • Analytical approach while executing tests
  • What is the best test to be executed now?
  • Aim is to maximum use of skills
  • It is not important to describe everything in documents

SCRUM Blog 1

 

 When to perform Exploratory Testing:

  • Testing team does not know much about the product
  • There is not much time or resources available to complete testing otherwise
  • Great way to learn and familiarize your team with the new product quickly
  • Feedback on the product / feature is required quickly
  • Diversity of testing is needed
  • Most important errors need to be found in shortest time
  • Continuous feedback received from client on user stories and on developed sprint even when a sprint is not yet pushed to the client environment.
  • Some very specific issue needs to be verified/investigated

Regression Testing/ Integration Testing

  • In Scrum, there is not enough time to perform separate integration testing and regression testing.
  • In my personal experience, I used the Regression Testing technique and performed tests so that regression and integration scenarios both are covered in a short time.
  • Perform Regression Testing:
    • When different User Stories are merged
    • When different sprints are merged
    • When bugs are fixed
    • On QA Day / Retrospective meeting day (if needed)
  • The purpose is to ensure that existing functionality is not broken with new implementation or if new functionality is integrated with existing functionality.
  • New features should be integrated to its final branch before regression testing is done
  • Test automation preferred if possible.

NFT (non-functional testing)

In non-functional testing, the focus is mostly on testing the performance.  If performance testing is part of your project, the best way to achieve this testing is when planning the sprints.   Add a new user story like “As a user, I need to do performance testing so that my application gets successful response from all the users”. Add tasks for this user story and then work on it accordingly.

In my next blog, I will explore the actual test strategies for Scrum-based projects.

How to use your QA Skills in a Scrum-Based Project Part 1

by Muhammad Ramzan

How to use QA skills in Scrum

The concept of multitasking and teamwork is very strong in Scrum, but there is not such a thing as ‘specialist in everything’ as people are always better in one area. Even if they know many other areas, they will never have time to do everything. Therefore, there are Developers and there are Testers.

In Scrum there is no separate phase of testing. Rather it is continuous development and testing. In Scrum, nobody is allowed to sit and wait for a delivery. Testers need to be an active member from the sprint’s start and everyone is expected to contribute.

The following are a few suggestions to a be good, proactive tester:

  • Find what requirements mean and discuss the understanding with the development team
  • Start to collect all information and learn. Capture the domain and analyze all the user stories
  • Conduct sessions when you feel there isany confusion. You should have clarity of the business and all user stories
  • Think like a QA, but behave and work like a Scrum Team member. Your  focus should always be on the quality of the product.
  • You should have the skills to know how to build a release and how to deploy the release.
  • Don’t consume much time on formal documentation like a Formal Test Plan or QA Plan.
  • Just prepare a simple Test Plan if all activities are planned in your project.
  • While developing test cases, always focus on business processes. Your test case must cover “Acceptance Criteria” of every user story.
  • Write Test Cases as fast you can, do not waste time on long elaborations / clarifications.
  • Reuse old Test Cases if possible, this can be part of a regression test
  • If daily (or personal) build is possible, start testing and probe the developed functions. If Dev. resource is not available to provide you build/release, do not wait. Build the release and start testing.
  • Make sure that for every task to be executed there is also Test Case to be written and executed.
  • Test coverage is important, so create a model
  • Remember that the sprint has an end time, so make all efforts to fulfill the time line.

Be sure to join us next time when we discuss the testing approaches that can be used in Scrum!

Backup SQL Database Federation

by Herve Roggero

One of the amazing features of Windows Azure SQL Database is the ability to create federations in order to scale your cloud databases. However until now, there were very few options available to backup federated databases. In this post I will show you how Enzo Cloud Backup can help you backup, and restore your federated database easily. You can restore federated databases in SQL Database, or even on SQL Server (as regular databases).

Generally speaking, you will need to perform the following steps to backup and restore the federations of a SQL Database:

Backup the federation root
Backup the federation members
Restore the federation root
Restore the federation members

These actions can be automated using: the built-in scheduler of Enzo Cloud Backup, the command-line utilities, or the .NET Cloud Backup API provided, giving you complete control on how you want to perform your backup and restore operations.

Read the rest of this post here.

SQL Query Optimization and Execution Understanding

by Imranshakeel Khan

Recently, I was reviewing an education based application which I’d developed. When I clicked to the open course detail screen, it took almost 25 seconds to open, which was really too much time. At first glance, I thought that my machine might be slow.

I restarted my machine but the problem was still there! This could be bad, I thought, and impact me negatively when my client decides to  use this application. I investigated and found that my stored procedure was the culprit, taking too much time.

I checked the defects in the query, and after correcting the execution time of my stored procedures, I reduced the lag from 25 sec. to just 12 seconds! Through this process, I figure out that most of programmers don’t care about some minor (but very important) points, such as this one, and don’t even know that how queries execute the server! With that in mind, I think this blog is going to be very helpful for programmers.

Click here to read the original post!

Follow

Get every new post delivered to your Inbox.

Join 217 other followers

%d bloggers like this: